using LitJson; using UnityEngine; using UnityEngine.UI; using UnityEngine.Events; using UnityEngine.Analytics; using UnityEngine.EventSystems; using System; using System.Xml; using System.Collections; using System.Collections.Generic; public class ManaCenter : Regist { #region 变量 #region 成就 public static double AdAmt { get { return AdAmt_; } set { AdAmt_ = value; ManaAchieve.UpdateStatus(AchieveType.AdAmt, AdAmt_); } } public static double SkillAmt { get { return SkillAmt_; } set { SkillAmt_ = value; ManaAchieve.UpdateStatus(AchieveType.SkillAmt, SkillAmt_); } } public static double SignAmt { get { return SignAmt_; } set { SignAmt_ = value; ManaAchieve.UpdateStatus(AchieveType.SignAmt, SignAmt_); } } public static double CloseAmt { get { return CloseAmt_; } set { CloseAmt_ = value; ManaAchieve.UpdateStatus(AchieveType.CloseAmt, CloseAmt_); } } public static double ShareAmt { get { return ShareAmt_; } set { ShareAmt_ = value; ManaAchieve.UpdateStatus(AchieveType.ShareAmt, ShareAmt_); } } public static double MiniGameAmt { get { return MiniGameAmt_; } set { MiniGameAmt_ = value; ManaAchieve.UpdateStatus(AchieveType.MiniGameAmt, MiniGameAmt_); } } public static double ElfLevel { get { return ElfLevel_; } set { ElfLevel_ = value; ManaAchieve.UpdateStatus(AchieveType.ElfLevel, ElfLevel_); } } public static double TotalCoin { get { return TotalCoin_; } set { TotalCoin_ = value; ManaAchieve.UpdateStatus(AchieveType.TotalCoin, TotalCoin_); } } public static double FlowerCoin { get { return FlowerCoin_; } set { FlowerCoin_ = value; ManaAchieve.UpdateStatus(AchieveType.FlowerCoin, FlowerCoin_); } } public static double TotalPerson { get { return TotalPerson_; } set { TotalPerson_ = value; ManaAchieve.UpdateStatus(AchieveType.TotalPerson, TotalPerson_); } } public static double CostDiamond { get { return CostDiamond_; } set { CostDiamond_ = value; ManaAchieve.UpdateStatus(AchieveType.CostDiamond, CostDiamond_); } } private static double AdAmt_; private static double SkillAmt_; private static double SignAmt_; private static double CloseAmt_; private static double ShareAmt_; private static double MiniGameAmt_; private static double ElfLevel_; private static double TotalCoin_; private static double FlowerCoin_; private static double TotalPerson_; private static double CostDiamond_; #endregion public static int Level { get { return Level_; } set { Level_ = value; if (!Complete) { return; } ManaVisit.UpdateCost(); ManaAchieve.UpdateStatus(AchieveType.GardenLevel, Level_); for (int i = 0; i < SkillList.Count; i++) { SkillList[i].UpdateStatus(); } foreach (var kv in ManaPlayer.CloseUnitDic) { kv.Value.OnLevelChange(); } if (Level_ >= 8) { if (ManaTutorial.TutorialC_) { ManaTutorial.EnterC1(); } else { ManaReso.SetActive("C_Visit", true); } } if (Level_ >= 13) { if (ManaTutorial.TutorialD_) { ManaTutorial.EnterD1(); } } if (Level_ >= 18) { if (ManaTutorial.TutorialB_) { ManaTutorial.TutorialB = true; } } if (Level < 13) { ManaReso.Get("C_DressRoom").material = Lib.GrayMat; } else { ManaReso.Get("C_DressRoom").material = null; } if (ManaGarden.MyFlower >= 2 && Level_ >= 22) { if (ManaTutorial.TutorialE_) { ManaTutorial.EnterE1(); } } } } public static float Person { get { return Person_; } set { Person_ = value; ManaReso.SetText("F_PersonLab", (60*(Person_ * (1 + SkillPersonBuff_) + SkillPerson_)).ToString("0")); } } public static float SkillPerson { get { return SkillPerson_; } set { SkillPerson_ = value; TweenOutline tween = ManaReso.Get("F_PersonLab").GetTweenOutline(); if (SkillPerson_.Equal(0)) { tween.Pause(); tween.Target.enabled = false; } else { if (tween.InPause) { tween.Resume(); tween.Target.enabled = true; } else { tween.StartForward(); } } ManaReso.SetText("F_PersonLab", (60*(Person_ * (1 + SkillPersonBuff_) + SkillPerson_)).ToString("0")); } } public static float CoinPerson { get { return CoinPerson_; } set { CoinPerson_ = value; ManaReso.SetText("F_CoinPersonLab", (CoinPerson_ + SkillCoinPerson_).ToString("0")); } } public static float SkillPersonBuff { get { return SkillPersonBuff_; } set { SkillPersonBuff_ = value; ManaReso.SetText("F_PersonLab", (60 * (Person_ * (1 + SkillPersonBuff_) + SkillPerson_)).ToString("0")); } } public static float SkillCoinPerson { get { return SkillCoinPerson_; } set { SkillCoinPerson_ = value; TweenOutline tween = ManaReso.Get("F_CoinPersonLab").GetTweenOutline(); if (SkillCoinPerson_.Equal(0)) { tween.Pause(); tween.Target.enabled = false; } else { if (tween.InPause) { tween.Resume(); tween.Target.enabled = true; } else { tween.StartForward(); } } ManaReso.SetText("F_CoinPersonLab", (CoinPerson_ + SkillCoinPerson_).ToString("0")); } } private static int Level_; private static bool Pause_; private static float Person_; private static float CoinPerson_; public static double Coin { get { return Coin_; } set { Coin_ = value; ManaReso.SetText("F_CoinLab", Auxiliary.ShrinkNumberStr(Coin_)); ManaReso.SetText("C_CoinLab", Auxiliary.ShrinkNumberStr(Coin_)); ManaReso.SetText("P_CoinLab", Auxiliary.ShrinkNumberStr(Coin_)); ManaAchieve.UpdateStatus(AchieveType.CurrentCoin, Coin_); } } public static double Diamond { get { return Diamond_; } set { Diamond_ = value; ManaReso.SetText("F_DiamondLab", Auxiliary.ShrinkNumberStr(Diamond_)); ManaReso.SetText("P_DiamondLab", Auxiliary.ShrinkNumberStr(Diamond_)); } } public static double Coin_; public static double Diamond_; public static bool MiniLock; public static bool SaveLock; public static bool LoginLock; public static bool OfflineLock; public static bool ReactiveLock; public static bool DownloadLock; public static bool SceneSwitchLock; public static bool Complete; public static bool FirstFrame = true; public static bool Background; public static float Elapse; public static float CircleTime = 10; public static float OpTimer; public static float MiniTimer; public static float SaveTimer; public static float LoginTimer; public static float CircleTimer; public static float NewPerson; public static float NewCoinPerson; public static string OfflineFml; public static double MaxCoin; public static double MaxTime; public static float SkillPlus; public static float SkillPerson_; public static float SkillPersonBuff_; public static float SkillCoinPerson_; public static DateTime QuitTime; public static ManaCenter Instance; public static List UseList = new List(); public static List CoolList = new List(); public static List TempCoolList = new List(); public static List> TempUseList = new List>(); public static List SkillList = new List(); public static Dictionary SkillDic = new Dictionary(); #endregion private void Update() { LoginThread(); if (ManaTutorial.TutorialA) { return; } OpThread(); SkillThread(); MiniThread(); SaveThread(); CircleThread(); } public static void AddCoin(double amt, StaticsManager.ItemID itemId, StaticsManager.ConsumeModule consumeModule) { Coin += amt; if (amt > 0) { TotalCoin += amt; StaticsManager.GetInstance().RewardItem(itemId, StaticsManager.ItemType.金币, amt.ToString("0"), consumeModule); } } public static void AddDiamond(double amt, StaticsManager.ItemID itemId, StaticsManager.ConsumeModule consumeModule) { Diamond += amt; if (amt > 0) { StaticsManager.GetInstance().RewardItem(itemId, StaticsManager.ItemType.钻石, amt.ToString("0"), consumeModule); } } private void OpThread() { if (Auxiliary.AnyKeyUp) { OpTimer = 0; ManaReso.Get("C_Group").TweenForCG(); } else { OpTimer += Time.deltaTime; if (OpTimer >= 60) { OpTimer = 0; ManaReso.Get("C_Group").TweenBacCG(); } } } private void SkillThread() { for (int i = 0; i < UseList.Count; i++) { if (UseList[i].DoUse()) { UseList.RemoveAt(i--); } } for (int i = 0; i < CoolList.Count; i++) { if (CoolList[i].DoCool()) { CoolList.RemoveAt(i--); } } } private void MiniThread() { if (!MiniLock) { MiniTimer -= Time.deltaTime; ManaReso.SetText("C_MiniGameLab", Mathf.CeilToInt(MiniTimer).ToString()); if (MiniTimer < 0) { MiniLock = true; ManaReso.Get("C_MiniGame").TweenBacRect(); ManaReso.SetText("C_MiniGameLab", ""); StaticsManager.GetInstance().RewardItem(StaticsManager.ItemID.获得小游戏, StaticsManager.ItemType.小游戏, "1", StaticsManager.ConsumeModule.None); } } } private void SaveThread() { if (DownloadLock) { return; } SaveTimer += Time.deltaTime; if (SaveTimer >= 60) { SaveTimer = 0; ManaServer.Save(); } } private void LoginThread() { LoginTimer += Time.deltaTime; if (LoginTimer >= 10) { LoginTimer = 0; ManaServer.Login(); StaticsManager.GetInstance().Online(); } } private void CircleThread() { CircleTimer -= Time.deltaTime; if (CircleTimer < 0) { CircleTimer = CircleTime; NewPerson = Person * (1 + SkillPersonBuff) + SkillPerson; NewCoinPerson = CoinPerson + SkillCoinPerson; TotalPerson += NewPerson * CircleTime; float temp = (NewPerson * NewCoinPerson * CircleTime) * (1 + SkillPlus); AddCoin(temp, StaticsManager.ItemID.获得金币, StaticsManager.ConsumeModule.Income); ManaReso.Get("C_IncomeLab").TweenReForGra(); ManaReso.Get("C_IncomeLab").TweenReForVec(); ManaReso.SetText("C_IncomeLab", "+" + Auxiliary.ShrinkNumberStr(temp, 0)); ManaDebug.Log(string.Format("参观收益{0:0.0} = {1} * {2} * {3} * {4} (人次*金币*时间*加成)", temp, NewPerson, NewCoinPerson, CircleTime, 1 + SkillPlus)); } } public override void Reactive() { foreach (var kv in SkillDic) { kv.Value.Reactive(); } RegistSkill(false); RegistIncome(); ManaSign.ShowOfflineReward(); } public override void Instantiate() { #region 生成技能条 #region 读技能配置 List attributeList = ManaData.GetSkillConfig(); for (int i = 0; i < attributeList.Count; i++) { SkillRoot skillRoot; #region MyRegion if (attributeList[i].Count == 18) { skillRoot = new Pack(attributeList[i]); } else if (attributeList[i].Count == 24) { skillRoot = new Ability(attributeList[i]); } else if (attributeList[i].Count == 34) { if (string.IsNullOrEmpty(attributeList[i][4].Value)) { skillRoot = new Skill(attributeList[i]); } else { skillRoot = new BigSkill(attributeList[i]); } } else { throw new Exception(attributeList[i].Count.ToString()); } #endregion SkillDic.Add(skillRoot.ID, skillRoot); SkillList.Add(skillRoot); } SkillList.Sort(SkillRoot.Sort); #endregion for (int i = 0; i < SkillList.Count; i++) { if (SkillList[i].SkillTab != SkillTab.Null) { ManaReso.GetSkillItem(SkillList[i]); } } #endregion } public override void RegistValueA() { ManaReso.Get("F_Elf").material = ManaReso.Load("GrayMat", Folder.UI); ManaReso.Get("F_Store").material = ManaReso.Load("GrayMat", Folder.UI); ManaReso.Get("F_Magic").material = ManaReso.Load("GrayMat", Folder.UI); ManaReso.Get("F_ElfLab").material = ManaReso.Load("GrayMat", Folder.UI); ManaReso.Get("F_StoreLab").material = ManaReso.Load("GrayMat", Folder.UI); ManaReso.Get("F_MagicLab").material = ManaReso.Load("GrayMat", Folder.UI); ManaReso.Get