Exemplo n.º 1
0
 def update(self, dt):
     for event in self.input.events():
         if event.keyboard_key and event.keyboard_key.is_key_down:
             pressed_key = event.keyboard_key.key
             if pressed_key == Keycode.q:
                 self.engine.quit()
             elif pressed_key == Keycode.num_1:
                 self.obj.transitions_manager.set(
                     'color', self._randomize_color_transition()
                 )
             elif pressed_key == Keycode.num_2:
                 self.obj.transitions_manager.set(
                     'pseudo_timer',
                     NodeTransitionsSequence([
                         NodeTransitionDelay(1.),
                         NodeTransitionCallback(
                             lambda node: node.transitions_manager.set(
                                 'color', self._randomize_color_transition(),
                             )
                         )
                     ])
                 )
             elif pressed_key == Keycode.num_0:
                 self.obj.transitions_manager.set(
                     'color', None
                 )
                 self.obj.transitions_manager.set(
                     'pseudo_timer', None
                 )
Exemplo n.º 2
0
    def slowdown_enemies(self):
        self.slowdown_power += 1
        for child_node in self.space_node.children:
            if isinstance(child_node, VirusRunner):
                child_node.slowdown(0.65)
                child_node.fade()

        self.space_node.transitions_manager.set(
            'slowndown_cancel',
            NodeTransitionsSequence([
                NodeTransitionDelay(5000),
                NodeTransitionCallback(lambda _: self._on_cancel_slowdown()),
            ], ))
Exemplo n.º 3
0
    def __init__(self, *, space_node):
        self.space_node = space_node
        self.speed_mod = 0.
        self.slowdown_power = 0

        self.space_node.transitions_manager.set(
            'spawn_periodic',
            NodeTransitionsSequence(
                [
                    NodeTransitionDelay(200),
                    NodeTransitionCallback(lambda _: self.spawn_runner()),
                ],
                loops=0,
            ))
        self.space_node.transitions_manager.set(
            'update_speed_mod_periodic',
            NodeTransitionsSequence(
                [
                    NodeTransitionDelay(300),
                    NodeTransitionCallback(lambda _: self.update_speed_mod()),
                ],
                loops=0,
            ))
Exemplo n.º 4
0
    def handle_destruction(self):
        if self._is_destroying:
            return

        self._is_destroying = True

        self.hitbox.delete()
        self.transitions_manager.set(
            'destruction',
            NodeTransitionsSequence([
                NodeTransition(Node.scale, Vector(0.01, 0.01), duration=400.),
                NodeTransitionCallback(lambda n: n.delete()),
            ]),
        )
Exemplo n.º 5
0
 def _process_movement(self):
     if (self.movement_direction and not self.is_moving
             and 0 <= self.current_lane + self.movement_direction <
             len(LANE_HERO_SLOTS) and not self.is_frozen):
         self.is_moving = True
         self.current_lane += self.movement_direction
         self.soap.transitions_manager.set(
             'movement',
             NodeTransitionsSequence([
                 NodeTransition(Node.position,
                                LANE_HERO_SLOTS[self.current_lane],
                                duration=150.),
                 NodeTransitionCallback(self._on_end_movement),
             ]),
         )
Exemplo n.º 6
0
 def handle_pickup_grab(self, pickup_node):
     if isinstance(pickup_node, OilRunner):
         if not self.is_frozen:
             self.is_frozen = True
             self.soap.transitions_manager.set(
                 'frozen',
                 NodeTransitionsSequence([
                     NodeTransition(Node.color,
                                    Color(0.5, 0.5, 0.5),
                                    duration=400.,
                                    back_and_forth=True),
                     NodeTransitionCallback(self._on_end_frozen),
                 ]))
     elif isinstance(pickup_node, MiniSoapRunner):
         self.player_state.soap_meter_counter.increase(10000)
     elif isinstance(pickup_node, LiquidSoapRunner):
         self.player_state.liquid_soap_powerup_counter.increase(1)
     elif isinstance(pickup_node, AntivirusRunner):
         self.player_state.antivirus_powerup_counter.increase(1)
