class Local(TextObject): def __init__(self, title, description): TextObject.__init__(self, title, description) self._locals = dict() self.commandmanager = CommandManager() @property def title(self): return self.name @title.setter def title(self, value): self.name = value def __eq__(self, other): return self.title == other.title def __ne__(self, other): return self.title != other.title def addLocal(self, direction, local): if direction.lower() not in DIRECTIONS: raise DirectionNotFoundException() if direction.lower() in self._locals: raise LocalAlreadyImplementException() self._locals[direction.lower()] = local if direction not in self._locals: local.addLocal(oppositedirection(direction), self) def getlocal(self, direction): if direction.lower() not in DIRECTIONS: return DIRECTION_NOT_VALID if direction.lower() not in self._locals: return DIRECTION_NOT_PERMITED return self._locals[direction.lower()] def addcommand(self, idcommand, command): self.commandmanager.addcommand(idcommand, command) def execute(self, command, arg): return self.commandmanager.execute(command, arg)
def __init__(self, game, world, player, factory): self.player = player self.playerinventory = Inventory() self.playercommandmanager = CommandManager() self.world = world self.factory = factory self.framework = None self.playercommandmanager.addcommand(CommandConst.INV, Inv(None, self, self.framework)) self._game = game self._currentLocal = None self._endingLocals = list()
def __init__(self, title, description): TextObject.__init__(self, title, description) self._locals = dict() self.commandmanager = CommandManager()
class Controller: """Control the interation between the game and the rest of the framework""" def __init__(self, game, world, player, factory): self.player = player self.playerinventory = Inventory() self.playercommandmanager = CommandManager() self.world = world self.factory = factory self.framework = None self.playercommandmanager.addcommand(CommandConst.INV, Inv(None, self, self.framework)) self._game = game self._currentLocal = None self._endingLocals = list() @property def currentlocal(self): """Define the local where the player is""" return self._currentLocal @currentlocal.setter def currentlocal(self, value): if isinstance(value, Local): self._currentLocal = value else: raise IncorrectTypeException('Local') def addendinglocal(self, local): """Add the places where the game end""" self._endingLocals.append(local) def isendinglocal(self, local): """Check if a local is a ending place if is the game should stop""" return local in self._endingLocals def getlocal(self, title): """Return the local based in the title""" return self.world.getlocal(title) def additem(self, item): self.playerinventory.add(item) def hasitem(self, item): return item in self.playerinventory def removeitem(self, item): self.playerinventory.remove(item) def takeitem(self,item): return self.player.takeitem(item) def quantitem(self): return len(self.playerinventory) def inventory(self): return str(self.playerinventory) def getlocal(self,name): return self.world.getlocal(name) def endgame(self, message=None): self._game.endgame(message) def addcommand(self, local, idcommand, command): """Add a command in a local""" mylocal = self.world.getlocal(local) if isinstance(local, str) else local mycommand = command(mylocal, self,self.framework) mylocal.addcommand(idcommand, mycommand) def execute(self, command, args): """Execute the command""" return self.playercommandmanager.execute(command, args) if self.playercommandmanager.hascommand( command) else self.currentlocal.execute(command, args)