Aggregates and services are another story

(Stolen from Domain Driven Design)


data = {"cancel": False, "someGameData": "stuff", etc}
proc.trigger(self, user, gameMap, data)
def trigger(self, sender, user, gameMap, data, *args, **kwargs):
pass
def invokeProcs(procs, *args):
for proc in sorted(procs, key = lambda p: p.tier):
proc.shouldCancel = False
proc.trigger(*args)
if proc.shouldCancel:
break
## Respond to the item being picked up.
def onPickup(self, user, gameMap):
self.triggerProcs(user, gameMap, 'onPickup')
## Respond to the item being picked up.
def onPickup(self, user, gameMap):
cancelArgs = cancelEventArgs()
self.triggerProcs(user, gameMap, 'prepareToPickup', cancelArgs)
if cancelArgs.cancel:
return
self.triggerProcs(user, gameMap, 'onPickup')
# Create a class for this since it's going
# to be pretty commonly used
class cancelEventArgs():
__init__():
self.cancel = False
class cancelEventArgs():
__init__():
self.cancel = False
self.message = []
class someHeavyItemProc():
def prepareToPickup(self, item, user, gameMap, cancel, *args, **kwargs):
if user.Strength < 18:
cancel.cancel = True
cancel.message.append("%s is too heavy for you to lift!" % self.name)
class item():
def onPickup(self, user, gameMap):
cancelArgs = cancelEventArgs()
self.triggerProcs(user, gameMap, 'prepareToPickup', cancelArgs)
if cancelArgs.cancel:
if cancelArgs.message:
gui.message(cancel.message)
return
self.triggerProcs(user, gameMap, 'onPickup')
Leave a comment: