Mercurial > mamba
comparison mamba/habitats/editor.py @ 275:51bec5e6191e
Rework selecting tilesets
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Thu, 15 Sep 2011 17:41:12 +0200 |
parents | a061dd62127c |
children | 9c57025781e7 |
comparison
equal
deleted
inserted
replaced
274:b970f717479b | 275:51bec5e6191e |
---|---|
9 from mamba.widgets.imagebutton import ImageButtonWidget | 9 from mamba.widgets.imagebutton import ImageButtonWidget |
10 #from mamba.widgets.messagebox import MessageBox | 10 #from mamba.widgets.messagebox import MessageBox |
11 from mamba.widgets.entrybox import EntryBox | 11 from mamba.widgets.entrybox import EntryBox |
12 from mamba.widgets.listbox import ListBox | 12 from mamba.widgets.listbox import ListBox |
13 from mamba.widgets.toollist import ToolListWidget | 13 from mamba.widgets.toollist import ToolListWidget |
14 from mamba.level import Level, TILE_MAP, THING_MAP | 14 from mamba.level import Level, Tileset, TILE_MAP, THING_MAP |
15 from mamba.data import check_level_exists, list_levels | 15 from mamba.data import check_level_exists, list_levels, list_tilesets |
16 from mamba.constants import (SCREEN, EDIT_SCREEN, NAME, ESCAPE_KEYS, | 16 from mamba.constants import (SCREEN, EDIT_SCREEN, NAME, ESCAPE_KEYS, |
17 RESERVED_NAMES) | 17 RESERVED_NAMES) |
18 | 18 |
19 MAX_TOOLS = 6 | 19 MAX_TOOLS = 6 |
20 | 20 |
75 self.container.add(levelname) | 75 self.container.add(levelname) |
76 button_height += levelname.rect.height + button_padding | 76 button_height += levelname.rect.height + button_padding |
77 | 77 |
78 tilesetname = TextButton((button_left, button_height), | 78 tilesetname = TextButton((button_left, button_height), |
79 'Tileset: %s' % self.level.tileset.name, color='white') | 79 'Tileset: %s' % self.level.tileset.name, color='white') |
80 tilesetname.add_callback('clicked', self.do_edit, 'Edit Tileset', | 80 tilesetname.add_callback('clicked', self.list_tilesets) |
81 self.level.tileset.name, self.check_tileset) | |
82 self.container.add(tilesetname) | 81 self.container.add(tilesetname) |
83 button_height += tilesetname.surface.get_height() + button_padding | 82 button_height += tilesetname.surface.get_height() + button_padding |
84 # TODO: Add Image widget for the current tool | 83 # TODO: Add Image widget for the current tool |
85 self.current_tool = TextWidget((button_left, button_height), | 84 self.current_tool = TextWidget((button_left, button_height), |
86 'Tool: Floor', color='white') | 85 'Tool: Floor', color='white') |
206 self.level.name = new_name | 205 self.level.name = new_name |
207 self.clear_toolbar() | 206 self.clear_toolbar() |
208 self.setup_toolbar() | 207 self.setup_toolbar() |
209 return True | 208 return True |
210 | 209 |
211 def check_tileset(self, new_name): | 210 def list_tilesets(self, ev, widget): |
212 return False | 211 tilesets = list_tilesets() |
212 load_list = [] | |
213 for name in tilesets: | |
214 if name == 'common': | |
215 continue | |
216 load_button = TextButton((0, 0), name) | |
217 load_button.add_callback('clicked', self.change_tileset, name) | |
218 load_list.append(load_button) | |
219 load_dialog = ListBox((200, 200), 'Select Level', load_list) | |
220 self.container.add(load_dialog) | |
221 load_dialog.grab_focus() | |
222 | |
223 def change_tileset(self, ev, widget, new_name): | |
224 self.level.tileset = Tileset(new_name) | |
225 self.level.update_tiles_ascii() | |
226 self.level.restart() | |
227 self.clear_toolbar() | |
228 self.setup_toolbar() | |
229 return True | |
213 | 230 |
214 def check_file(self, new_name): | 231 def check_file(self, new_name): |
215 if new_name == self.level.level_name: | 232 if new_name == self.level.level_name: |
216 return True # No-op change | 233 return True # No-op change |
217 if check_level_exists(new_name): | 234 if check_level_exists(new_name): |