# HG changeset patch # User Stefano Rivera # Date 1301938460 -7200 # Node ID b502e732f8212cddaf96acab7167c3f3d7c1efd4 # Parent 3eafceff629305723ce97c88842d3b91d525fa37 Add ? object-placement-help tiles diff -r 3eafceff6293 -r b502e732f821 data/levels/level1.json --- 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", diff -r 3eafceff6293 -r b502e732f821 data/levels/level2.json --- 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", diff -r 3eafceff6293 -r b502e732f821 scripts/level-editor --- 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] diff -r 3eafceff6293 -r b502e732f821 skaapsteker/level.py --- 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())