Mercurial > skaapsteker
diff skaapsteker/sprites/base.py @ 273:95e2ef31e714
Hit "down" to interact with things.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Fri, 08 Apr 2011 19:09:09 +0200 |
parents | 56a529a69e97 |
children | 15b2be883a40 |
line wrap: on
line diff
--- a/skaapsteker/sprites/base.py Fri Apr 08 17:32:50 2011 +0200 +++ b/skaapsteker/sprites/base.py Fri Apr 08 19:09:09 2011 +0200 @@ -192,30 +192,22 @@ class NPC(AnimatedGameSprite): collision_layer = NPC_LAYER - collides_with = set([PC_LAYER]) debug_color = (240, 240, 240) bounce_factor = (0, 0) # NPC's don't bounce by default block = False + actionable = True def __init__(self, pos, **opts): AnimatedGameSprite.__init__(self, pos, **opts) self._layer = Layers.PLAYER - self._ticks_before_interact = 0 def setup(self, name, world, dsm, state): self.dsm = dialogue.DSM(name, world, dsm, state) - def collided_player(self, player): - if self._ticks_before_interact == 0: - self._ticks_before_interact = 120 - OpenDialog.post(self) - - def update(self): - super(NPC, self).update() - if self._ticks_before_interact > 0: - self._ticks_before_interact -= 1 + def player_action(self, player): + OpenDialog.post(self) class Projectile(GameSprite): @@ -226,10 +218,10 @@ mobile = False gravitates = False - collision_layer = MONSTER_LAYER - collides_with = set([PC_LAYER]) + collision_layer = NPC_LAYER portable = True + actionable = True def __init__(self, pos, **opts): GameSprite.__init__(self, pos, **opts) @@ -247,7 +239,7 @@ return (0, 0, 240) - def collided_player(self, player): + def player_action(self, player): print "Player touched %s" % self player.take_item(self) @@ -258,6 +250,7 @@ gravitates = False collides_with = set([PC_LAYER, MONSTER_LAYER, NPC_LAYER]) is_ground = True + actionable = False bounce_factor = (0.0, 0.0) def __init__(self, pos, image): @@ -282,19 +275,12 @@ class Doorway(GameSprite): mobile = False gravitates = False - collides_with = set([PC_LAYER]) - wants_updates = True blocks = False + actionable = True image_file = 'torii.png' - debug_color = (120, 240, 120) - - def __init__(self, pos, **opts): - GameSprite.__init__(self, pos, **opts) - self._ticks_before_interact = 120 - def setup_image_data(self, pos): super(Doorway, self).setup_image_data(pos) @@ -309,16 +295,7 @@ print leadsto - def update(self): - super(Doorway, self).update() - if self._ticks_before_interact > 0: - self._ticks_before_interact -= 1 - - - def collided_player(self, player): - if self._ticks_before_interact != 0: - return - self._ticks_before_interact = 120 + def player_action(self, player): print "Player touched %s" % self from .. import engine, levelscene engine.ChangeScene.post((levelscene.LevelScene, self.leadsto)) @@ -326,7 +303,7 @@ class StartingDoorway(Doorway): - collides_with = set() + actionable = False def setup_image_data(self, pos): self.image = pygame.Surface((0, 0)) @@ -338,12 +315,6 @@ Doorway.setup(self, facing, None) - def collided_player(self, player): - print "Player touched %s" % self - from .. import engine, levelscene - engine.ChangeScene.post((levelscene.LevelScene, self.leadsto)) - - def find_sprite(descr, mod_name=None): """Create a sprite object from a dictionary describing it."""