projects
/
koperkapel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Display a serum on level1.
[koperkapel.git]
/
koperkapel
/
scenes
/
level.py
diff --git
a/koperkapel/scenes/level.py
b/koperkapel/scenes/level.py
index a17de55d70ece5aa8a37e2bf88891580eadf728c..60e230568575670baa72e1de4a4d3f1ffce1dab2 100644
(file)
--- 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 pygame import Surface
import pygame.locals as pgl
from ..loaders.levelloader import levels
-from .base import Scene, ChangeSceneEvent, MoveViewportEvent, defer_to_update
+from .base import Scene, ChangeSceneEvent, MoveViewportEvent,
WorldEvent,
defer_to_update
from ..constants import TILE_SIZE, WIDTH, HEIGHT
from ..roaches import build_roach
from ..vehicles.base import Vehicle
from ..constants import TILE_SIZE, WIDTH, HEIGHT
from ..roaches import build_roach
from ..vehicles.base import Vehicle
@@
-84,16
+84,28
@@
class BaseLevelScene(Scene):
class GameLevelScene(BaseLevelScene):
def enter(self, world):
class GameLevelScene(BaseLevelScene):
def enter(self, world):
+ print('enter', world['level']['name'], self._level)
if self._level is not None:
return
super().enter(world)
self._roaches = self.actors.add_layer("roaches", level=10)
self._friends = self.actors.add_layer("friendly roaches", level=9)
if self._level is not None:
return
super().enter(world)
self._roaches = self.actors.add_layer("roaches", level=10)
self._friends = self.actors.add_layer("friendly roaches", level=9)
+ self._items = self.actors.add_layer("items", level=9)
self._vehicle = Vehicle.current(world)
self._mode = 'walk'
self._angle = 0
self._vehicle = Vehicle.current(world)
self._mode = 'walk'
self._angle = 0
+ self._init_items()
+ self._init_friendly_roaches()
return self._init_roaches(world)
return self._init_roaches(world)
+ def _init_items(self):
+ for item in self._level.items:
+ self._items.add(item)
+
+ def _init_friendly_roaches(self):
+ for friend in self._level.friends:
+ self._friends.add(friend)
+
def _init_roaches(self, world):
x, y = self._level.start_pos
self._level_layer = 'floor'
def _init_roaches(self, world):
x, y = self._level.start_pos
self._level_layer = 'floor'
@@
-101,8
+113,6
@@
class GameLevelScene(BaseLevelScene):
self._set_pos(x, y)
self._avatar.pos = (WIDTH // 2, HEIGHT // 2)
self._roaches.add(self._avatar)
self._set_pos(x, y)
self._avatar.pos = (WIDTH // 2, HEIGHT // 2)
self._roaches.add(self._avatar)
- for friend in self._level.friends:
- self._friends.add(friend)
# Fix viewport offset
return [
MoveViewportEvent((
# Fix viewport offset
return [
MoveViewportEvent((
@@
-151,6
+161,9
@@
class GameLevelScene(BaseLevelScene):
for friend in self._friends:
friend.pos = self.calc_offset(
friend.game_pos[0] * TILE_SIZE, friend.game_pos[1] * TILE_SIZE)
for friend in self._friends:
friend.pos = self.calc_offset(
friend.game_pos[0] * TILE_SIZE, friend.game_pos[1] * TILE_SIZE)
+ for item in self._items:
+ item.pos = self.calc_offset(
+ item.game_pos[0] * TILE_SIZE, item.game_pos[1] * TILE_SIZE)
return events
def _movement_key(self, key):
return events
def _movement_key(self, key):
@@
-187,6
+200,9
@@
class GameLevelScene(BaseLevelScene):
friend = self._level.remove_friend(x, y)
self._friends.remove(friend)
self._add_roach()
friend = self._level.remove_friend(x, y)
self._friends.remove(friend)
self._add_roach()
+ elif self._level.is_exit(x, y):
+ next_level = self._level.get_exit_level()
+ return [WorldEvent('set', {'level.name': next_level}), ChangeSceneEvent(GameLevelScene())]
def _fire_key(self):
print('Boom')
def _fire_key(self):
print('Boom')