mergemilitary/Assets/Scripts/Storage/PlayerData.cs

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
}