Merge branch 'master' of ctpug.org.za:koperkapel
authorSimon Cross <hodgestar@gmail.com>
Sat, 5 Mar 2016 21:54:39 +0000 (23:54 +0200)
committerSimon Cross <hodgestar@gmail.com>
Sat, 5 Mar 2016 21:54:39 +0000 (23:54 +0200)
1  2 
koperkapel/scenes/level.py

index 73573ac61f79204d4e758c227a2d7b2ab7d592d5,c5a847b37de719da32810dd786ad36a7e78aa998..6845ea2fcac2b7e6326029c77d9de3e2812625cf
@@@ -7,7 -7,7 +7,7 @@@ from ..loaders.levelloader import level
  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 ..gamelib.items import clone_old_item, create_new_item
  from ..roaches import build_roach
  from ..vehicles.base import Vehicle
  from ..weapons import weapon_by_name
@@@ -204,13 -204,6 +204,13 @@@ class GameLevelScene(BaseLevelScene)
          bullet.level_layer = self._level_layer
          self._bullets.add(bullet)
  
 +    def _check_for_bullet_hits(self):
 +        for bullet in list(self._bullets):
 +            for enemy in list(self._enemies):
 +                if enemy.collidepoint(bullet.pos):
 +                    self._hit_enemy(enemy, bullet.weapon)
 +                    self._bullets.remove(bullet)
 +
      def _update_bullet(self, bullet, dt):
          bullet.dt += dt
          if bullet.dt > 0.1:
  
      @defer_to_update
      def _change_vehicle(self, world):
-         vehicle = Vehicle.random()
-         world.vehicles.current = vehicle
+         x, y = self._player_pos
+         old_vehicle = world.vehicles.current
+         
+         item = self._level.item_at(x, y)
+         
+         if item and item.item_type == "vehicle":
+             world.vehicles.current = item.item_data["vehicle"]
+             self._level.remove_item(item)
+             self._items.remove(item)
+         else:
+             world.vehicles.current = "walking"
+         if old_vehicle != "walking":
+             dropped_vehicle = create_new_item("vehicle", (x, y), vehicle=old_vehicle)
+             self._level.items.append(dropped_vehicle)
+             self._items.add(dropped_vehicle)
          self._vehicle_changed()
  
      def update(self, world, engine, dt):
              bullet.pos = self.calc_offset(
                  bullet.game_pos[0] * TILE_SIZE + (TILE_SIZE // 2),
                  bullet.game_pos[1] * TILE_SIZE + (TILE_SIZE // 2))
 +        self._check_for_bullet_hits()
          more = self._check_held_keys(dt)
          if more:
              events.extend(more)
              self._add_roach()
          elif self._level.item_at(x, y):
              item = self._level.item_at(x, y)
-             self._level.remove_item(item)
-             self._items.remove(item)
-             self._gain_item(item)
+             if item.item_type != "vehicle":
+                 self._level.remove_item(item)
+                 self._items.remove(item)
+                 self._gain_item(item)
          elif self._level.is_exit(x, y):
              next_level = self._level.get_exit_level()
              return [