# HG changeset patch # User Neil Muller # Date 1316197862 -7200 # Node ID 00c36ff53de9a66464d5c312d601d4d17a3f8a41 # Parent ffec90bda89dfc47fa54bd2ea81674dc86e6b3b2 Teach editor about background tracks diff -r ffec90bda89d -r 00c36ff53de9 mamba/data.py --- a/mamba/data.py Fri Sep 16 20:30:12 2011 +0200 +++ b/mamba/data.py Fri Sep 16 20:31:02 2011 +0200 @@ -70,11 +70,16 @@ return os.path.isfile(os.path.join(data_dir, 'levels', '%s.txt' % level)) -def list_levels(): +def get_level_list(): files = [os.path.splitext(x) for x in os.listdir(filepath('levels'))] return [x[0] for x in files if x[1] == '.txt'] -def list_tilesets(): +def get_tileset_list(): tiles = os.listdir(filepath('tiles')) return [x for x in tiles if check_tileset_legal(x)] + + +def get_track_list(): + tracks = os.listdir(filepath('music')) + return [x for x in tracks if os.path.splitext(x)[1] == '.ogg'] diff -r ffec90bda89d -r 00c36ff53de9 mamba/habitats/editor.py --- a/mamba/habitats/editor.py Fri Sep 16 20:30:12 2011 +0200 +++ b/mamba/habitats/editor.py Fri Sep 16 20:31:02 2011 +0200 @@ -12,7 +12,8 @@ from mamba.widgets.listbox import ListBox from mamba.widgets.toollist import ToolListWidget from mamba.level import Level, Tileset, TILE_MAP, THING_MAP, InvalidMapError -from mamba.data import check_level_exists, list_levels, list_tilesets +from mamba.data import (check_level_exists, get_level_list, get_tileset_list, + get_track_list) from mamba.constants import (SCREEN, EDIT_SCREEN, NAME, ESCAPE_KEYS, RESERVED_NAMES) @@ -82,6 +83,11 @@ tilesetname.add_callback('clicked', self.list_tilesets) self.container.add(tilesetname) button_height += tilesetname.surface.get_height() + button_padding + trackname = TextButton((button_left, button_height), + 'Music: %s' % self.level.background_track, color='white') + trackname.add_callback('clicked', self.list_tracks) + self.container.add(trackname) + button_height += trackname.surface.get_height() + button_padding # TODO: Add Image widget for the current tool if self.mode != 'Sprites': self.current_tool = TextWidget((button_left, button_height), @@ -197,7 +203,7 @@ self.load_level(ev, widget, 'blank') def load(self, ev, widget): - levels = list_levels() + levels = get_level_list() load_list = [] for level_name in levels: if level_name in RESERVED_NAMES: @@ -250,7 +256,7 @@ return True def list_tilesets(self, ev, widget): - tilesets = list_tilesets() + tilesets = get_tileset_list() load_list = [] for name in tilesets: if name == 'common': @@ -262,6 +268,18 @@ self.container.add(load_dialog) load_dialog.grab_focus() + def list_tracks(self, ev, widget): + tracks = get_track_list() + load_list = [] + for name in tracks: + load_button = TextButton((0, 0), name) + load_button.add_callback('clicked', self.change_track, name) + load_list.append(load_button) + load_dialog = ListBox((200, 200), 'Select Level', load_list, 6) + self.container.add(load_dialog) + load_dialog.grab_focus() + return True + def change_tileset(self, ev, widget, new_name): self.level.update_tiles_ascii() old_tileset = self.level.tileset @@ -280,6 +298,12 @@ self.setup_toolbar() return True + def change_track(self, ev, widget, new_name): + self.level.background_track = new_name + self.clear_toolbar() + self.setup_toolbar() + return True + def refresh_display(self): self.level.restart() self.clear_toolbar()