using LitJson; using UnityEngine; using UnityEngine.UI; using UnityEngine.Events; 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 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_); } } private static double AdAmt_; private static double SkillAmt_; private static double SignAmt_; private static double ShareAmt_; private static double MiniGameAmt_; private static double ElfLevel_; private static double TotalCoin_; private static double FlowerCoin_; private static double TotalPerson_; #endregion public static int Level { get { return Level_; } set { Level_ = value; ManaVisit.UpdateCost(); ManaAchieve.UpdateStatus(AchieveType.GardenLevel, Level_); for (int i = 0; i < SkillList.Count; i++) { SkillList[i].UpdateStatus(); } if (Level_ >= 8) { if (ManaTutorial.TutorialC_) { ManaTutorial.EnterC1(); } else { ManaReso.SetActive("C_Visit", true); } } //if (Level_ == 200) //{ // if (ManaTutorial.TutorialB_) // { // ManaTutorial.TutorialB = true; // ManaTutorial.PrepareStepB1(); // } //} } } 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")); } } public static double Coin { get { return Coin_; } set { if (value - Coin_ > 0) { TotalCoin += value - Coin_; } Coin_ = value; ManaReso.SetText("F_CoinLab", Auxiliary.ShrinkNumberStr(Coin_, 0)); ManaReso.SetText("C_CoinLab", Auxiliary.ShrinkNumberStr(Coin_, 0)); ManaAchieve.UpdateStatus(AchieveType.CurrentCoin, Coin_); } } public static double Diamond { get { return Diamond_; } set { Diamond_ = value; ManaReso.SetText("F_DiamondLab", Auxiliary.ShrinkNumberStr(Diamond_, 0)); } } private static int Level_; private static bool Pause_; private static float Person_; private static float CoinPerson_; private static double Coin_; private static double Diamond_; public static bool MiniLock; public static bool SaveLock; public static bool LoginLock; public static bool OfflineLock; 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() { if (ManaTutorial.TutorialA) { return; } OpThread(); } private void FixedUpdate() { LoginThread(); if (ManaTutorial.TutorialA) { return; } SkillThread(); MiniThread(); MiniThread(); SaveThread(); CircleThread(); } 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; if (MiniTimer < 0) { MiniLock = true; ManaReso.Get("C_MiniGame").TweenForCG(); } } } private void SaveThread() { SaveTimer += Time.fixedDeltaTime; if (SaveTimer >= 60) { SaveTimer = 0; ManaServer.Save(); } } private void LoginThread() { LoginTimer += Time.fixedDeltaTime; if (LoginTimer >= 10) { LoginTimer = 0; ManaServer.Login(); } } 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); Coin += temp; 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 static void Reload() { Complete = false; SaveTimer = 0; ManaTutorial.TutorialB_ = ManaData.GetPlayerBool("TutorialB"); ManaTutorial.TutorialC_ = ManaData.GetPlayerBool("TutorialC"); ManaTutorial.TutorialIndexB = ManaData.GetPlayerInt("TutorialIndexB"); ManaTutorial.TutorialIndexC = ManaData.GetPlayerInt("TutorialIndexC"); foreach (var kv in SkillDic) { kv.Value.Reactive(); } ManaReso.Get("Tree1").GetTweenSr().InOrigin = true; ManaReso.Get("Tree2").GetTweenSr().InOrigin = true; ManaReso.Get("Rainbow").GetTweenSr().InOrigin = true; UseList = new List(); CoolList = new List(); Instance.RegistValueB(); RegistSkill(); RegistIncome(); if (OfflineLock) { if (!ManaTutorial.TutorialA && !ManaTutorial.TutorialB) { ManaReso.Get("C_Group").TweenBacCG(); ManaReso.Get("B_SignIn").TweenForCG(); ManaReso.Get("Ba_Notice").TweenForCG(); } } Complete = true; Level = Level; } public override void Reactive() { foreach (var kv in SkillDic) { kv.Value.Reactive(); } RegistSkill(); RegistIncome(); if (OfflineLock) { if (!ManaTutorial.TutorialA && !ManaTutorial.TutorialB) { ManaReso.Get("C_Group").TweenBacCG(); ManaReso.Get("B_SignIn").TweenForCG(); ManaReso.Get("Ba_Notice").TweenForCG(); } } } 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 == 17) { skillRoot = new Pack(attributeList[i]); } else if (attributeList[i].Count == 23) { skillRoot = new Ability(attributeList[i]); } else if (attributeList[i].Count == 33) { 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 RegistValueB() { Instance = this; 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