Exemplo n.º 7
0
Arquivo: main.py Projeto: labuzm/kaa
    def __init__(self):
        self.camera.position = Vector(0., 0.)
        self.python_img = Sprite(PYTHON_IMAGE_PATH)

        self.transition = NodeTransitionsSequence([
            NodePositionTransition(
                Vector(-100., -100.),
                3.,
                advance_method=AttributeTransitionMethod.add,
                loops=3,
                easing=Easing.elastic_in_out),
            NodePositionTransition(
                Vector(100., 0.),
                3.,
                advance_method=AttributeTransitionMethod.add,
                easing=Easing.back_in_out),
            NodeTransitionDelay(1.5),
            NodeTransitionCallback(lambda node: setattr(node, 'sprite', None)),
            NodeTransitionsParallel([
                NodePositionTransition(
                    Vector(-50., 100.),
                    3.,
                    advance_method=AttributeTransitionMethod.add),
                NodeRotationTransition(1., 5.),
                NodeScaleTransition(Vector(2., 2.), 3.),
                NodeColorTransition(Color(0., 1., 0., 0.5), 4.),
            ],
                                    back_and_forth=True),
        ])

        self.custom_transition = NodeCustomTransition(
            prepare_func=lambda node: {
                'positions': [
                    Vector(random.uniform(-100, 100), random.uniform(
                        -100, 100)) for _ in range(10)
                ]
            },
            evaluate_func=lambda state, node, t: setattr(
                node,
                'position',
                state['positions'][min(int(t * 10), 9)],
            ),
            duration=10.,
            loops=5,
        )

        spritesheet_frames = split_spritesheet(
            Sprite(EXPLOSION_IMAGE_PATH),
            Vector(64, 64),
        )
        self.sprite_transition = NodeSpriteTransition(
            spritesheet_frames,
            1.,
            loops=0,
            back_and_forth=True,
            easing=Easing.quartic_out,
        )

        self.space = self.root.add_child(SpaceNode())

        self.obj = self.space.add_child(
            Node(
                position=Vector(50., 50.),
                sprite=self.python_img,
                transition=self.transition,
            ))

        self.custom_obj = self.space.add_child(
            Node(
                color=Color(1., 0., 0.),
                sprite=self.python_img,
                transition=self.custom_transition,
            ))

        self.phys_obj = self.space.add_child(
            BodyNode(
                color=Color(0., 1., 1.),
                position=Vector(-50., 50.),
                sprite=self.python_img,
                velocity=Vector(0., 30.),
                transition=BodyNodeVelocityTransition(Vector(0., -30.), 10.),
            ))

        self.animated_obj = self.space.add_child(
            Node(
                position=Vector(-20., 10.),
                transition=self.sprite_transition,
            ))
Exemplo n.º 8
0
Arquivo: main.py Projeto: chmod555/kaa
    def __init__(self):
        self.camera.position = Vector(0., 0.)
        self.python_img = Sprite(PYTHON_IMAGE_PATH)

        self.transition = NodeTransitionsSequence([
            NodePositionTransition(
                Vector(-100., -100.),
                3000.,
                advance_method=AttributeTransitionMethod.add,
                loops=3),
            NodePositionTransition(
                Vector(100., 0.),
                3000.,
                advance_method=AttributeTransitionMethod.add),
            NodeTransitionDelay(1500.),
            NodeTransitionCallback(lambda node: setattr(node, 'sprite', None)),
            NodeTransitionsParallel([
                NodePositionTransition(
                    Vector(-50., 100.),
                    3000.,
                    advance_method=AttributeTransitionMethod.add),
                NodeRotationTransition(1., 5000.),
                NodeScaleTransition(Vector(2., 2.), 3000.),
                NodeColorTransition(Color(0., 1., 0., 0.5), 4000.),
            ],
                                    back_and_forth=True),
        ])

        self.custom_transition = NodeCustomTransition(
            lambda node: {
                'positions': [
                    Vector(random.uniform(-100, 100), random.uniform(
                        -100, 100)) for _ in range(10)
                ]
            },
            lambda state, node, t: setattr(
                node,
                'position',
                state['positions'][min(int(t * 10), 9)],
            ),
            10000.,
            loops=5,
        )

        self.space = self.root.add_child(SpaceNode())

        self.obj = self.space.add_child(
            Node(
                position=Vector(50., 50.),
                sprite=self.python_img,
                transition=self.transition,
            ))

        self.custom_obj = self.space.add_child(
            Node(
                color=Color(1., 0., 0.),
                sprite=self.python_img,
                transition=self.custom_transition,
            ))

        self.phys_obj = self.space.add_child(
            BodyNode(
                color=Color(0., 1., 1.),
                position=Vector(-50., 50.),
                sprite=self.python_img,
                velocity=Vector(0., 30.),
                transition=BodyNodeVelocityTransition(Vector(0., -30.),
                                                      10000.),
            ))