Mercurial > skaapsteker
changeset 28:94d5ebaa912f
Example for global sprite importing.
author | Simon Cross <hodgestar@gmail.com> |
---|---|
date | Sun, 03 Apr 2011 18:41:52 +0200 |
parents | b14c09695456 |
children | 10c067be3e8f |
files | data/levels/level1.json skaapsteker/level.py skaapsteker/sprites/base.py |
diffstat | 3 files changed, 21 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/data/levels/level1.json Sun Apr 03 18:16:03 2011 +0200 +++ b/data/levels/level1.json Sun Apr 03 18:41:52 2011 +0200 @@ -19,5 +19,8 @@ ], "enemies": [ {"type": "Dummy", "pos": [2, 2], "direction": "left" } + ], + "sprites": [ + {"type": "enemies.Dummy", "pos": [2, 2], "direction": "left" } ] }
--- a/skaapsteker/level.py Sun Apr 03 18:16:03 2011 +0200 +++ b/skaapsteker/level.py Sun Apr 03 18:41:52 2011 +0200 @@ -4,6 +4,7 @@ import data from sprites import enemies +from sprites.base import find_sprite TILE_SIZE = (64, 64) @@ -42,6 +43,7 @@ self.build_background() self.build_tiles() self.setup_enemies() + self.setup_sprites() def build_background(self): @@ -64,6 +66,11 @@ for enemy in self.level_data['enemies']: self.enemies.append(enemies.get_enemy(enemy)) + def setup_sprites(self): + self.sprites = [] + for sprite_desc in self.level_data['sprites']: + self.sprites.append(find_sprite(sprite_desc)) + print self.sprites def tile_pos(self, x, y): return (x * TILE_SIZE[0], y * TILE_SIZE[1])
--- a/skaapsteker/sprites/base.py Sun Apr 03 18:16:03 2011 +0200 +++ b/skaapsteker/sprites/base.py Sun Apr 03 18:41:52 2011 +0200 @@ -34,3 +34,14 @@ class Geography(Sprite): mobile = False gravitates = False + + +def find_sprite(descr): + """Create a sprite object from a dictionary describing it.""" + descr = descr.copy() + stype = descr.pop("type") + mod_name, cls_name = stype.rsplit(".", 1) + mod_name = ".".join(["skaapsteker.sprites", mod_name]) + mod = __import__(mod_name, fromlist=[cls_name]) + cls = getattr(mod, cls_name) + return cls(**descr)