public void SaveMap(string savefilepath) { //string savefilepath = StandaloneFileBrowser.SaveFilePanel("Save the map", "", "New Map", extenstionSave); //string savefilepath = EditorUtility.SaveFilePanel("Save the map", Application.dataPath + "/Levels", "New Map", "xml"); List <SerializableTile> temp = new List <SerializableTile>(); foreach (CombinedTile item in levelTiles) { SerializableTile tempTile = new SerializableTile(item.Tile.Index, item.Tile.Name, item.Tile.Rotation, item.Tile.Layer, item.Tile.X, item.Tile.Y, item.Tile.Dimensions, item.Tile.Category); temp.Add(tempTile); } CompleteLevel cl = new CompleteLevel(new MapInfo(mapname, levelWidth, levelHeight), temp); FileStream fStream = File.Create(savefilepath); //Serialize to xml DataContractSerializer bf = new DataContractSerializer(cl.GetType()); MemoryStream streamer = new MemoryStream(); //Serialize the file bf.WriteObject(streamer, cl); streamer.Seek(0, SeekOrigin.Begin); //Save to disk fStream.Write(streamer.GetBuffer(), 0, streamer.GetBuffer().Length); // Close the file to prevent any corruptions fStream.Close(); string result = XElement.Parse(Encoding.ASCII.GetString(streamer.GetBuffer()).Replace("\0", "")).ToString(); Debug.Log("Saved level. Saved tiles: " + temp.Count + " Serialized Result: " + result); }
private void BuildWorldFromSerialized(SerializableWorld world) { boardSize = world.WorldData.GetLength(0); tiles = new Tile[boardSize, boardSize]; for (int x = 0; x < boardSize; x++) { for (int z = 0; z < boardSize; z++) { SerializableTile serialTile = world.WorldData[x, z]; Tile tile = CreateTileAt(x, z, serialTile.TileType); if (serialTile.Entity != null) { tile.Entity = entityFactory.Get(serialTile.Entity.EntityType); tile.Entity.Level = serialTile.Entity.Level; } } } RebakeNavMesh(); resources.Money = world.ResourceData.Money; resources.Population = world.ResourceData.Population; }