Ejemplo n.º 1
0
    def __init__(self, controller, settings):
        super(Game, self).__init__()

        # check to make sure that the controller
        # can handle all of the registered spells
        # so it does not pop randomly in the middle
        # of game ;)
        for spell in AttrReader.items_from_klass(Spell):
            controller.get_spell_handler(spell)

        controller.set_game(self)
        self.controller = controller
        self.settings = settings
        self.ai = AI(self.controller._send_msg)
        self.levels = None
        self.player = None

        for event in self.controller.events.values():
            self.events[event.name] = event

        self._turn_num = None
        self._level_count = None
        self._current_level = None

        self._level_generator = LevelGenerator()
        self._object_generator = ObjectGenerator()
        self._species_generator = SpeciesGenerator()
Ejemplo n.º 2
0
    def __init__(self):
        
        # distribution of different equipment classes
        self.klass_weights = self.weighted_dist([(i, i.value) for i in equipment_classes])
        # distribution of items within an equipment class

        self.object_weights = {}
        for klass in self.klass_weights:
            items = AttrReader.items_from_klass(klass)
            self.object_weights[klass] = self.weighted_dist([(i, i.value) for i in items])
Ejemplo n.º 3
0
    def get_door_type(cls, direction, is_broken, is_open, is_locked):

        kind = TileTypeCategory.get_door_type(is_broken, is_open, is_locked)
        types = [
            d for d in AttrReader.items_from_klass(cls) 
            if d.category == kind.name
            and d.direction == direction
        ]
        if len(types) != 1:
            raise ValueError(types)
        return types[0]
Ejemplo n.º 4
0
 def get_door_type(cls, is_broken, is_open, is_locked):
     kinds = [
         d for d in AttrReader.items_from_klass(cls) 
         if d.is_door
         and bool(d.is_broken) == is_broken
         and bool(d.is_open) == is_open
         and bool(d.is_locked) == is_locked
     ]
     if len(kinds) != 1:
         raise ValueError(kinds)
     return kinds[0]
Ejemplo n.º 5
0
    def _create_player(self):
        player = Being(self.controller, Species("player"), is_player=True)

        # get everything!
        for klass in equipment_classes:
            for item in AttrReader.items_from_klass(klass):
                item = EquipmentStack.from_cls(klass, item.name)
                player.inventory.append(item)

        player.wizard = self.settings["model", "wizard"]

        return player
Ejemplo n.º 6
0
    def __init__(self):

        items = [i for i in AttrReader.items_from_klass(Species) if not i.nogenerate]
        self.weights = self.weighted_dist([(i, i.value) for i in items])
Ejemplo n.º 7
0
 def init_appearance(cls):
     cls._appearance = {}
     appearance = AttrReader.items_from_klass(cls.appearance_cls)
     shuffle(appearance)
     for i, item in enumerate(AttrReader.items_from_klass(cls)):
         cls._appearance[item.name] = appearance[i]