# HG changeset patch # User Neil Muller # Date 1316002117 -7200 # Node ID d9ee0e50a78f0590ba339255aeb8e896dfcb8188 # Parent 79fdae806ca572deac6fbdb29f0052618ff960bb Teach editor about THING_MAP diff -r 79fdae806ca5 -r d9ee0e50a78f mamba/habitats/editor.py --- a/mamba/habitats/editor.py Wed Sep 14 14:08:14 2011 +0200 +++ b/mamba/habitats/editor.py Wed Sep 14 14:08:37 2011 +0200 @@ -7,7 +7,7 @@ from mamba.widgets.level import EditLevelWidget from mamba.widgets.text import TextWidget, TextButton from mamba.widgets.imagebutton import ImageButtonWidget -from mamba.level import Level, TILE_MAP +from mamba.level import Level, TILE_MAP, THING_MAP from mamba.constants import SCREEN, EDIT_SCREEN, NAME, ESCAPE_KEYS @@ -18,6 +18,7 @@ self.edit_widget = EditLevelWidget(self.level) self.container.add(self.edit_widget) self.container.add_callback(KEYDOWN, self.keydown_event) + self.mode = 'Tile' def on_enter(self): # We need to juggle the display to the correct size @@ -47,7 +48,13 @@ """Draw the editor toolbar""" button_height = 20 button_left = 820 - button_padding = 10 + button_padding = 5 + + filename = TextWidget( + (button_left, button_height), + 'File: %s' % self.level.level_name, color='white') + self.container.add(filename) + button_height += filename.surface.get_height() + button_padding levelname = TextWidget( (button_left, button_height), @@ -74,7 +81,13 @@ '.', 'Floor') self.edit_widget.set_tool('.') button_height += floor_button.surface.get_height() + button_padding - for tile_char in TILE_MAP: + if self.mode == 'Tile': + tile_map = TILE_MAP + change_mode_text = 'Switch to Things' + elif self.mode == 'Thing': + tile_map = THING_MAP + change_mode_text = 'Switch to Tiles' + for tile_char in tile_map: try: tile = self.level.tileset[tile_char] except pygame.error: @@ -95,6 +108,14 @@ button_height += \ tile_button.surface.get_height() + button_padding button_height += 10 + + mode_button = TextButton((button_left, button_height), + change_mode_text) + mode_button.add_callback('clicked', self.change_toolbar) + self.container.add(mode_button) + button_height += mode_button.surface.get_height() + button_padding + button_height += 10 + save_button = TextButton((button_left, button_height), "Save Level") save_button.add_callback('clicked', self.save) self.container.add(save_button) @@ -106,3 +127,17 @@ def save(self, ev, widget): self.level.save_level() + + def change_toolbar(self, ev, widget): + if self.mode == 'Tile': + self.mode = 'Thing' + elif self.mode == 'Thing': + self.mode = 'Tile' + self.clear_toolbar() + self.setup_toolbar() + + def clear_toolbar(self): + """Remove every non-edit widget from the container""" + for widget in self.container.children[:]: + if widget is not self.edit_widget: + self.container.remove(widget) diff -r 79fdae806ca5 -r d9ee0e50a78f mamba/sprites.py --- a/mamba/sprites.py Wed Sep 14 14:08:14 2011 +0200 +++ b/mamba/sprites.py Wed Sep 14 14:08:37 2011 +0200 @@ -81,6 +81,7 @@ tileset = 'common' variants_class = InvariantSpriteImageVariants variants = None + name = None def __init__(self, tileset=None, image_name=None, name=None, mutators=()): @@ -122,7 +123,6 @@ class SingleImageTileSprite(TileSprite): image_name = None # subclasses will override this - name = None def __init__(self, **kw): kw.setdefault('image_name', self.image_name)