using System; using System.Collections.Generic; // 원작 NSHTool.UserData 대응 저장 구조 (큰 수 = 문자열 · 시각 = DateTime.Ticks · 0 = 없음) namespace VS.Sim { [Serializable] public class SaveItem { public int Type; public int Level; public long UpgradeEnd; public string Pending = "0"; } [Serializable] public class SaveGift { public int Type; public long EffectEnd; public long CooldownEnd; public int RvProgress; public float PausedRemain; } [Serializable] public class SaveQuest { public int id; public int state; public string progress = "0"; public string target = "0"; public string gps = "0"; } [Serializable] public class SaveData { public int version = 1; public string coin = "0", follower = "0", coinDonate = "0"; public int ticket; public int pkTicket; public int rankIndex = 1; // indexCurrentRankFollower (UserData..ctor = 1) public int house; // currentHouse (HouseType) public List rooms = new List(); public List skills = new List(); public int closetLevel; // 0 = 없음 public long closetUpgradeEnd; public int closetCurrent = 1000; // TypeCloset.None public List closetUnlocked = new List(); public List closetNew = new List(); public float sumPassRoom, sumTapRoom; public string totalCompletedIncome = "0"; public long lastActive; // AFK 기준 시각 public float adsBoostRemain, autoClickRemain; public List gifts = new List(); public List quests = new List(); public int dailyClaimedDays; public string dailyLastDate = ""; public string onlineDate = ""; public double onlineSeconds; public int onlineClaimed; public List seenStories = new List(); public string idolName = "player123"; public bool houseMaxUpgrade, skillMaxUpgrade; public long firstPlay; public int giftPlayDayCount; public string giftLastPlayDate = ""; public bool isBuyCloset, giftUnlockedLifetime, freeGiftPopupClaimed; public long timeAfk; // 백그라운드·종료 시각 (0 = 없음) public string afkPending = "0"; // 아직 안 받은 방치 보상 public float playSeconds; // 누적 플레이 시간 public int battleStage = 1, battleSlots, battleManaLevel; // 전투 모드 (단계 · 소환 칸 · 최대 마나 강화 횟수) } }