changeset 180:d9ee0e50a78f

Teach editor about THING_MAP
author Neil Muller <drnlmuller@gmail.com>
date Wed, 14 Sep 2011 14:08:37 +0200
parents 79fdae806ca5
children 061d711ba570
files mamba/habitats/editor.py mamba/sprites.py
diffstat 2 files changed, 39 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- 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)
--- 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)