changeset 101:b502e732f821

Add ? object-placement-help tiles
author Stefano Rivera <stefano@rivera.za.net>
date Mon, 04 Apr 2011 19:34:20 +0200
parents 3eafceff6293
children 2e913a89e69d
files data/levels/level1.json data/levels/level2.json scripts/level-editor skaapsteker/level.py
diffstat 4 files changed, 50 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/data/levels/level1.json	Mon Apr 04 19:20:05 2011 +0200
+++ b/data/levels/level1.json	Mon Apr 04 19:34:20 2011 +0200
@@ -5,9 +5,9 @@
     "tileset": "dummy",
     "tiles": [
         "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
-        "X{.....................................}X{..............................}X",
+        "X{.....?...............................}X{..............................}X",
         "X...1...................................X................................X",
-        "X.......................................bXXXd=-->........................X",
+        "X..?....................................bXXXd=-->........................X",
         "Xd=--------+XXXq.........................................................X",
         "X{..........XXXX.........................................................X",
         "X....-......XXXX=----------+XXXX=---------------------------------------+X",
--- a/data/levels/level2.json	Mon Apr 04 19:20:05 2011 +0200
+++ b/data/levels/level2.json	Mon Apr 04 19:34:20 2011 +0200
@@ -10,10 +10,10 @@
         "X............XX..........pq......pq.........XX.............XX........<+bXX",
         "X.........<+bXXd=>....<+bXXXXXXXXXXd=>...<+bXXd=>..........XX...........}X",
         "X...........................}XX{...........}bd{...<+bd=>...XXd=>.........X",
-        "X........pq......pq..........XX............................XX{........<+bX",
+        "X........pq..?...pq..........XX............................XX{........<+bX",
         "X.....<+bXXXXXXXXXXd=>...<+bXXX.........pq......pq......<+bXX...........}X",
         "X...........}XX{............}XX......<+bXXXXXXXXXXd=>.....}XXd=----->....X",
-        "X............XX..............XXd=>.........}XX{............XX{...........X",
+        "X..?.........XX..............XXd=>.........}XX{............XX{...........X",
         "XXXXd=>......XX......<---+bXXXX{.........<+bXX..........<+bXX............X",
         "X{...........XX.............}XX............}XX............}XXd=--->......X",
         "X............XXd=-->.........XXd=->.........XX.............XX{...........X",
--- a/scripts/level-editor	Mon Apr 04 19:20:05 2011 +0200
+++ b/scripts/level-editor	Mon Apr 04 19:34:20 2011 +0200
@@ -15,7 +15,7 @@
                            K_RIGHT, KMOD_SHIFT, K_q, K_ESCAPE)
 
 from skaapsteker.constants import SCREEN
-from skaapsteker.level import Level
+from skaapsteker.level import DebugLevel
 from skaapsteker.sprites.player import Player
 from skaapsteker.widgets.text import Text
 
@@ -25,7 +25,7 @@
     clock = pygame.time.Clock()
     screen_surface = pygame.display.get_surface()
     player = Player()
-    level = Level(levelname, player)
+    level = DebugLevel(levelname, player)
     level_surface = level.get_surface()
     position = [0, 0]
     fpss = [FRAMERATE]
--- a/skaapsteker/level.py	Mon Apr 04 19:20:05 2011 +0200
+++ b/skaapsteker/level.py	Mon Apr 04 19:34:20 2011 +0200
@@ -1,13 +1,14 @@
 import json
 
-from pygame import Rect, Surface
+from pygame import Rect, Surface, Color
 from pygame.sprite import LayeredUpdates
 from pygame.locals import SRCALPHA, HWSURFACE
 
-from skaapsteker import data
-from skaapsteker.constants import Layers
-from skaapsteker.sprites import enemies
-from skaapsteker.sprites.base import TILE_SIZE, find_sprite, Geography
+from . import data
+from .constants import Layers
+from .sprites import enemies
+from .sprites.base import TILE_SIZE, find_sprite, Geography
+from .widgets.text import Text
 
 
 
@@ -16,6 +17,7 @@
         self.dirname = 'tiles/' + dirname
         self.tile_factories = {
             '.': lambda pos: None,
+            '?': lambda pos: None, # Object placement helper
             '-': self.tile_factory('floor.png', True),
             'X': self.tile_factory('solid.png', True, True),
             '<': self.tile_factory('floor-cap-w.png', True),
@@ -128,3 +130,40 @@
 
     def draw(self, surface):
         self.draw_background(surface)
+
+
+
+class DebugLevel(Level):
+    """Used by level-editor"""
+    def build_tiles(self):
+        super(DebugLevel, self).build_tiles()
+        tile_data = self.level_data['tiles']
+        for y, row in enumerate(tile_data):
+            for x, char in enumerate(row):
+                if char == '?':
+                    self.check_debug_tile(x, y)
+
+
+    def check_debug_tile(self, x, y):
+        objects = []
+        objects += self.level_data.get('enemies', [])
+        objects += self.level_data.get('sprites', [])
+        if 'player' in self.level_data:
+            objects.append(self.level_data['player'])
+
+        for object_ in objects:
+            if [x, y] == object_['pos']:
+                break
+        else:
+            tile = self.get_debug_tile(x, y)
+            print "Debug tile at (%i, %i)" % (x, y)
+            self.tiles.add(tile)
+            self.sprites.add(tile)
+
+
+    def get_debug_tile(self, x, y):
+        surface = Surface((64, 64))
+        surface.fill(Color('black'))
+        text = Text("? Tile at\n(%i, %i)" % (x, y), (2, 2), size=14, color='white')
+        text.draw(surface)
+        return Geography((x, y), surface.convert_alpha())