diff mamba/habitats/editor.py @ 180:d9ee0e50a78f

Teach editor about THING_MAP
author Neil Muller <drnlmuller@gmail.com>
date Wed, 14 Sep 2011 14:08:37 +0200
parents b498f76a455f
children b0ef7eecc67a
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)