Ejemplo n.º 1
0
 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()
Ejemplo n.º 2
0
    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