227 lines
5.4 KiB
C#
227 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);
|
|
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.IsNoAllAD = 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)
|
|
{
|
|
if (mLoginCount > 1 || mCurrentLevel > 1)
|
|
return true;
|
|
|
|
return mFinishedGuideIndex.Contains(pIndex);
|
|
}
|
|
|
|
public void FinishGuide(int pIndex)
|
|
{
|
|
if (!mFinishedGuideIndex.Contains(pIndex))
|
|
{
|
|
mFinishedGuideIndex.Add(pIndex);
|
|
Save();
|
|
}
|
|
}
|
|
#endregion
|
|
} |