using System;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// GAME 1303 Tier 7 — The shape of a save file. Plain data, no MonoBehaviour.
/// Unity's JsonUtility serializes public fields of [System.Serializable] classes, and
/// it does NOT handle Dictionaries — which is why flags and stats are stored as parallel
/// lists of names and values. That's a real limitation worth explaining once.
/// </summary>
[Serializable]
public class SaveData
{
public string saveVersion = "1";
public string savedAtUtc = "";
public string sceneName = "";
[Header("Flags & counters (Tier 4 ChoiceFlagManager)")]
public List<string> flags = new List<string>();
public List<string> counterNames = new List<string>();
public List<int> counterValues = new List<int>();
[Header("Collectibles (Tier 1 CollectionTracker)")]
public List<string> itemNames = new List<string>();
public List<int> itemCounts = new List<int>();
public int score;
[Header("Player")]
public float playerX, playerY;
public int playerHealth;
public bool hasPlayerPosition;
[Header("Pet (Tier 7)")]
public List<string> statNames = new List<string>();
public List<float> statValues = new List<float>();
public string personalityId = "";
[Header("Progress")]
public List<string> clueIds = new List<string>();
public int experience;
public DateTime SavedAt
{
get
{
if (DateTime.TryParse(savedAtUtc, null,
System.Globalization.DateTimeStyles.RoundtripKind, out var dt)) return dt;
return DateTime.UtcNow;
}
}
/// <summary>Real-world minutes since this file was written. Cozy Critters uses it.</summary>
public float MinutesSinceSaved => (float)(DateTime.UtcNow - SavedAt).TotalMinutes;
}