+
+ def fail(self):
+ sound.play_sound('error.ogg')
+ InvalidateTheWorld.post()
+
+ def succeed(self):
+ raise NotImplementedError("Success not implemented.")
+
+ def perform_action(self, slot_num):
+ raise NotImplementedError("Nothing to see here.")
+
+
+class SaveGameScene(LoadSaveGameBase):
+ def perform_action(self, slot_num):
+ try:
+ SaveGameSlot(slot_num).save(self.state)
+ except Exception as e:
+ print "Error saving game in slot %s: %s" % (slot_num, e)
+ self.fail()
+ else:
+ self.succeed()
+
+ def succeed(self):
+ from naja.scenes.menu import MenuScene
+ sound.play_sound('chirp.ogg', volume=0.5)
+ SceneChangeEvent.post(MenuScene)
+
+
+class LoadGameScene(LoadSaveGameBase):
+ def perform_action(self, slot_num):
+ state = SaveGameSlot(slot_num).load()
+ if state is not None:
+ LoadGameEvent.post(state)
+ self.succeed()
+ else:
+ self.fail()
+
+ def succeed(self):
+ from naja.scenes.game import GameScene
+ sound.play_sound('chirp.ogg', volume=0.5)
+ SceneChangeEvent.post(GameScene)