X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=koperkapel%2Fscenes%2Flevel.py;h=ebd87e120d3575ff795df1caa253fadab796ff5d;hb=029b435e6e3a79f122122c47c41bd773149e6480;hp=ea37e154ed643a39f166a1fcd8ada72553fd8af3;hpb=803254edba328148045841cd2cbdc0e4bd19655b;p=koperkapel.git diff --git a/koperkapel/scenes/level.py b/koperkapel/scenes/level.py index ea37e15..ebd87e1 100644 --- a/koperkapel/scenes/level.py +++ b/koperkapel/scenes/level.py @@ -6,7 +6,7 @@ import pygame.locals as pgl from ..loaders.levelloader import levels from .base import Scene, ChangeSceneEvent, MoveViewportEvent from ..constants import TILE_SIZE, WIDTH, HEIGHT -from ..roaches import default_roaches +from ..vehicles.base import Vehicle class BaseLevelScene(Scene): @@ -61,7 +61,7 @@ class BaseLevelScene(Scene): area=(viewport[0], viewport[1], WIDTH, HEIGHT)) if self._level_layer != 'floor': screen.surface.blit(self._overlay, (0, 0), - area=(viewport[0], viewport[1], WIDTH, HEIGHT), + area=(viewport[0], viewport[1], WIDTH, HEIGHT), special_flags=pgl.BLEND_MULT) self.actors.draw(screen) @@ -76,17 +76,18 @@ class GameLevelScene(BaseLevelScene): def enter(self, world): super().enter(world) self._roaches = self.actors.add_layer("roaches", level=10) + self._vehicle = Vehicle.current(world) self._mode = 'walk' - return self._init_roaches(world.roaches) + self._angle = 0 + return self._init_roaches(world) - def _init_roaches(self, roaches): - for roach in roaches: - roach_actor = self._roaches.add(default_roaches.assemble(roach)) - roach_actor.anchor = (0, 0) - roach_actor.pos = (WIDTH // 2, HEIGHT // 2) + def _init_roaches(self, world): x, y = self._level.start_pos - self._set_pos(x, y) self._level_layer = 'floor' + self._avatar = self._vehicle.get_avatar(world) + self._set_pos(x, y) + self._avatar.pos = (WIDTH // 2, HEIGHT // 2) + self._roaches.add(self._avatar) # Fix viewport offset return [MoveViewportEvent((x * TILE_SIZE - WIDTH // 2, y * TILE_SIZE - HEIGHT // 2))] @@ -103,8 +104,17 @@ class GameLevelScene(BaseLevelScene): return self._level.can_crawl(x, y, self._level_layer) def _set_angle(self, angle): - for roach in self._roaches: - roach.angle = angle + self._angle = angle + self._avatar.angle = angle + + 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) def on_key_down(self, key, mod, unicode): offset = None @@ -149,9 +159,10 @@ class GameLevelScene(BaseLevelScene): elif key == keys.V: # Leave vehicle print('Vehicle key pressed') - + elif key == keys.Z: + # Vehicle management + from .roach_management import RoachesScene + return[ChangeSceneEvent(RoachesScene())] if offset: return [MoveViewportEvent(offset)] return super(GameLevelScene, self).on_key_down(key, mod, unicode) - -