public void Save() { var st = new TileMapSaveData(); st.sizeX = sizeX; st.sizeY = sizeY; st.tiles = new TileSaveData[sizeX + sizeY * sizeX]; UnityEngine.Debug.Log(sizeX + sizeY * sizeX); UnityEngine.Debug.Log(st.tiles.Length); int cx = 0; int cy = 0; LevelTileData tile = null; for (int x = 0; x < sizeX; x++) { for (int y = 0; y < sizeY; y++) { cx = PosToChunk(x, y).x; cy = PosToChunk(x, y).y; tile = GetTileMap(cx, cy).GetTile(PosToPosInChunk(x, y).x, PosToPosInChunk(x, y).y).data; st.tiles[x + y * sizeX] = new TileSaveData(tile); } } XmlSerializer serializer = new XmlSerializer(typeof(TileMapSaveData)); FileStream stream = new FileStream(saveUtility.GetPath(), FileMode.Create); serializer.Serialize(stream, st); stream.Close(); }
void ApplyToRoom(Structure_BaseRoomData room, TileMapSaveData saveFile) { room.CreateRoomFromSaveFill(saveFile); room.floor = roomFloor; room.wall = roomWall; room.UpdateDoors(); }
public void CreateTextureFromSaveFile(TileMapSaveData st, SaveUtility saveUtility, LevelTilemap target) { Texture2D tex = new Texture2D(st.sizeX, st.sizeY); var datas = target.GetTileLevelDataFromSaveFile(st); for (int x = 0; x < st.sizeX; x++) { for (int y = 0; y < st.sizeY; y++) { tex.SetPixel(x, y, datas[x + y * st.sizeX].editorColor); } } // Encode texture into PNG byte[] bytes = tex.EncodeToPNG(); //UnityEditor.AssetDatabase.CreateAsset(tex, "Assets/"+saveUtility.fileName+".asset"); Object.DestroyImmediate(tex); //var asset = UnityEditor.AssetDatabase.LoadAssetAtPath<Texture2D>(saveUtility.path + saveUtility.fileName + ".png"); //asset.filterMode = FilterMode.Point; File.WriteAllBytes(saveUtility.GetPath("png"), bytes); UnityEditor.AssetDatabase.Refresh(); }
public void CreateSaveFile(TileMapSaveData st, SaveUtility saveUtility) { XmlSerializer serializer = new XmlSerializer(typeof(TileMapSaveData)); FileStream stream = new FileStream(saveUtility.GetPath(), FileMode.Create); serializer.Serialize(stream, st); stream.Close(); # if UNITY_EDITOR
public void CreateRoom(TileMapSaveData saveFile) { var room = new BaseFixedRoomData(); room.name = saveUtility.fileName; ApplyToRoom(room, saveFile); UnityEditor.AssetDatabase.CreateAsset(room, saveUtility.GetAssetPath("asset")); //UnityEditor.AssetDatabase.SaveAssets(); }
public LevelTileData[] GetTileLevelDataFromSaveFile(TileMapSaveData st) { var allData = Resources.LoadAll("", typeof(LevelTileData)).Cast <LevelTileData>().ToArray(); var tiles = new LevelTileData[st.sizeX * st.sizeY]; for (int x = 0; x < st.sizeX; x++) { for (int y = 0; y < st.sizeY; y++) { tiles[x + y * st.sizeX] = GetDataFromList(st.tiles[x + y * st.sizeX].tileDataName, allData); } } return(tiles); }
public void CreateRoomFromSaveFill(TileMapSaveData saveFile) { sizeX = saveFile.sizeX; sizeY = saveFile.sizeY; GenerateUtility utility = new GenerateUtility(); roomTileList = new LevelTileData[sizeX * sizeY]; for (int x = 0; x < sizeX; x++) { for (int y = 0; y < sizeY; y++) { roomTileList[x + y * sizeX] = utility.GetDataFromName(saveFile.tiles[x + y * sizeX].tileDataName); } } }
public void EditorApplySaveFileToTilmap(TileMapSaveData st) { ClearTilemap(); var allData = Resources.LoadAll("", typeof(LevelTileData)).Cast <LevelTileData>().ToArray(); LevelTileData tile = null; Vector3Int pos = new Vector3Int(0, 0, 0); for (int x = 0; x < st.sizeX; x++) { for (int y = 0; y < st.sizeY; y++) { tile = GetDataFromList(st.tiles[x + y * st.sizeX].tileDataName, allData); EditorApplySaveFileToTile(x, y, tile); } } }
public TileMapSaveData GetNewSaveFile() { var file = new TileMapSaveData(); file.sizeX = sizeX; file.sizeY = sizeY; List <TileSaveData> saveTiles = new List <TileSaveData>(); for (int y = 0; y < sizeY; y++) { for (int x = 0; x < sizeX; x++) { saveTiles.Add(new TileSaveData(GetTile(x, y))); } } file.tiles = saveTiles.ToArray(); return(file); }
public TileMapSaveData CreateSaveDataFromTexutre(Texture2D loadTexture) { var allData = Resources.LoadAll("", typeof(LevelTileData)).Cast <LevelTileData>().ToArray(); TileMapSaveData st = new TileMapSaveData(); st.sizeX = loadTexture.width; st.sizeY = loadTexture.height; TileSaveData[] datas = new TileSaveData[st.sizeX * st.sizeY]; for (int x = 0; x < loadTexture.width; x++) { for (int y = 0; y < loadTexture.height; y++) { datas[x + y * loadTexture.width] = GetDataFromColor(loadTexture.GetPixel(x, y), allData); } } st.tiles = datas; return(st); }
public void Load() { XmlSerializer serializer = new XmlSerializer(typeof(TileMapSaveData)); if (Application.isEditor == false) { TextAsset textAsset = (TextAsset)Resources.Load(saveUtility.fileName); XmlDocument xmldoc = new XmlDocument(); xmldoc.LoadXml(textAsset.text); XmlReader reader = new XmlNodeReader(xmldoc); TileMapSaveData result = (TileMapSaveData)serializer.Deserialize(reader); Load(result); return; } FileStream stream = new FileStream(saveUtility.GetPath(), FileMode.Open); var st = serializer.Deserialize(stream) as TileMapSaveData; stream.Close(); Load(st); }
public TileMapSaveData GetSaveDataFromTileMap() { var size = GetTileMapSize(); TileMapSaveData st = new TileMapSaveData(); st.sizeX = size.x; st.sizeY = size.y; Vector3Int pos = new Vector3Int(0, 0, 0); TileSaveData[] datas = new TileSaveData[size.x * size.y]; var allData = Resources.LoadAll("", typeof(LevelTileData)).Cast <LevelTileData>().ToArray(); for (int x = 0; x < size.x; x++) { for (int y = 0; y < size.y; y++) { pos.x = x; pos.y = y; datas[x + y * size.x] = new TileSaveData(LoadDataFromTileMap(pos, allData)); } } st.tiles = datas; return(st); }
public void Load(TileMapSaveData st) { if (updateVisibleCoroutine != null) { StopCoroutine(updateVisibleCoroutine); } ClearTilemap(); Resize(st.sizeX, st.sizeY);//inits chunk LevelTileData tile = null; //UnityEngine.Debug.Log(sizeX + sizeY * sizeX); //UnityEngine.Debug.Log(st.tiles.Length); StringBuilder str = new StringBuilder(); Stopwatch w = new Stopwatch(); str.Append("Load Data : "); w.Reset(); w.Start(); var allData = Resources.LoadAll("", typeof(LevelTileData)).Cast <LevelTileData>().ToArray(); for (int x = 0; x < st.sizeX; x++) { for (int y = 0; y < st.sizeY; y++) { tile = GetDataFromList(st.tiles[x + y * st.sizeX].tileDataName, allData); OverrideDataNameTile(x, y, tile); } } str.AppendLine(" Duration: " + w.Elapsed); //UpdatePrefabFromData(); //GenerateGridFromPrefab(); str.Append("Init: "); w.Reset(); w.Start(); InitChunkFromDataName(); Init(); str.AppendLine(" Duration: " + w.Elapsed); str.Append("TileMap Cleare : "); w.Reset(); w.Start(); //tilemap.ClearAllTiles(); str.AppendLine(" Duration: " + w.Elapsed); str.Append("UpdateView : "); w.Reset(); w.Start(); if (onLoaded != null) { onLoaded(this); } //UpdateViews(); if (loadAllChunks) { for (int x = 0; x < levelChunkX; x++) { for (int y = 0; y < levelChunkY; y++) { LoadChunkFirstTime(x, y); } } } str.AppendLine(" Duration: " + w.Elapsed); #if UNITY_EDITOR UnityEngine.Debug.Log(str.ToString()); #endif //if(Application.isEditor == false) { updateVisibleCoroutine = StartCoroutine(UpdateVisible()); updateAllCoroutine = StartCoroutine(UpdateAllTiles()); //} }