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()
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])
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]
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]
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
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])
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]