示例#1
0
    def load_player(self,files):
        player_data = {}
        for file_name in files:
            f = open(file_name)
            data = yaml.load(f)
            f.close()
            yamlhelp.merge(data,player_data)
        player_name = player_data.keys()[0]
        player_data = player_data[player_name]
        if 'abilities' in player_data:
            starting_abilities = player_data['abilities']
            del player_data['abilities']
        else:
            starting_abilities = []
        player_creature = Golem(self,player_name,**player_data)
        player_creature.raw_color = yamlhelp.load_color(player_creature.raw_color)
        for ability in starting_abilities:
            player_creature.add_ability(ability)
        for bp_name in player_creature.body_parts:
            bp = player_creature.body_parts[bp_name]
            bp = BodyPart(player_creature,bp_name,**bp)
            player_creature.body_parts[bp_name] = bp
            starting_trait_ids = bp.traits
            bp.traits = []
            for trait_id in starting_trait_ids:
                bp.add_trait(self.traits[trait_id],force=True)

        self.player = Player(self, self.next_id(),
                             0, 0, 0, False, True,
                             input_handler = InputHandler(),
                             creature = player_creature)
        self.add_entity(self.player)

        for name in self.materials:
            self.player.materials[self.materials[name]] = 0
        for ability in self.abilities.values():
            self.player.add_observer(ability)
            ability.add_observer(self.player.input_handler)
        for word_id in self.words:
            self.player.words.append(self.words[word_id])