miepzerino
2025-04-07 6b1abe7afb9350a7890f6b893f59f72a3988aaab
Assets/Scripts/Saving/SaveData.cs
@@ -1,8 +1,9 @@
using Assets.Scripts.Helpers;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.Tilemaps;
#region player data
[Serializable]
@@ -51,14 +52,19 @@
{
    public int seed;
    public List<DestroyedTile> destroyedTiles;
    public SaveDataMap(List<Vector3Int> destroyedTiles, int seed)
    public FogOfWarData fogOfWarData;
    public List<SerializedChunkData> chunkData; // New field
    public SaveDataMap(int seed, List<Vector3Int> destroyedTiles, Dictionary<Vector2Int, TileBase[]> chunkCache, FogOfWarData fogOfWarData)
    {
        this.seed = seed;
        this.destroyedTiles = new List<DestroyedTile>();
        this.fogOfWarData = fogOfWarData;
        foreach (var item in destroyedTiles.ConvertToListIntArray())
        {
            this.destroyedTiles.Add(new DestroyedTile(item));
        }
        // Convert chunk cache to serializable format
        this.chunkData = chunkCache.Select(kvp => new SerializedChunkData(kvp.Key, kvp.Value)).ToList();
    }
}
@@ -71,4 +77,30 @@
    }
    public int[] tileCoord;
}
[System.Serializable]
public class FogTileData
{
    public int x;
    public int y;
    public int fogLevelIndex; // -1 for no fog, 0+ for fog level index
}
[System.Serializable]
public class FogOfWarData
{
    public List<FogTileData> discoveredTiles = new List<FogTileData>();
}
[System.Serializable]
public class SerializedChunkData
{
    public Vector2Int position;
    public string[] tileNames; // Store tile names instead of TileBase references
    public SerializedChunkData(Vector2Int pos, TileBase[] tiles)
    {
        position = pos;
        tileNames = tiles.Select(t => t != null ? t.name : "null").ToArray();
    }
}
#endregion