# HG changeset patch # User Stefano Rivera # Date 1316210014 -7200 # Node ID d4062344d8f446167c1994b1e1a49e6e4318e0f7 # Parent bac829cccd351a406b596b23306a9a8b4cdaaebd Level namespaces (for telling that a level is complete, no matter where it came from) diff -r bac829cccd35 -r d4062344d8f4 mamba/__main__.py --- a/mamba/__main__.py Fri Sep 16 23:53:49 2011 +0200 +++ b/mamba/__main__.py Fri Sep 16 23:53:34 2011 +0200 @@ -32,9 +32,10 @@ load_levels() if options.edit: - start = EditorHabitat(Level(options.level)) + start = EditorHabitat(Level(options.level, 'official')) elif options.level is not None: - start = LevelHabitat(Level(options.level), LevelMenu.go_menu) + start = LevelHabitat(Level(options.level, 'official'), + LevelMenu.go_menu) else: start = MainMenu() diff -r bac829cccd35 -r d4062344d8f4 mamba/gamestate.py --- a/mamba/gamestate.py Fri Sep 16 23:53:49 2011 +0200 +++ b/mamba/gamestate.py Fri Sep 16 23:53:34 2011 +0200 @@ -14,7 +14,6 @@ def level_done(level_name): - assert level_name in levels done_levels.add(level_name) save_state() diff -r bac829cccd35 -r d4062344d8f4 mamba/habitats/editor.py --- a/mamba/habitats/editor.py Fri Sep 16 23:53:49 2011 +0200 +++ b/mamba/habitats/editor.py Fri Sep 16 23:53:34 2011 +0200 @@ -230,7 +230,7 @@ def load_level(self, ev, widget, level_name): try: - new_level = Level(level_name) + new_level = Level(level_name, 'official') except (IOError, InvalidMapError, pygame.error), error: message = MessageBox((300, 300), 'Loading Level Failed: %s' % error, color='red') diff -r bac829cccd35 -r d4062344d8f4 mamba/habitats/level.py --- a/mamba/habitats/level.py Fri Sep 16 23:53:49 2011 +0200 +++ b/mamba/habitats/level.py Fri Sep 16 23:53:34 2011 +0200 @@ -32,5 +32,5 @@ self.go_menu) self.container.add(messagebox) messagebox.grab_focus() - level_done(self.world.level.level_name) + level_done(self.world.level.unique_name()) return True diff -r bac829cccd35 -r d4062344d8f4 mamba/habitats/levelmenu.py --- a/mamba/habitats/levelmenu.py Fri Sep 16 23:53:49 2011 +0200 +++ b/mamba/habitats/levelmenu.py Fri Sep 16 23:53:34 2011 +0200 @@ -12,6 +12,8 @@ class LevelMenu(Habitat): + level_namespace = 'official' + def __init__(self): super(LevelMenu, self).__init__() self.level_buttons = {} @@ -22,7 +24,7 @@ level = self.get_level(name) button = LevelButton((20 + 120 * (i % WIDTH), 20 + 120 * (i // WIDTH)), - level, done=name in done_levels) + level) button.add_callback('clicked', self.level_selected, name) container.add(button) self.level_buttons[name] = button @@ -34,11 +36,11 @@ return levels def get_level(self, name): - return Level(name) + return Level(name, self.level_namespace) def update_buttons(self): - for name, button in self.level_buttons.iteritems(): - button.done = name in done_levels + for button in self.level_buttons.itervalues(): + button.done = button.level.unique_name() in done_levels def level_selected(self, ev, widget, name): from mamba.habitats.level import LevelHabitat diff -r bac829cccd35 -r d4062344d8f4 mamba/habitats/mainmenu.py --- a/mamba/habitats/mainmenu.py Fri Sep 16 23:53:49 2011 +0200 +++ b/mamba/habitats/mainmenu.py Fri Sep 16 23:53:34 2011 +0200 @@ -47,7 +47,7 @@ def edit_event(self, ev, widget): from mamba.habitats.editor import EditorHabitat - NewHabitatEvent.post(EditorHabitat(Level('dev'))) + NewHabitatEvent.post(EditorHabitat(Level('dev', 'official'))) return True def quit_keydown_event(self, ev, widget): diff -r bac829cccd35 -r d4062344d8f4 mamba/habitats/userlevelmenu.py --- a/mamba/habitats/userlevelmenu.py Fri Sep 16 23:53:49 2011 +0200 +++ b/mamba/habitats/userlevelmenu.py Fri Sep 16 23:53:34 2011 +0200 @@ -9,6 +9,7 @@ class UserLevelMenu(LevelMenu): + level_namespace = 'curated' LEVEL_SERVER_URL = LEVEL_SERVER + "curated/" TIMEOUT = 5.0 # in seconds CACHE = {} @@ -30,7 +31,7 @@ for name in levels: try: source = cls._url_data("level/%s" % name) - level = Level(name, source) + level = Level(name, cls.level_namespace, source) except: print "Failed to download online level %r" % name continue diff -r bac829cccd35 -r d4062344d8f4 mamba/level.py --- a/mamba/level.py Fri Sep 16 23:53:49 2011 +0200 +++ b/mamba/level.py Fri Sep 16 23:53:34 2011 +0200 @@ -89,8 +89,9 @@ class Level(object): - def __init__(self, level_name, source=None): + def __init__(self, level_name, level_namespace, source=None): self.level_name = level_name + self.level_namespace = level_namespace self.source = source self.load_level_data() @@ -131,6 +132,9 @@ for sprite_ascii in self.sprites_ascii: save_file.write('%s\n' % sprite_ascii) + def unique_name(self): + return '/'.join((self.level_namespace, self.level_name)) + def update_tiles_ascii(self): """Resync tiles and tile_ascii""" for i, tile_row in enumerate(self.tiles):