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)