diff mamba/habitats/editor.py @ 172:dabf13abb3fd

Add basic drawing to level editor
author Neil Muller <drnlmuller@gmail.com>
date Wed, 14 Sep 2011 00:51:41 +0200
parents 77f1dae64019
children 893fb9f8f468
line wrap: on
line diff
--- a/mamba/habitats/editor.py	Tue Sep 13 23:52:39 2011 +0200
+++ b/mamba/habitats/editor.py	Wed Sep 14 00:51:41 2011 +0200
@@ -15,7 +15,8 @@
     def __init__(self, level_name):
         super(EditorHabitat, self).__init__(EDIT_SCREEN)
         self.level = Level(level_name)
-        self.container.add(EditLevelWidget(self.level))
+        self.edit_widget = EditLevelWidget(self.level)
+        self.container.add(self.edit_widget)
         self.container.add_callback(KEYDOWN, self.keydown_event)
 
     def on_enter(self):
@@ -47,6 +48,7 @@
         button_height = 20
         button_left = 820
         button_padding = 10
+
         levelname = TextWidget(
                 (button_left, button_height),
                 'Level: %s' % self.level.name, color='white')
@@ -58,10 +60,18 @@
                 'Tileset: %s' % self.level.tileset.name, color='white')
         self.container.add(tilesetname)
         button_height += tilesetname.surface.get_height() + button_padding
+        # TODO: Add Image widget for the current tool
+        self.current_tool = TextWidget((button_left, button_height),
+                'Tool: Floor', color='white')
+        self.container.add(self.current_tool)
+        button_height += self.current_tool.surface.get_height()
+        button_height += button_padding
         floor_button = ImageButtonWidget(
                 (button_left, button_height), self.level.tileset.floor,
                 'Floor', color='white')
         self.container.add(floor_button)
+        floor_button.add_callback('clicked', self.change_tool,
+                '.', 'Floor')
         button_height += floor_button.surface.get_height() + button_padding
         for tile_char in TILE_MAP:
             try:
@@ -78,6 +88,13 @@
             tile_button = ImageButtonWidget(
                     (button_left, button_height), tile.image,
                     text, color='white')
+            tile_button.add_callback('clicked', self.change_tool,
+                    tile_char, text)
             self.container.add(tile_button)
             button_height += \
                     tile_button.surface.get_height() + button_padding
+
+    def change_tool(self, ev, widget, new_tool, text):
+        self.edit_widget.set_tool(new_tool)
+        self.current_tool.text = 'Tool: %s' % text
+        self.current_tool.prepare()