diff skaapsteker/sprites/base.py @ 202:a11325bc5ff0

Sprite refactoring stuff.
author Jeremy Thurgood <firxen@gmail.com>
date Wed, 06 Apr 2011 22:42:35 +0200
parents 897eec397cbb
children 0a793c4ac341
line wrap: on
line diff
--- a/skaapsteker/sprites/base.py	Wed Apr 06 22:32:58 2011 +0200
+++ b/skaapsteker/sprites/base.py	Wed Apr 06 22:42:35 2011 +0200
@@ -16,9 +16,23 @@
 NPC_LAYER = 2
 
 
-class Monster(Sprite):
+
+class GameSprite(Sprite):
+    image_dir = 'sprites/'
+    image_file = None
 
-    image_file = None
+    def __init__(self, pos, **opts):
+        Sprite.__init__(self)
+        self.image = data.load_image(self.image_dir + self.image_file)
+        self.starting_tile_pos = pos
+        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 Monster(GameSprite):
+
     collision_layer = MONSTER_LAYER
     collides_with = set([PC_LAYER])
 
@@ -27,21 +41,16 @@
     block = True
 
     def __init__(self, pos, **opts):
-        Sprite.__init__(self)
-        self.image = data.load_image('sprites/' + self.image_file)
-        self.starting_tile_pos = pos
-        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)
+        GameSprite.__init__(self, pos, **opts)
         self.floor_rect = Rect(self.collide_rect.topleft, (self.collide_rect.width, 2))
         self._layer = Layers.PLAYER
-        self.setup(**opts)
 
 
-    def setup(self):
-        pass
+    def collided_player(self):
+        print "%s collided with player" % self
 
 
-class NPC(Sprite):
+class NPC(GameSprite):
 
     image_file = None
     collision_layer = NPC_LAYER
@@ -49,43 +58,33 @@
 
     debug_color = (240, 240, 240)
 
-    block = True
+    block = False
 
     def __init__(self, pos, **opts):
-        Sprite.__init__(self)
-        self.image = data.load_image('sprites/' + self.image_file)
-        self.starting_tile_pos = pos
-        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)
+        GameSprite.__init__(self, pos, **opts)
         self._layer = Layers.PLAYER
-        self.setup(**opts)
+
 
     def setup(self, name, world, dsm):
         self.dsm = dialogue.DSM(name, world, dsm)
 
 
-class Projectile(Sprite):
+class Projectile(GameSprite):
     gravitates = False
 
 
-class Item(Sprite):
+class Item(GameSprite):
     mobile = False
     gravitates = False
 
-    image_file = None
     collision_layer = MONSTER_LAYER
     collides_with = set([PC_LAYER])
 
     portable = True
 
     def __init__(self, pos, **opts):
-        Sprite.__init__(self)
-        self.image = data.load_image('sprites/' + self.image_file)
-        self.starting_tile_pos = pos
-        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)
+        GameSprite.__init__(self, pos, **opts)
         self._layer = Layers.PLAYER
-        self.setup(**opts)
 
 
     def setup(self, name, world):
@@ -98,6 +97,10 @@
         return (0, 0, 240)
 
 
+    def collided_player(self):
+        print "Player touched %s" % self
+
+
 class Geography(Sprite):
     mobile = False
     gravitates = False