VSClone/Assets/Scripts/Sim/Save.cs

54 lines
2.9 KiB
C#

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 SaveDeck { public int[] ids; }
[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<SaveItem> rooms = new List<SaveItem>();
public List<SaveItem> skills = new List<SaveItem>();
public int closetLevel; // 0 = 없음
public long closetUpgradeEnd;
public int closetCurrent = 1000; // TypeCloset.None
public List<int> closetUnlocked = new List<int>();
public List<int> closetNew = new List<int>();
public float sumPassRoom, sumTapRoom;
public string totalCompletedIncome = "0";
public long lastActive; // AFK 기준 시각
public float adsBoostRemain, autoClickRemain;
public List<SaveGift> gifts = new List<SaveGift>();
public List<SaveQuest> quests = new List<SaveQuest>();
public int dailyClaimedDays;
public string dailyLastDate = "";
public string onlineDate = "";
public double onlineSeconds;
public int onlineClaimed;
public List<string> seenStories = new List<string>();
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; // 전투 모드 (단계 · 소환 칸 · 최대 마나 강화 횟수)
public List<SaveDeck> decks = new List<SaveDeck>(); // 덱 프리셋(유닛 메뉴) — 칸마다 유닛 id · 0 = 빈 칸
public int deckSel; // 고른 프리셋
}
}