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