Esempio n. 1
0
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
Esempio n. 2
0
    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})