changeset 65:bcf3d0b2a6d8

Some tile parameters.
author Jeremy Thurgood <firxen@gmail.com>
date Sun, 03 Apr 2011 22:46:25 +0200
parents 13b9031febeb
children 12ec95a2e8ea
files skaapsteker/level.py
diffstat 1 files changed, 27 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/skaapsteker/level.py	Sun Apr 03 22:38:10 2011 +0200
+++ b/skaapsteker/level.py	Sun Apr 03 22:46:25 2011 +0200
@@ -13,33 +13,38 @@
 class TileSet(object):
     def __init__(self, dirname):
         self.dirname = 'tiles/' + dirname
+        self.tile_factories = {
+            '.': lambda pos: None,
+            '-': self.tile_factory('floor.png', True),
+            'X': self.tile_factory('solid.png', True, True),
+            '<': self.tile_factory('floor-cap-w.png', True),
+            '>': self.tile_factory('floor-cap-e.png', True),
+            '=': self.tile_factory('floor-cnr-l.png'),
+            '+': self.tile_factory('floor-cnr-r.png'),
+            '(': self.tile_factory('solid-cap-w.png', True, True),
+            ')': self.tile_factory('solid-cap-e.png', True, True),
+            'q': self.tile_factory('solid-cap-ne.png', True, True),
+            'd': self.tile_factory('solid-cap-se.png', True, True),
+            'p': self.tile_factory('solid-cap-nw.png', True, True),
+            'b': self.tile_factory('solid-cap-sw.png', True, True),
+            '{': self.tile_factory('solid-cnr-l.png'),
+            '}': self.tile_factory('solid-cnr-r.png'),
+            }
 
 
     def get_tile(self, tilechar, pos):
-        if tilechar == '.':
-            return None
-        return Geography(pos, self.get_image(tilechar))
+        return self.tile_factories[tilechar](pos)
 
 
-    def get_image(self, tilechar):
-        image_name = {
-            '-': 'floor.png',
-            'X': 'solid.png',
-            '<': 'floor-cap-w.png',
-            '>': 'floor-cap-e.png',
-            '=': 'floor-cnr-l.png',
-            '+': 'floor-cnr-r.png',
-            '(': 'solid-cap-w.png',
-            ')': 'solid-cap-e.png',
-            'q': 'solid-cap-ne.png',
-            'd': 'solid-cap-se.png',
-            'p': 'solid-cap-nw.png',
-            'b': 'solid-cap-sw.png',
-            '{': 'solid-cnr-l.png',
-            '}': 'solid-cnr-r.png',
-            }[tilechar]
-        image_file = self.dirname + '/' + image_name
-        return data.load_image(image_file)
+    def tile_factory(self, image_name, floor=False, block=False, foreground=False):
+        image = data.load_image(self.dirname + '/' + image_name)
+        def _tilefac(pos):
+            tile = Geography(pos, image)
+            tile.block = block
+            tile.floor = floor
+            tile.foreground = foreground
+            return tile
+        return _tilefac