+ elif self._level.is_keypad(x, y):
+ self._level.press_keypad(x, y, self._roaches)
+ elif self._level.friend_at(x, y):
+ friend = self._level.friend_at(x, y)
+ self._level.remove_friend(friend)
+ self._friends.remove(friend)
+ 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)
+ 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, dt):
+ if self._last_key_down > self._key_rate:
+ self._last_key_down = 0
+ print('Boom')
+
+ def _vehicle_management_key(self):
+ from .roach_management import RoachesScene
+ return [ChangeSceneEvent(RoachesScene(level_scene=self))]
+
+ def on_key_down(self, key, mod, unicode):
+ x, y = self._player_pos
+ if key in (keys.DOWN, keys.UP, keys.LEFT, keys.RIGHT):
+ self._held_keys.clear()
+ self._held_keys.add(key)
+ # We do this so pressing the key has an instant effect, and can
+ # then be held
+ self._last_key_down = self._key_rate + 0.01
+ return self._movement_key(key, 0.01)
+ elif key == keys.C:
+ return self._activate_key()
+ elif key == keys.X:
+ self._held_keys.clear()
+ self._held_keys.add(key)
+ self._last_key_down = self._key_rate + 0.01
+ return self._fire_key(0.01)
+ elif key == keys.V:
+ return self._change_vehicle()
+ elif key == keys.Z:
+ return self._vehicle_management_key()