示例#1
0
 def flip(self, sprite):
     set_dirty = lambda: setattr(sprite, 'dirty', 1)
     fx = sprite.rect.centerx - sprite.rect.width
     ani0 = Animation(rotation=0, duration=350, transition='out_quint')
     ani0.update_callback = set_dirty
     ani0.start(sprite)
     ani1 = Animation(centerx=fx, duration=340, transition='out_quint')
     ani1.update_callback = set_dirty
     ani1.start(sprite.rect)
     self._animations.add(ani0, ani1)
示例#2
0
 def flip(self, sprite):
     set_dirty = lambda: setattr(sprite, 'dirty', 1)
     fx = sprite.rect.centerx - sprite.rect.width
     ani0 = Animation(rotation=0, duration=350, transition='out_quint')
     ani0.update_callback = set_dirty
     ani0.start(sprite)
     ani1 = Animation(centerx=fx, duration=340, transition='out_quint')
     ani1.update_callback = set_dirty
     ani1.start(sprite.rect)
     self._animations.add(ani0, ani1)
示例#3
0
 def clear_card(card):
     sound = choice(self.deal_sounds)
     sound.set_volume(.6)
     sound.play()
     set_dirty = lambda: setattr(card, 'dirty', 1)
     fx, fy = card.rect.move(-1400, -200).topleft
     ani0 = Animation(x=fx, y=fy, duration=400,
                      transition='in_out_quint', round_values=True)
     ani0.update_callback = set_dirty
     ani0.callback = card.kill
     ani0.start(card.rect)
     ani1 = Animation(rotation=180, duration=400, transition='out_quart')
     ani1.update_callback = set_dirty
     ani1.start(card)
     self.animations.add(ani0, ani1)
示例#4
0
    def animate_deal(self, sprite, initial, final, index):
        if hasattr(sprite, '_already_animated'):
            return None

        sprite._already_animated = True
        fx, fy = final
        ani = Animation(x=fx, y=fy, duration=400.,
                        transition='in_out_quint', round_values=True)
        ani.update_callback = lambda: setattr(sprite, 'dirty', 1)

        # HACK
        if 1:
            sprite.face_up = False
            ani.callback = partial(self.flip, sprite)

        ani.start(sprite.rect)
        return ani
示例#5
0
    def animate_pop(self, sprite, initial, final, index=1):
        """Animate chips moving to popped stack
        """
        # cancel animation that is already running on this sprite
        ani = self._running_animations.get(sprite, None)
        if ani is not None:
            del self._running_animations[sprite]
            self._animations.remove(ani)
            ani.kill()

        shadow = self._shadows_dict.get(sprite, None)
        if shadow is not None:
            shadow.rect = sprite.rect.move(0, 5)

        d = get_distance(sprite.rect.topleft, final)
        if d == 0:
            return None

        fx, fy = final
        ani = Animation(x=fx,
                        y=fy,
                        duration=self.animation_time,
                        transition='out_quint',
                        round_values=True)

        def update_sprite():
            setattr(sprite, 'dirty', 1)
            offset = 20 - self.height_offset
            shadow = self._shadows_dict.get(sprite, None)
            if shadow is not None:
                shadow.rect = sprite.rect.move(0, offset)

        ani.update_callback = update_sprite

        def finalize():
            del self._running_animations[sprite]
            if d > 1:
                self.play_chip_sound()

        ani.callback = finalize

        ani.start(sprite.rect)
        self._running_animations[sprite] = ani

        return ani
示例#6
0
    def animate_pop(self, sprite, initial, final, index=1):
        """Animate chips moving to popped stack
        """
        # cancel animation that is already running on this sprite
        ani = self._running_animations.get(sprite, None)
        if ani is not None:
            del self._running_animations[sprite]
            self._animations.remove(ani)
            ani.kill()

        shadow = self._shadows_dict.get(sprite, None)
        if shadow is not None:
            shadow.rect = sprite.rect.move(0, 5)

        d = get_distance(sprite.rect.topleft, final)
        if d == 0:
            return None

        fx, fy = final
        ani = Animation(x=fx, y=fy, duration=self.animation_time,
                        transition='out_quint', round_values=True)

        def update_sprite():
            setattr(sprite, 'dirty', 1)
            offset = 20 - self.height_offset
            shadow = self._shadows_dict.get(sprite, None)
            if shadow is not None:
                shadow.rect = sprite.rect.move(0, offset)

        ani.update_callback = update_sprite

        def finalize():
            del self._running_animations[sprite]
            if d > 1:
                self.play_chip_sound()

        ani.callback = finalize

        ani.start(sprite.rect)
        self._running_animations[sprite] = ani

        return ani
示例#7
0
    def animate_deal(self, sprite, initial, final, index):
        if hasattr(sprite, '_already_animated'):
            return None

        sprite._already_animated = True
        fx, fy = final
        ani = Animation(x=fx,
                        y=fy,
                        duration=400.,
                        transition='in_out_quint',
                        round_values=True)
        ani.update_callback = lambda: setattr(sprite, 'dirty', 1)

        # HACK
        if 1:
            sprite.face_up = False
            ani.callback = partial(self.flip, sprite)

        ani.start(sprite.rect)
        return ani