def end(self): self.log.debug("Ending session") self.is_alive = False # Has to be done here, cause the manager uses Scheduler! Scheduler().rem_all_classinst_calls(self) ExtScheduler().rem_all_classinst_calls(self) horizons.globals.fife.sound.end() # these will call end() if the attribute still exists by the LivingObject magic self.ingame_gui = None # keep this before world self.world.end() # must be called before the world ref is gone self.world = None self.view = None self.manager = None self.timer = None self.scenario_eventhandler = None Scheduler().end() Scheduler.destroy_instance() self.selected_instances = None self.selection_groups = None horizons.main._modules.session = None self._clear_caches() # subscriptions shouldn't survive listeners (except the main Gui) self.gui.unsubscribe() SettingChanged.unsubscribe(self._on_setting_changed) MessageBus().reset() self.gui.subscribe()
def end(self): self.log.debug("Ending session") self.is_alive = False # Has to be done here, cause the manager uses Scheduler! Scheduler().rem_all_classinst_calls(self) ExtScheduler().rem_all_classinst_calls(self) horizons.globals.fife.sound.end() # these will call end() if the attribute still exists by the LivingObject magic self.ingame_gui = None # keep this before world if hasattr(self, 'world'): # must be called before the world ref is gone, but may not exist yet while loading self.world.end() self.world = None self.view = None self.manager = None self.timer = None self.scenario_eventhandler = None Scheduler().end() Scheduler.destroy_instance() self.selected_instances = None self.selection_groups = None self._clear_caches() # discard() in case loading failed and we did not yet subscribe SettingChanged.discard(self._on_setting_changed) MessageBus().reset()
def end(self): self.log.debug("Ending session") self.is_alive = False # Has to be done here, cause the manager uses Scheduler! Scheduler().rem_all_classinst_calls(self) ExtScheduler().rem_all_classinst_calls(self) horizons.globals.fife.sound.end() # these will call end() if the attribute still exists by the LivingObject magic self.ingame_gui = None # keep this before world if hasattr(self, 'world'): # must be called before the world ref is gone, but may not exist yet while loading self.world.end() self.world = None self.view = None self.manager = None self.timer = None self.scenario_eventhandler = None Scheduler().end() Scheduler.destroy_instance() self.selected_instances = None self.selection_groups = None self._clear_caches() # discard() in case loading failed and we did not yet subscribe SettingChanged.discard(self._on_setting_changed) MessageBus().reset()
def cleanup(cls): """ If a test uses manual session management, we cannot be sure that session.end was called before a crash, leaving the game in an unclean state. This method should return the game to a valid state. """ Scheduler.destroy_instance()
def end(self): self.log.debug("Ending session") self.is_alive = False self.gui.session = None Scheduler().rem_all_classinst_calls(self) ExtScheduler().rem_all_classinst_calls(self) if horizons.main.fife.get_fife_setting("PlaySounds"): for emitter in horizons.main.fife.emitter['ambient'][:]: emitter.stop() horizons.main.fife.emitter['ambient'].remove(emitter) horizons.main.fife.emitter['effects'].stop() horizons.main.fife.emitter['speech'].stop() self.cursor = None self.world = None self.keylistener = None self.ingame_gui = None self.view = None self.manager = None self.timer = None self.scenario_eventhandler = None Scheduler.destroy_instance() self.selected_instances = None self.selection_groups = None
def end(self): self.log.debug("Ending session") self.is_alive = False LastActivePlayerSettlementManager().remove() LastActivePlayerSettlementManager.destroy_instance() self.gui.session = None Scheduler().rem_all_classinst_calls(self) ExtScheduler().rem_all_classinst_calls(self) if horizons.main.fife.get_fife_setting("PlaySounds"): for emitter in horizons.main.fife.sound.emitter['ambient'][:]: emitter.stop() horizons.main.fife.sound.emitter['ambient'].remove(emitter) horizons.main.fife.sound.emitter['effects'].stop() horizons.main.fife.sound.emitter['speech'].stop() if hasattr(self, "cursor"): # the line below would crash uglily on ^C self.cursor.remove() self.cursor = None self.world = None self.keylistener = None self.ingame_gui = None self.view = None self.manager = None self.timer = None self.scenario_eventhandler = None Scheduler.destroy_instance() self.selected_instances = None self.selection_groups = None
def cleanup(cls): """ If a test uses manual session management, we cannot be sure that session.end was called before a crash, leaving the game in an unclean state. This method should return the game to a valid state. """ Scheduler.destroy_instance() ExtScheduler.destroy_instance() SPSession._clear_caches()
def end(self): self.log.debug("Ending session") self.is_alive = False self.gui.session = None # Has to be done here, cause the manager uses Scheduler! self.end_production_finished_icon_manager() Scheduler().rem_all_classinst_calls(self) ExtScheduler().rem_all_classinst_calls(self) if horizons.globals.fife.get_fife_setting("PlaySounds"): for emitter in horizons.globals.fife.sound.emitter['ambient'][:]: emitter.stop() horizons.globals.fife.sound.emitter['ambient'].remove(emitter) horizons.globals.fife.sound.emitter['effects'].stop() horizons.globals.fife.sound.emitter['speech'].stop() if hasattr(self, "cursor"): # the line below would crash uglily on ^C self.cursor.remove() if hasattr(self, 'cursor') and self.cursor is not None: self.cursor.end() # these will call end() if the attribute still exists by the LivingObject magic self.ingame_gui = None # keep this before world LastActivePlayerSettlementManager().remove() # keep after ingame_gui LastActivePlayerSettlementManager.destroy_instance() self.cursor = None self.world.end() # must be called before the world ref is gone self.world = None self.keylistener = None self.view = None self.manager = None self.timer = None self.scenario_eventhandler = None Scheduler().end() Scheduler.destroy_instance() self.selected_instances = None self.selection_groups = None self.status_icon_manager.end() self.status_icon_manager = None horizons.main._modules.session = None self._clear_caches() # subscriptions shouldn't survive listeners (except the main Gui) self.gui.unsubscribe() AutosaveIntervalChanged.unsubscribe(self._on_autosave_interval_changed) MessageBus().reset() self.gui.subscribe()
def end(self): self.log.debug("Ending session") self.is_alive = False self.gui.session = None # Has to be done here, cause the manager uses Scheduler! self.end_production_finished_icon_manager() Scheduler().rem_all_classinst_calls(self) ExtScheduler().rem_all_classinst_calls(self) if horizons.globals.fife.get_fife_setting("PlaySounds"): for emitter in horizons.globals.fife.sound.emitter['ambient'][:]: emitter.stop() horizons.globals.fife.sound.emitter['ambient'].remove(emitter) horizons.globals.fife.sound.emitter['effects'].stop() horizons.globals.fife.sound.emitter['speech'].stop() if hasattr(self, "cursor"): # the line below would crash uglily on ^C self.cursor.remove() if hasattr(self, 'cursor') and self.cursor is not None: self.cursor.end() # these will call end() if the attribute still exists by the LivingObject magic self.ingame_gui = None # keep this before world LastActivePlayerSettlementManager().remove() # keep after ingame_gui LastActivePlayerSettlementManager.destroy_instance() self.cursor = None self.world.end() # must be called before the world ref is gone self.world = None self.keylistener = None self.view = None self.manager = None self.timer = None self.scenario_eventhandler = None Scheduler().end() Scheduler.destroy_instance() self.selected_instances = None self.selection_groups = None self.status_icon_manager.end() self.status_icon_manager = None horizons.main._modules.session = None self._clear_caches() # subscriptions shouldn't survive listeners (except the main Gui) self.gui.unsubscribe() AutosaveIntervalChanged.unsubscribe(self._on_autosave_interval_changed) MessageBus().reset() self.gui.subscribe()
def end(self): self.log.debug("Ending session") self.is_alive = False self.gui.session = None Scheduler().rem_all_classinst_calls(self) ExtScheduler().rem_all_classinst_calls(self) if horizons.main.fife.get_fife_setting("PlaySounds"): for emitter in horizons.main.fife.sound.emitter['ambient'][:]: emitter.stop() horizons.main.fife.sound.emitter['ambient'].remove(emitter) horizons.main.fife.sound.emitter['effects'].stop() horizons.main.fife.sound.emitter['speech'].stop() if hasattr(self, "cursor"): # the line below would crash uglily on ^C self.cursor.remove() if hasattr(self, 'cursor') and self.cursor is not None: self.cursor.end() # these will call end() if the attribute still exists by the LivingObject magic self.ingame_gui = None # keep this before world LastActivePlayerSettlementManager().remove() # keep after ingame_gui LastActivePlayerSettlementManager.destroy_instance() self.cursor = None try: # This is likely to throw when the game state is invalid. # Try to continue cleanup afterwards even if this fails. # NOTE: This is not a proper solution, separating sessions by design (e.g. single processes) would be. self.world.end() # must be called before the world ref is gone except Exception: import traceback traceback.print_exc() print 'Exception on world end(), trying to continue to cleanup' self.world = None self.keylistener = None self.view = None self.manager = None self.timer = None self.scenario_eventhandler = None Scheduler().end() Scheduler.destroy_instance() self.selected_instances = None self.selection_groups = None self.status_icon_manager = None self.message_bus = None horizons.main._modules.session = None self._clear_caches()
def end(self): self.log.debug("Ending session") self.is_alive = False self.gui.session = None Scheduler().rem_all_classinst_calls(self) ExtScheduler().rem_all_classinst_calls(self) if horizons.main.fife.get_fife_setting("PlaySounds"): for emitter in horizons.main.fife.sound.emitter['ambient'][:]: emitter.stop() horizons.main.fife.sound.emitter['ambient'].remove(emitter) horizons.main.fife.sound.emitter['effects'].stop() horizons.main.fife.sound.emitter['speech'].stop() if hasattr(self, "cursor"): # the line below would crash uglily on ^C self.cursor.remove() if hasattr(self, 'cursor') and self.cursor is not None: self.cursor.end() # these will call end() if the attribute still exists by the LivingObject magic self.ingame_gui = None # keep this before world LastActivePlayerSettlementManager().remove() # keep after ingame_gui LastActivePlayerSettlementManager.destroy_instance() self.cursor = None self.world.end() # must be called before the world ref is gone self.world = None self.keylistener = None self.view = None self.manager = None self.timer = None self.scenario_eventhandler = None Scheduler().end() Scheduler.destroy_instance() self.selected_instances = None self.selection_groups = None self.status_icon_manager = None self.message_bus = None horizons.main._modules.session = None self._clear_caches()
def tearDown(self): Scheduler.destroy_instance()
def test_create_then_register_with_timer(self): # create a new scheduler but do not reset timer mock Scheduler.destroy_instance() Scheduler.create_instance(self.timer) self.scheduler = Scheduler() self.timer.add_call.assert_called_once_with(self.scheduler.tick)
def tearDown(self): Scheduler.destroy_instance()
def test_create_then_register_with_timer(self): # create a new scheduler but do not reset timer mock Scheduler.destroy_instance() Scheduler.create_instance(self.timer) self.scheduler = Scheduler() self.timer.add_call.assert_called_once_with(self.scheduler.tick)