using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerData : StorageBase { public int CurrentLevel { get => mCurrentLevel; set { mCurrentLevel = value; Save(); } } [SerializeField] int mCurrentLevel = 1; public int CurrentLevelID { get => mCurrentLevel - 1;//GameConfig.Instance.LevelList[(mCurrentLevel - 1) % GameConfig.Instance.LevelList.Count]; } [SerializeField] private Dictionary mAutoLevelDic = new Dictionary(); public LevelData CurrentLevelData { get => LevelConfig.Instance.DataList[Mathf.Clamp(CurrentLevel - 1, 0, LevelConfig.Instance.DataList.Count - 1)]; } public LevelData NextLevelData { get => LevelConfig.Instance.DataList[Mathf.Clamp(CurrentLevel, 0, LevelConfig.Instance.DataList.Count - 1)]; } public int Coin { get => mCoin; set { mCoin = value; Save(); } } [SerializeField] int mCoin = 0; public int CurrentWinCoin => NextLevelData.FirstNum * (HumanPrice + MonsterPrice) / 2 + NextLevelData.FirstNum * (NextLevelData.FirstNum - 1) * 100; public int CurrentLoseCoin { get { int tBaseN = NextLevelData.RetryTotal == 0 ? NextLevelData.FirstNum / 2 : NextLevelData.RetryTotal; return tBaseN * (HumanPrice + MonsterPrice) / 2 + tBaseN * (tBaseN - 1) * 100; } } public string ArmyStr { get => mArmyStr; set { mArmyStr = value; Save(); } } [SerializeField] string mArmyStr = "12_0_1"; public bool IsArmyFull { get => mArmyStr.Split(';').Length >= 15; } [SerializeField] List mOwnedCardIDs = new List() { "Human_01", "Monster_01"}; public int LoginCount => mLoginCount; [SerializeField] long mRegisterTimestamp = 0; [SerializeField] bool mHasRegister = false; [SerializeField] int mLoginCount = 0; public int HumanPrice { get { if (GameConfig.Instance.IsAutoLevel) { return 200 * mHumanBoughtCount + (mHumanBoughtCount - 1) * 200; } return (200 * (mHumanBoughtCount / 64 + 1)) * mHumanBoughtCount; } } [SerializeField] private int mHumanBoughtCount = 0; public int MonsterPrice { get { if (GameConfig.Instance.IsAutoLevel) { return 200 * mMonsterBoughtCount + (mMonsterBoughtCount - 1) * 200; } return (200 * (mMonsterBoughtCount / 64 + 1)) * mMonsterBoughtCount; } } [SerializeField] private int mMonsterBoughtCount = 0; public int CurrentSellBase { get { if (GameConfig.Instance.IsAutoLevel) { return Mathf.Min(200 * (mHumanBoughtCount - 1) + (mHumanBoughtCount - 2) * 200, 200 * (mMonsterBoughtCount - 1) + (mMonsterBoughtCount - 2) * 200); } return Mathf.Min((200 * ((mHumanBoughtCount - 1) / 64 + 1)) * (mHumanBoughtCount - 1), (200 * ((mMonsterBoughtCount - 1) / 64 + 1)) * (mMonsterBoughtCount - 1)); ; } } public bool IsAutoMergeEnabled => mCurrentLevel > TKGSDKManager.Instance.GetConfigInt(TKGParamKey.AutoMergeOpenLv.ToString()); public int AutoMergeCount { get => mAutoMergeCount; set { mAutoMergeCount = value; Save(); } } [SerializeField] private int mAutoMergeCount = 10; [SerializeField] private List mFinishedGuideIndex = new List(); public bool IsNoAds { get => mIsNoAds; set { mIsNoAds = value; TKGSDKManager.Instance.IsNoInterstitialAD = mIsNoAds; Save(); } } [SerializeField] bool mIsNoAds = false; public void Login() { if (!mHasRegister) { mHasRegister = true; mRegisterTimestamp = Utils.DateToTimestamp(DateTime.Now); } mLoginCount++; Save(); } #region card public bool HasCard(string pCardID) { return mOwnedCardIDs.Contains(pCardID); } public void GetCard(string pCard) { if (!mOwnedCardIDs.Contains(pCard)) { mOwnedCardIDs.Add(pCard); Save(); } } public void BuyHuman() { mHumanBoughtCount++; Save(); } public void BuyMonster() { mMonsterBoughtCount++; Save(); } #endregion #region auto level public string GetAutoLevel() { if (mAutoLevelDic.ContainsKey(mCurrentLevel)) { return mAutoLevelDic[mCurrentLevel]; } return ""; } public void SaveAutoLevel(string pLevelStr) { if (!mAutoLevelDic.ContainsKey(mCurrentLevel)) { mAutoLevelDic[mCurrentLevel] = pLevelStr; Save(); } } #endregion #region guide public bool CheckGuide(int pIndex) { return mFinishedGuideIndex.Contains(pIndex); } public void FinishGuide(int pIndex) { if (!mFinishedGuideIndex.Contains(pIndex)) { mFinishedGuideIndex.Add(pIndex); Save(); } } #endregion }