Enemies appear
[koperkapel.git] / koperkapel / scenes / level.py
index a6844663caf020b5ffdafb3d9ad6c470ab677e14..e5d102a265d9772b9095d3915166c1bbf479dceb 100644 (file)
@@ -146,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':
@@ -198,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