Mercurial > skaapsteker
diff skaapsteker/sprites/base.py @ 264:afd9256ad682
Move between doorways. (Still with hacky collision limiting.)
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Fri, 08 Apr 2011 14:54:31 +0200 |
parents | 7668243695f4 |
children | 56a529a69e97 |
line wrap: on
line diff
--- a/skaapsteker/sprites/base.py Fri Apr 08 11:47:33 2011 +0200 +++ b/skaapsteker/sprites/base.py Fri Apr 08 14:54:31 2011 +0200 @@ -27,10 +27,15 @@ def __init__(self, pos, **opts): Sprite.__init__(self) + self._starting_tile_pos = pos + self.setup_image_data(pos) + self.setup(**opts) + + + def setup_image_data(self, pos): self.image = data.load_image(self.image_dir + self.image_file) self.rect = self.image.get_rect(midbottom=(pos[0]*TILE_SIZE[0]+TILE_SIZE[0]/2, (pos[1]+1)*TILE_SIZE[1])) self.collide_rect = self.rect.move(0, 0) - self.setup(**opts) class AnimatedGameSprite(Sprite): @@ -277,6 +282,7 @@ mobile = False gravitates = False collides_with = set([PC_LAYER]) + wants_updates = True image_file = 'torii.png' @@ -284,17 +290,51 @@ def __init__(self, pos, **opts): GameSprite.__init__(self, pos, **opts) - self._layer = Layers.PLAYER + self._ticks_before_interact = 120 + + + def setup_image_data(self, pos): + super(Doorway, self).setup_image_data(pos) self.image = pygame.transform.scale(self.image, self.image.get_rect().center) self.rect = self.image.get_rect(midbottom=self.rect.midbottom) self.collide_rect = self.rect - def setup(self, leadsto): + def setup(self, facing, leadsto): + self.facing = facing self.leadsto = leadsto 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 + print "Player touched %s" % self + from .. import engine, levelscene + engine.ChangeScene.post((levelscene.LevelScene, self.leadsto)) + + + +class StartingDoorway(Doorway): + collides_with = set() + + def setup_image_data(self, pos): + self.image = pygame.Surface((0, 0)) + self.rect = self.image.get_rect(midbottom=(pos[0]*TILE_SIZE[0]+TILE_SIZE[0]/2, (pos[1]+1)*TILE_SIZE[1])) + self.collide_rect = self.rect.move(0, 0) + + + def setup(self, facing): + Doorway.setup(self, facing, None) + + def collided_player(self, player): print "Player touched %s" % self from .. import engine, levelscene