From 5729b7d89f992ba3d5b3f779ecc1094a48a85459 Mon Sep 17 00:00:00 2001 From: Simon Cross Date: Sat, 5 Mar 2016 21:05:14 +0200 Subject: [PATCH] Able to consume items. --- koperkapel/gamelib/level.py | 28 +++++++++++++++------------- koperkapel/scenes/level.py | 13 ++++++++++--- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/koperkapel/gamelib/level.py b/koperkapel/gamelib/level.py index 8b275b1..bcc319a 100644 --- a/koperkapel/gamelib/level.py +++ b/koperkapel/gamelib/level.py @@ -1,8 +1,5 @@ """ Class holding the level info """ -from .keypad import Keypad -from .door import Door - class Level(object): @@ -24,8 +21,7 @@ class Level(object): return [self.tiles[y][x-1] if x > 0 else None, self.tiles[y][x+1] if x < self.width - 1 else None, self.tiles[y-1][x] if y > 0 else None, - self.tiles[y+1][x] if y < self.height- 1 else None, - ] + self.tiles[y+1][x] if y < self.height - 1 else None] def can_walk(self, x, y, layer): if 'walk' in self.tiles[y][x][layer]['behaviour']: @@ -67,15 +63,21 @@ class Level(object): def get_friends(self): return self._friends[:] - def is_on_friend(self, x, y): - return (x, y) in [x.game_pos for x in self.friends] + def friend_at(self, x, y): + for f in self.friends: + if f.game_pos == (x, y): + return f + + def remove_friend(self, friend): + self.friends.remove(friend) + + def item_at(self, x, y): + for i in self.items: + if i.game_pos == (x, y): + return i - def remove_friend(self, x, y): - for friend in self.friends[:]: - if friend.game_pos == (x, y): - self.friends.remove(friend) - return friend - return None + def remove_item(self, item): + self.items.remove(item) def is_exit(self, x, y): return self.exit and (x, y) == tuple(self.exit["pos"]) diff --git a/koperkapel/scenes/level.py b/koperkapel/scenes/level.py index a151599..735ed28 100644 --- a/koperkapel/scenes/level.py +++ b/koperkapel/scenes/level.py @@ -211,13 +211,20 @@ class GameLevelScene(BaseLevelScene): self._mode = 'walk' elif self._level.is_keypad(x, y): self._level.press_keypad(x, y, self._roaches) - elif self._level.is_on_friend(x, y): - friend = self._level.remove_friend(x, y) + 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())] + return [ + WorldEvent('set', {'level.name': next_level}), + ChangeSceneEvent(GameLevelScene())] def _fire_key(self): print('Boom') -- 2.34.1