Mercurial > skaapsteker
diff skaapsteker/sprites/player.py @ 290:c68f2f3efc7f
Item dropping and swapping.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Fri, 08 Apr 2011 21:58:48 +0200 |
parents | 8cac6ff88a9d |
children | 15b2be883a40 |
line wrap: on
line diff
--- a/skaapsteker/sprites/player.py Fri Apr 08 21:44:39 2011 +0200 +++ b/skaapsteker/sprites/player.py Fri Apr 08 21:58:48 2011 +0200 @@ -3,11 +3,11 @@ import pygame.transform import time -from ..sprites.base import TILE_SIZE, PC_LAYER, MONSTER_LAYER +from ..sprites.base import find_sprite, TILE_SIZE, PC_LAYER, MONSTER_LAYER from ..physics import Sprite from ..constants import Layers from ..data import get_files, load_image -from ..engine import PlayerDied +from ..engine import PlayerDied, ItemRepopulationEvent class Player(Sprite): @@ -200,15 +200,15 @@ self.sprinting = 2 self._sprint_start_time = time.time() - def action_double_down(self): - print 'double down tap' - def action_double_right(self): if self.sprinting > 0: return self.sprinting = 2 self._sprint_start_time = time.time() + def action_double_up(self): + pass + def action_right(self): if self.facing != 'right': self.facing = 'right' @@ -227,8 +227,10 @@ def action_down(self): print self._touching_actionables - for actionable in self._touching_actionables[:1]: - actionable.player_action(self) + if self._touching_actionables: + self._touching_actionables[0].player_action(self) + elif self.the_world.fox.item is not None: + self.drop_item() def action_fire1(self): @@ -291,11 +293,23 @@ self._image_dict[sprint_key].append(sprint_image) - def take_item(self, item): + def drop_item(self): my_item = self.the_world.fox.item - if my_item is not None: - print "I already have", my_item + if my_item is None: return + self.the_world.fox.item = None + world_item = getattr(self.the_world.items, my_item) + world_item.level = self.the_world.fox.level + world_item.pos = [a/b for a, b in zip(self.rect.center, TILE_SIZE)] + sprite_dict = world_item.copy() + sprite_dict.pop('level') + sprite_dict['name'] = my_item + sprite_dict['world'] = self.the_world + ItemRepopulationEvent.post(find_sprite(sprite_dict, 'items')) + + + def take_item(self, item): + self.drop_item() getattr(self.the_world.items, item.name).level = "_limbo" self.the_world.fox.item = item.name item.kill()