# HG changeset patch # User Jeremy Thurgood # Date 1302122555 -7200 # Node ID a11325bc5ff08ab5580cdd4be4540fd96a8bf5f2 # Parent e27c45d38605c51f287029b37166c3faf799f1bd Sprite refactoring stuff. diff -r e27c45d38605 -r a11325bc5ff0 skaapsteker/sprites/base.py --- 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 diff -r e27c45d38605 -r a11325bc5ff0 skaapsteker/sprites/enemies.py --- a/skaapsteker/sprites/enemies.py Wed Apr 06 22:32:58 2011 +0200 +++ b/skaapsteker/sprites/enemies.py Wed Apr 06 22:42:35 2011 +0200 @@ -6,5 +6,3 @@ def setup(self, direction): self.facing = direction - - diff -r e27c45d38605 -r a11325bc5ff0 skaapsteker/sprites/player.py --- a/skaapsteker/sprites/player.py Wed Apr 06 22:32:58 2011 +0200 +++ b/skaapsteker/sprites/player.py Wed Apr 06 22:42:35 2011 +0200 @@ -134,11 +134,13 @@ self._collisions_seen = 0 else: self._collisions_seen += 1 + if hasattr(other, 'collided_player'): + other.collided_player() def set_pos(self, pos): self.starting_tile_pos = pos - self.rect.midbottom = pos[0] * TILE_SIZE[0] + self.rect_offset[0], pos[1] * TILE_SIZE[1] + self.rect_offset[1] + self.rect.midbottom = pos[0] * TILE_SIZE[0] + self.rect_offset[0], (pos[1] + 1) * TILE_SIZE[1] + self.rect_offset[1] self.collide_rect.midbottom = pos[0] * TILE_SIZE[0], pos[1] * TILE_SIZE[1] def action_left(self):