projects
/
koperkapel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Better positioning.
[koperkapel.git]
/
koperkapel
/
scenes
/
level.py
diff --git
a/koperkapel/scenes/level.py
b/koperkapel/scenes/level.py
index 9b54435df80fb43151737a6c9f7d6421bb905cdf..e5d102a265d9772b9095d3915166c1bbf479dceb 100644
(file)
--- a/
koperkapel/scenes/level.py
+++ b/
koperkapel/scenes/level.py
@@
-7,6
+7,7
@@
from ..loaders.levelloader import levels
from .base import (
Scene, ChangeSceneEvent, MoveViewportEvent, WorldEvent, defer_to_update)
from ..constants import TILE_SIZE, WIDTH, HEIGHT
from .base import (
Scene, ChangeSceneEvent, MoveViewportEvent, WorldEvent, defer_to_update)
from ..constants import TILE_SIZE, WIDTH, HEIGHT
+from ..gamelib.items import clone_old_item
from ..roaches import build_roach
from ..vehicles.base import Vehicle
from ..roaches import build_roach
from ..vehicles.base import Vehicle
@@
-145,7
+146,9
@@
class GameLevelScene(BaseLevelScene):
def _can_move(self, x, y):
if self._mode == 'walk':
def _can_move(self, x, y):
if self._mode == 'walk':
- return self._level.can_walk(x, y, self._level_layer)
+ if not self._level.is_on_enemy(x, y):
+ return self._level.can_walk(x, y, self._level_layer)
+ return False
elif self._mode == 'fly':
return self._level.can_fly(x, y, self._level_layer)
elif self._mode == 'crawl':
elif self._mode == 'fly':
return self._level.can_fly(x, y, self._level_layer)
elif self._mode == 'crawl':
@@
-174,7
+177,12
@@
class GameLevelScene(BaseLevelScene):
if item.item_type == "serum":
world.serums.append(item.item_data["serum"])
elif item.item_type == "weapon":
if item.item_type == "serum":
world.serums.append(item.item_data["serum"])
elif item.item_type == "weapon":
+ old_weapon = world.weapons.current
world.weapons.current = item.item_data["weapon"]
world.weapons.current = item.item_data["weapon"]
+ if old_weapon != "spit":
+ clone = clone_old_item(item, weapon=old_weapon)
+ self._level.items.append(clone)
+ self._items.add(clone)
self._vehicle_changed()
@defer_to_update
self._vehicle_changed()
@defer_to_update
@@
-192,11
+200,22
@@
class GameLevelScene(BaseLevelScene):
for item in self._items:
item.pos = self.calc_offset(
item.game_pos[0] * TILE_SIZE, item.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)
+ self._check_enemies()
+ for enemy in self._enemies:
+ enemy.pos = self.calc_offset(
+ enemy.game_pos[0] * TILE_SIZE, enemy.game_pos[1] * TILE_SIZE)
more = self._check_held_keys(dt)
if more:
events.extend(more)
return events
more = self._check_held_keys(dt)
if more:
events.extend(more)
return events
+ def _check_enemies(self):
+ if len(self._level.enemies) != len(self._enemies):
+ # New nemy has spawned
+ for enemy in self._level.enemies:
+ if enemy not in self._enemies:
+ self._enemies.add(enemy)
+
def _check_held_keys(self, dt):
for key in self._held_keys:
self._last_key_down += dt
def _check_held_keys(self, dt):
for key in self._held_keys:
self._last_key_down += dt