Пример #1
0
    def save_map(self, map_name=None):
        """Save the current state of a map

        Args:

            map_name: Name of the map to save
        """
        self.editor_gui.current_toolbar.deactivate()
        if map_name:
            if map_name in self.maps:
                game_map = self.maps[map_name]
            else:
                return
        else:
            if self.current_map:
                game_map = self.current_map
                map_name = game_map.name
            else:
                return
        if not isinstance(game_map, GameMap):
            return
        fife_map = game_map.fife_map
        filename = fife_map.getFilename()
        if not filename:
            import tkinter.filedialog
            import tkinter.messagebox
            # Based on code from unknown-horizons
            try:
                filename = tkinter.filedialog.asksaveasfilename(
                    filetypes=[(
                        "fife map",
                        ".xml",
                    )], title="Save Map")
            except ImportError:
                # tkinter may be missing5555
                filename = ""
        fife_map.setFilename(filename)

        try:
            os.makedirs(os.path.dirname(filename))
        except os.error:
            pass

        old_dir = os.getcwd()
        import_list = [
            root_subfile(filename, i)
            for i in self.editor.get_import_list(fife_map.getId())
        ]
        saver = MapSaver()
        saver.save(fife_map, filename, import_list)
        os.chdir(old_dir)
        self.editor_gui.current_toolbar.activate()
        if map_name in self.changed_maps:
            self.changed_maps.remove(map_name)
Пример #2
0
	def saveAs(self, filename):
		""" Saves the map using a specified filename.
		
		Emits preSave and postSave signals.
		"""
		
		#create final import list
		importList = [root_subfile(str(filename), i) for i in self._controller.importList.keys()]
		
		events.preSave.send(sender=self, mapview=self)
		mapSaver = fife.MapSaver();	
		mapSaver.save(self._map, str(filename), importList);
		events.postSave.send(sender=self, mapview=self)
Пример #3
0
    def saveAs(self, filename):
        """ Saves the map using a specified filename.
		
		Emits preSave and postSave signals.
		"""

        #create final import list
        importList = [
            root_subfile(str(filename), i)
            for i in self._controller.importList.keys()
        ]

        events.preSave.send(sender=self, mapview=self)
        mapSaver = fife.MapSaver()
        mapSaver.save(self._map, str(filename), importList)
        events.postSave.send(sender=self, mapview=self)
Пример #4
0
	def save(self):
		""" Saves the map using the previous filename.
		
		Emits preSave and postSave signals.
		"""
		curname = ""
		try:
			curname = self._map.getFilename()
		except RuntimeError:
			print "Map has no filename yet, can't save."
			return

		# create final import list
		importList = [root_subfile(curname, i) for i in self._controller.importList.keys()]

		events.preSave.send(sender=self, mapview=self)
		mapSaver = fife.MapSaver();
		mapSaver.save(self._map, curname, importList);
		events.postSave.send(sender=self, mapview=self)
Пример #5
0
    def save(self):
        """ Saves the map using the previous filename.
		
		Emits preSave and postSave signals.
		"""
        curname = ""
        try:
            curname = self._map.getFilename()
        except RuntimeError:
            print "Map has no filename yet, can't save."
            return

        # create final import list
        importList = [
            root_subfile(curname, i)
            for i in self._controller.importList.keys()
        ]

        events.preSave.send(sender=self, mapview=self)
        mapSaver = fife.MapSaver()
        mapSaver.save(self._map, curname, importList)
        events.postSave.send(sender=self, mapview=self)
Пример #6
0
    def save_map(self, map_name=None):
        """Save the current state of the map

        Args:

            map_name: Name of the map to save
        """
        self.editor_gui.current_toolbar.deactivate()
        if map_name:
            if map_name in self.maps:
                game_map = self.maps[map_name]
            else:
                return
        else:
            if self.current_map:
                game_map = self.current_map
                map_name = game_map.name
            else:
                return
        if not isinstance(game_map, GameMap):
            return
        map_entities = game_map.entities.copy()
        for entity in map_entities:
            agent = getattr(entity, Agent.registered_as)
            agent.new_map = ""
        game_map.update_entities_fife()
        fife_map = game_map.fife_map
        filename = fife_map.getFilename()
        if not filename:
            if self.project_dir is not None:
                maps_path = self.settings.get(
                    "fife-rpg", "MapsPath", "maps")
                filename = os.path.join(self.project_dir, maps_path,
                                        "%s.xml" % map_name)
            else:
                import tkinter.filedialog
                import tkinter.messagebox
                # Based on code from unknown-horizons
                try:
                    filename = tkinter.filedialog.asksaveasfilename(
                        filetypes=[("fife map", ".xml",)],
                        title="Save Map")
                except ImportError:
                    # tkinter may be missing5555
                    filename = ""
            fife_map.setFilename(filename)


        try:
            os.makedirs(os.path.dirname(filename))
        except os.error:
            pass

        old_dir = os.getcwd()
        if self.project_dir is not None:
            os.chdir(self.project_dir)
        import_list = [root_subfile(filename, i) for
                       i in self.editor.get_import_list(fife_map.getId())]
        saver = MapSaver()
        saver.save(fife_map, filename, import_list)
        os.chdir(old_dir)
        for entity in map_entities:
            agent = getattr(entity, Agent.registered_as)
            agent.map = map_name
        game_map.update_entities()
        self.update_agents(game_map)
        self.editor_gui.current_toolbar.activate()
        if map_name in self.changed_maps:
            self.changed_maps.remove(map_name)