Changeset 252:73d6abf5ba22
- Timestamp:
- 09/04/13 21:53:34 (9 years ago)
- Branch:
- default
- Phase:
- public
- Rebase:
- 36383961343138333732653933646262636662333834643332386632666339643938636561623063
- Location:
- nagslang
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
nagslang/engine.py
r238 r252 24 24 'level2': AreaScreen, 25 25 } 26 self._world.load() 26 27 self.change_screen('menu', None) 27 28 # Dummy resize event, to force us to realise our real size … … 48 49 self._surface = pygame.display.get_surface() 49 50 elif ScreenChange.matches(ev): 51 self._world.save() 50 52 self._surface.fill(pygame.color.Color(0, 0, 0)) 51 53 self.change_screen(ev.screen, ev.player) -
nagslang/screens/menu.py
r238 r252 15 15 self.cursor_pos = 0 16 16 self.options = [ 17 self. new_game,18 self. load_game,17 self.play, 18 self.restart, 19 19 self.quit, 20 20 ] 21 21 self.widgets = [ 22 22 TextWidget((10, 10), 'Menu', fontsize=20), 23 TextWidget((40, 50), ' Start newgame'),24 TextWidget((40, 70), ' Restore saved game'),23 TextWidget((40, 50), 'Play the game'), 24 TextWidget((40, 70), 'Start the game from the beginning again'), 25 25 TextWidget((40, 90), 'Quit'), 26 26 MultiLineWidget((60, 120), self.world.get_formatted_stats()), … … 46 46 widget.draw(surface) 47 47 48 def new_game(self):48 def play(self): 49 49 ScreenChange.post('level1', None) 50 50 51 def load_game(self): 52 raise NotImplementedError() 51 def restart(self): 52 self.world.reset() 53 self.setup() 53 54 54 55 def quit(self): -
nagslang/world.py
r238 r252 2 2 # 3 3 # This is a global object for tracking state across scenes and all that 4 5 import os 6 import sys 7 8 from nagslang.yamlish import dump, load 4 9 5 10 … … 7 12 8 13 def __init__(self): 14 self.reset() 15 16 def reset(self): 9 17 self.transformations = 0 10 18 self.kills = 0 11 19 self.rooms = 0 12 20 21 def _save_location(self): 22 app = 'nagslang' 23 if sys.platform.startswith('win'): 24 if 'APPDATA' in os.environ: 25 return os.path.join(os.environ['APPDATA'], app) 26 return os.path.join(os.path.expanduser('~'), '.' + app) 27 elif 'XDG_DATA_HOME' in os.environ: 28 return os.path.join(os.environ['XDG_DATA_HOME'], app) 29 return os.path.join(os.path.expanduser('~'), '.local', 'share', app) 30 13 31 def save(self): 14 # TODO: Do this 15 pass 32 data = {} 33 for attr in dir(self): 34 if attr.startswith('_'): 35 continue 36 value = getattr(self, attr) 37 if hasattr(value, '__name__'): 38 continue 39 data[attr] = value 40 41 fn = self._save_location() 42 if not os.path.isdir(os.path.dirname(fn)): 43 os.makedirs(os.path.dirname(fn)) 44 with open(fn, 'w') as f: 45 dump(data, f) 16 46 17 47 def load(self): 18 # TODO: Do this 19 pass 48 fn = self._save_location() 49 if not os.path.exists(fn): 50 return False 51 with open(fn) as f: 52 data = load(f) 53 for k, v in data.iteritems(): 54 setattr(self, k, v) 55 return True 20 56 21 57 def get_formatted_stats(self): … … 24 60 "Enemies killed: %d" % self.kills, 25 61 "Rooms entered: %d" % self.rooms 26 62 ])
Note:
See TracChangeset
for help on using the changeset viewer.