224 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			224 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			C#
		
	
	
	
| using System;
 | |
| using System.Collections;
 | |
| using System.Collections.Generic;
 | |
| using UnityEngine;
 | |
| 
 | |
| public class PlayerData : StorageBase<PlayerData>
 | |
| {
 | |
|     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<int, string> mAutoLevelDic = new Dictionary<int, string>();
 | |
| 
 | |
|     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<string> mOwnedCardIDs = new List<string>() { "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<int> mFinishedGuideIndex = new List<int>();
 | |
| 
 | |
|     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
 | |
| } |