X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=koperkapel%2Fscenes%2Flevel.py;h=54449dcc8513f7d2d91b5768d7549307f54e1e94;hb=e275a42b8cc75a4b3989096171b4dc17939b9de0;hp=856f4cec8e9ead960cc666a1866d48fdd38363b1;hpb=b0e9b722445f62943284044e1b5f9638db89a4e7;p=koperkapel.git diff --git a/koperkapel/scenes/level.py b/koperkapel/scenes/level.py index 856f4ce..54449dc 100644 --- a/koperkapel/scenes/level.py +++ b/koperkapel/scenes/level.py @@ -4,7 +4,7 @@ from pgzero.constants import keys from pygame import Surface import pygame.locals as pgl from ..loaders.levelloader import levels -from .base import Scene, ChangeSceneEvent, MoveViewportEvent +from .base import Scene, ChangeSceneEvent, MoveViewportEvent, defer_to_update from ..constants import TILE_SIZE, WIDTH, HEIGHT from ..vehicles.base import Vehicle @@ -51,6 +51,7 @@ class BaseLevelScene(Scene): def update(self, world, engine, dt): """Fix the door and keypad positions""" + super().update(world, engine, dt) for door in self._doors: door.pos = self.calc_offset( door.game_pos[0] * TILE_SIZE, door.game_pos[1] * TILE_SIZE) @@ -119,14 +120,25 @@ class GameLevelScene(BaseLevelScene): self._angle = angle self._avatar.angle = angle + @defer_to_update + def _vehicle_changed(self, world): + self._roaches.remove(self._avatar) + self._vehicle = Vehicle.current(world) + self._avatar = self._vehicle.get_avatar(world) + self._avatar.pos = (WIDTH // 2, HEIGHT // 2) + self._roaches.add(self._avatar) + self._set_angle(self._angle) + + @defer_to_update + def _change_vehicle(self, world): + vehicle = Vehicle.random() + world.vehicles.current = vehicle + self._vehicle_changed() + def update(self, world, engine, dt): - if self._vehicle.changed(): - self._roaches.remove(self._avatar) - self._avatar = self._vehicle.get_avatar(world) - self._avatar.pos = (WIDTH // 2, HEIGHT // 2) - self._roaches.add(self._avatar) - self._avatar.set_angle(self._angle) super().update(world, engine, dt) + events = world.pop_events() + return events def on_key_down(self, key, mod, unicode): offset = None @@ -170,7 +182,7 @@ class GameLevelScene(BaseLevelScene): print('Boom') elif key == keys.V: # Leave vehicle - print('Vehicle key pressed') + self._change_vehicle() elif key == keys.Z: # Vehicle management from .roach_management import RoachesScene