def load_entities(charnames): wds = list() skins = list() for charname in charnames: path = os.path.join(usf_root, 'data', 'characters', charname) path2 = os.path.join(usf_root, 'data', 'characters_unfinished', charname) if os.path.exists(path): if not os.path.exists( os.path.join(path,path.split(os.path.sep)[-1])+".xml" ): create_character_xml(path) skins.append(EntitySkin(path)) if inotifyx: wds.append(inotifyx.add_watch(fd, path, inotifyx.IN_MODIFY)) elif os.path.exists(path2): if not os.path.exists( os.path.join(path2,path2.split(os.path.sep)[-1])+".xml" ): create_character_xml(path2) skins.append(EntitySkin(path2)) if inotifyx: wds.append(inotifyx.add_watch(fd, path2, inotifyx.IN_MODIFY)) else: logging.error("no directory of this name in characters.") return skins, wds
def __init__(self, **kwargs): super(Entity, self).__init__(**kwargs) number = kwargs.get('num') if number: self._num = number else: self._num = Entity.counter Entity.counter += 1 self._game = kwargs.get('game') self._upgraded = kwargs.get('upgraded', False) self._lighten = False self._shield = {'on': False, 'power': 1.0, 'date': 0} self._carried_by = kwargs.get('carried_by', None) # the entity is reversed when looking left. self._percents = 0 self._lives = kwargs.get('lives', 3) self._invincible = False self._visible = kwargs.get('visible', False) entity_skinname = kwargs.get( 'entity_skinname', 'characters' + os.sep + 'stick') if entity_skinname is not None: animation = kwargs.get('animation', 'static') self._name = entity_skinname.split(os.sep)[-1] self.entity_skin = EntitySkin( entity_skinname, not self._game or not self._game.screen, animation=animation) self._armor = self.entity_skin.armor self._rect = pygame.Rect(0, 0, 0, 0) self._rect[:2] = ( self._place[0] - self._rect[2] / 2, self._place[1] - self._rect[3]) self._rect[2:] = self.entity_skin.animation.rect[2:] self.entity_skin.update(0, server=(self._game is None or self._game.screen is None)) self._game.events.add_event( 'ShieldUpdateEvent', (None, None), {'world': self._game, 'player': self})