Mercurial > skaapsteker
changeset 25:fe87d828d093
Very basic enemy support.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Sun, 03 Apr 2011 18:04:36 +0200 |
parents | 3d70de522b11 |
children | c0545443e242 |
files | data/levels/level1.json skaapsteker/level.py skaapsteker/sprites/base.py skaapsteker/sprites/enemies.py |
diffstat | 4 files changed, 35 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/data/levels/level1.json Sun Apr 03 18:03:03 2011 +0200 +++ b/data/levels/level1.json Sun Apr 03 18:04:36 2011 +0200 @@ -63,5 +63,8 @@ "..........................................................................", "..XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..", ".........................................................................." + ], + "enemies": [ + {"type": "Dummy", "pos": [2, 2], "direction": "left" } ] } \ No newline at end of file
--- a/skaapsteker/level.py Sun Apr 03 18:03:03 2011 +0200 +++ b/skaapsteker/level.py Sun Apr 03 18:04:36 2011 +0200 @@ -3,6 +3,7 @@ from pygame import Rect, Surface, constants import data +from sprites import enemies TILE_SIZE = (64, 64) @@ -40,6 +41,7 @@ self.level_data = json.loads(data.load('levels/' + leveldef + '.json').read()) self.build_background() self.build_tiles() + self.setup_enemies() def build_background(self): @@ -57,6 +59,12 @@ print "level:", self.level_size + def setup_enemies(self): + self.enemies = [] + for enemy in self.level_data['enemies']: + self.enemies.append(enemies.get_enemy(enemy)) + + def tile_pos(self, x, y): return (x * TILE_SIZE[0], y * TILE_SIZE[1])
--- a/skaapsteker/sprites/base.py Sun Apr 03 18:03:03 2011 +0200 +++ b/skaapsteker/sprites/base.py Sun Apr 03 18:04:36 2011 +0200 @@ -4,7 +4,14 @@ class Monster(Sprite): - pass + def __init__(self, pos, **opts): + Sprite.__init__(self) + self.starting_tile_pos = pos + self.setup(**opts) + + + def setup(self): + pass class NPC(Sprite):
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/skaapsteker/sprites/enemies.py Sun Apr 03 18:04:36 2011 +0200 @@ -0,0 +1,16 @@ +from base import Monster + + +def get_enemy(enemydef): + enemydef = enemydef.copy() + monster_class = enemydef.pop('type') + pos = enemydef.pop('pos') + return globals()[monster_class](pos, **enemydef) + + +class Dummy(Monster): + def setup(self, direction): + print "Dummy monster at %r, facing %s" % (self.starting_tile_pos, direction) + + +