X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=koperkapel%2Fscenes%2Flevel.py;h=e5d102a265d9772b9095d3915166c1bbf479dceb;hb=78daa43b6486e94b0531cacf6d7083cbaf3a827c;hp=9b54435df80fb43151737a6c9f7d6421bb905cdf;hpb=9d3fee60d4fb75d183d6db5af8468c2d9dbf9e85;p=koperkapel.git diff --git a/koperkapel/scenes/level.py b/koperkapel/scenes/level.py index 9b54435..e5d102a 100644 --- 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 ..gamelib.items import clone_old_item 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': - 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': @@ -174,7 +177,12 @@ class GameLevelScene(BaseLevelScene): 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"] + 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 @@ -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) + 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 + 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