using Assets.Scripts.Helpers; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; #region player data [Serializable] public class SaveDataInventorySlot { public int itemId; public string itemName; public int quantity; public SaveDataInventorySlot(InventorySlot slot) { itemId = slot.item.itemId; itemName = slot.item.itemName; quantity = slot.quantity; } } [Serializable] public class SaveDataPlayer { public int maxHealth; public int health; public float[] position; public float[] velocity; public List inventoryItems; public SaveDataPlayer(PlayerController player, Inventory inventory) { maxHealth = player.health.MaxHealth; health = player.health.Health; position = player.transform.position.ConvertToFloatArray(); velocity = player.rb.velocity.ConvertToFloatArray(); // Save inventory items inventoryItems = new List(); foreach (var slot in inventory.items) { inventoryItems.Add(new SaveDataInventorySlot(slot)); } } } #endregion #region map data [Serializable] public class SaveDataMap { public int seed; public List destroyedTiles; public FogOfWarData fogOfWarData; public SaveDataMap(List destroyedTiles, int seed, FogOfWarData fogOfWarData) { this.seed = seed; this.destroyedTiles = new List(); this.fogOfWarData = fogOfWarData; foreach (var item in destroyedTiles.ConvertToListIntArray()) { this.destroyedTiles.Add(new DestroyedTile(item)); } } } [Serializable] public class DestroyedTile { public DestroyedTile(int[] tileCoord) { this.tileCoord = tileCoord; } 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 discoveredTiles = new List(); } #endregion