def clear(self): """Clears all data and restores saved settings""" self._maps = {} self._current_map = None self._components = {} self._actions = {} self._systems = {} self._behaviours = {} self.changed_maps = [] self.project_changed = False self.entity_changed = False self.editor_gui.reset_layerlist() self.map_entities = None self.set_selected_object(None) tmp_settings = list(self.settings.getSettingsFromFile("fife-rpg").keys()) for setting in tmp_settings: if setting in self.editor_settings: self.settings.set("fife-rpg", setting, self.editor_settings[setting]) else: self.settings.remove("fife-rpg", setting) ComponentManager.clear_components() ComponentManager.clear_checkers() ActionManager.clear_actions() ActionManager.clear_commands() SystemManager.clear_systems() BehaviourManager.clear_behaviours() self.editor.delete_maps() self.editor.delete_objects() if self.project_source is not None: self.engine.getVFS().removeSource(self.project_source) self.project_source = None if self.project_dir is not None: sys.path.remove(self.project_dir) self.project_dir = None self.project = None for callback in self._project_cleared_callbacks: callback() self.create_world()
def edit_components(self): """Show the dialog to edit components""" dialog = Components(self) values = dialog.show_modal(self.editor_gui.editor_window, self.engine.pump) if not dialog.return_value: return False entities_hidden = self.map_entities is not None entity = get_entity(self.world, self.selected_object) tmp_entity_id = None if entity is not None: tmp_entity_id = entity.identifier if entities_hidden: self.show_map_entities(self.current_map.name) tmp_file = StringIO() self.dump_entities(tmp_file) for entity in tuple(self.world.entities): entity.delete() ComponentManager.clear_components() ComponentManager.clear_checkers() current_items = list(values["current_items"]) self.project.set("fife-rpg", "Components", current_items) self.world.register_mandatory_components() self.register_components(current_items) tmp_file.seek(0) self.reset_world(tmp_file) for game_map in self.maps.values(): game_map.update_entities() self.update_agents(game_map) if tmp_entity_id is not None: tmp_entity = self.world.get_entity(tmp_entity_id) fife_agent = getattr(tmp_entity, FifeAgent.registered_as) self.set_selected_object(fife_agent.instance) if entities_hidden: self.hide_map_entities(self.current_map.name) self.project_changed = True