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 Manager : Regist { #region Config #region 成就 public static double AdAmt { get { return AdAmt_; } set { AdAmt_ = value; AchieveManager.UpdateStatus(AchieveType.PlayADsAmt, AdAmt_); } } public static double SkillAmt { get { return SkillAmt_; } set { SkillAmt_ = value; AchieveManager.UpdateStatus(AchieveType.UseSkillAmt, SkillAmt_); } } public static double SignAmt { get { return SignAmt_; } set { SignAmt_ = value; AchieveManager.UpdateStatus(AchieveType.SignAmt, SignAmt_); } } public static double CloseAmt { get { return CloseAmt_; } set { CloseAmt_ = value; AchieveManager.UpdateStatus(AchieveType.CloseAmt, CloseAmt_); } } public static double ShareAmt { get { return ShareAmt_; } set { ShareAmt_ = value; AchieveManager.UpdateStatus(AchieveType.ShareAmt, ShareAmt_); } } public static double MiniGameAmt { get { return MiniGameAmt_; } set { MiniGameAmt_ = value; AchieveManager.UpdateStatus(AchieveType.PlayMinigameAmt, MiniGameAmt_); } } public static double ElfLevel { get { return ElfLevel_; } set { ElfLevel_ = value; AchieveManager.UpdateStatus(AchieveType.AllElfLevel, ElfLevel_); } } public static double TotalCoin { get { return TotalCoin_; } set { TotalCoin_ = value; AchieveManager.UpdateStatus(AchieveType.TotalCoin, TotalCoin_); } } public static double FlowerCoin { get { return FlowerCoin_; } set { FlowerCoin_ = value; AchieveManager.UpdateStatus(AchieveType.TotalFlowerAwardCoin, FlowerCoin_); } } public static double TotalPerson { get { return TotalPerson_; } set { TotalPerson_ = value; AchieveManager.UpdateStatus(AchieveType.TotalVisitPerson, TotalPerson_); } } public static double CostDiamond { get { return CostDiamond_; } set { CostDiamond_ = value; AchieveManager.UpdateStatus(AchieveType.SpendDiamond, CostDiamond_); } } public static double CreateRoomAmt { get { return CreateRoomAmt_; } set { CreateRoomAmt_ = value; AchieveManager.UpdateStatus(AchieveType.CreateRoomAmt, CreateRoomAmt_); } } public static double CreateChestAmt { get { return CreateChestAmt_; } set { CreateChestAmt_ = value; AchieveManager.UpdateStatus(AchieveType.CreateChestAmt, CreateChestAmt_); } } public static double CreateLuckyChestAmt { get { return CreateLuckyChestAmt_; } set { CreateLuckyChestAmt_ = value; AchieveManager.UpdateStatus(AchieveType.CreateLuckyChestAmt, CreateLuckyChestAmt_); } } public static double CreateGuessColorChestAmt { get { return CreateGuessColorChestAmt_; } set { CreateGuessColorChestAmt_ = value; AchieveManager.UpdateStatus(AchieveType.CreateGuessColorChestAmt, CreateGuessColorChestAmt_); } } public static double CreateGuessNumberChestAmt { get { return CreateGuessNumberChestAmt_; } set { CreateGuessNumberChestAmt_ = value; AchieveManager.UpdateStatus(AchieveType.CreateGuessNumberChestAmt, CreateGuessNumberChestAmt_); } } public static double GetChestAwardAmt { get { return GetChestAwardAmt_; } set { GetChestAwardAmt_ = value; AchieveManager.UpdateStatus(AchieveType.GetChestAwardAmt, GetChestAwardAmt_); } } 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_; private static double CreateRoomAmt_; private static double CreateChestAmt_; private static double CreateLuckyChestAmt_; private static double CreateGuessColorChestAmt_; private static double CreateGuessNumberChestAmt_; private static double GetChestAwardAmt_; #endregion public static Action OnLevelChange; public static int Level { get { return Level_; } set { Level_ = value; if (!Complete) { return; } VisitManager.UpdateCost(); if (OnLevelChange != null) { OnLevelChange.Invoke(); } AchieveManager.UpdateStatus(AchieveType.GardenLevel, Level_); for (int i = 0; i < SkillList.Count; i++) { SkillList[i].UpdateStatus(); } foreach (var kv in PlayerManager.CloseItemDic) { kv.Value.OnLevelChange(); } if (Level_ >= TutorialManager.MemoryMinigameTutorialLevel) { if (TutorialManager.memoryMinigameTutorial) { TutorialManager.MemoryMinigameTutorial = true; } } if (Level < TutorialManager.DressroomTutorialLevel) { ResourceManager.Get(ObjectLabel.C_DressRoom).material = Lib.GrayMat; } else { ResourceManager.Get(ObjectLabel.C_DressRoom).material = null; } if (GardenManager.MyFlower >= TutorialManager.MinFlowerForFindGame && Level_ >= TutorialManager.FindMinigameTutorialLevel) { if (TutorialManager.findMinigameTutorial) { TutorialManager.PlayFindGame(); } } if (Level_ >= TutorialManager.VisitTutorialLevel) { if (TutorialManager.visitTutorial) { TutorialManager.ClickVisitBtn(); return; } else { ResourceManager.SetActive(ObjectLabel.C_Visit, true); } } if (Level_ >= TutorialManager.DressroomTutorialLevel) { if (TutorialManager.dressroomTutorial) { TutorialManager.ClickDressroomButton(); return; } } if (Level_ >= TutorialManager.PlazaRoomTutorialLevel) { if (TutorialManager.plazaRoomTutorial) { TutorialManager.ClickPlazaRoomBtn(); return; } else { ResourceManager.SetActive(ObjectLabel.C_EnterPlazaRoom, true); } } } } public static float Person { get { return Person_; } set { Person_ = value; ResourceManager.SetText(ObjectLabel.F_PersonLab, (IncomeDisplayTime*(Person_ * (1 + SkillPersonBuff_) + SkillPerson_)).ToString("0")); } } public static float SkillPerson { get { return SkillPerson_; } set { SkillPerson_ = value; TweenOutline tween = ResourceManager.Get(ObjectLabel.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(); } } ResourceManager.SetText(ObjectLabel.F_PersonLab, (IncomeDisplayTime * (Person_ * (1 + SkillPersonBuff_) + SkillPerson_)).ToString("0")); } } public static float CoinPerson { get { return CoinPerson_; } set { CoinPerson_ = value; ResourceManager.SetText(ObjectLabel.F_CoinPersonLab, (CoinPerson_ + SkillCoinPerson_).ToString("0")); } } public static float SkillPersonBuff { get { return SkillPersonBuff_; } set { SkillPersonBuff_ = value; ResourceManager.SetText(ObjectLabel.F_PersonLab, (IncomeDisplayTime * (Person_ * (1 + SkillPersonBuff_) + SkillPerson_)).ToString("0")); } } public static float SkillCoinPerson { get { return SkillCoinPerson_; } set { SkillCoinPerson_ = value; TweenOutline tween = ResourceManager.Get(ObjectLabel.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(); } } ResourceManager.SetText(ObjectLabel.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; ResourceManager.SetText(ObjectLabel.F_CoinLab, Auxiliary.ShrinkNumberStr(Coin_)); ResourceManager.SetText(ObjectLabel.C_CoinLab, Auxiliary.ShrinkNumberStr(Coin_)); ResourceManager.SetText(ObjectLabel.P_CoinLab, Auxiliary.ShrinkNumberStr(Coin_)); AchieveManager.UpdateStatus(AchieveType.CurrentCoin, Coin_); } } public static double Diamond { get { return Diamond_; } set { Diamond_ = value; ResourceManager.SetText(ObjectLabel.F_DiamondLab, Auxiliary.ShrinkNumberStr(Diamond_)); ResourceManager.SetText(ObjectLabel.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 Manager 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 (TutorialManager.NewplayerTutorial) { return; } OpThread(); SkillThread(); MiniThread(); SaveThread(); IncomeCircleThread(); } 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 static float InputDetectTime = 60f; private void OpThread() { if (Auxiliary.AnyKeyUp) { OpTimer = 0; ResourceManager.Get(ObjectLabel.C_Group).TweenForCG(); } else { OpTimer += Time.deltaTime; if (OpTimer >= InputDetectTime) { OpTimer = 0; ResourceManager.Get(ObjectLabel.C_Group).TweenBacCG(); } } } private void SkillThread() { for (int i = 0; i < UseList.Count; i++) { if (UseList[i].DoUpdate()) { 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; ResourceManager.SetText(ObjectLabel.C_MiniGameLab, Mathf.CeilToInt(MiniTimer).ToString()); if (MiniTimer < 0) { MiniLock = true; ResourceManager.Get(ObjectLabel.C_MiniGame).TweenBacRect(); ResourceManager.SetText(ObjectLabel.C_MiniGameLab, ""); StaticsManager.GetInstance().RewardItem(StaticsManager.ItemID.获得小游戏, StaticsManager.ItemType.小游戏, "1", StaticsManager.ConsumeModule.None); } } } private static float SaveConfigTime = 60f; private void SaveThread() { if (DownloadLock) { return; } SaveTimer += Time.deltaTime; if (SaveTimer >= SaveConfigTime) { SaveTimer = 0; HttpManager.Save(); } } private void LoginThread() { LoginTimer += Time.deltaTime; if (LoginTimer >= 10) { LoginTimer = 0; HttpManager.Login(); StaticsManager.GetInstance().Online(); } } private static float IncomeDisplayTime = 60f; private void IncomeCircleThread() { 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); ResourceManager.Get(ObjectLabel.C_IncomeLab).TweenReForGra(); ResourceManager.Get(ObjectLabel.C_IncomeLab).TweenReForVec(); ResourceManager.SetText(ObjectLabel.C_IncomeLab, "+" + Auxiliary.ShrinkNumberStr(temp, 0)); } } public override void Reactive() { foreach (var kv in SkillDic) { kv.Value.Reactive(); } RegistSkill(false); RegistIncome(); SignManager.ShowOfflinePanel(); } public override void InstantiatePrefabs() { #region 生成技能条 #region 读技能配置 List attributeList = ConfigManager.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.FullID, skillRoot); SkillList.Add(skillRoot); } SkillList.Sort(SkillRoot.Sort); #endregion for (int i = 0; i < SkillList.Count; i++) { if (SkillList[i].SkillTab != SkillTab.Null) { ResourceManager.GetSkillItem(SkillList[i]); } } #endregion } public override void FirstInit() { ResourceManager.Get(ObjectLabel.F_Elf).material = Lib.GrayMat; ResourceManager.Get(ObjectLabel.F_Store).material = Lib.GrayMat; ResourceManager.Get(ObjectLabel.F_Magic).material = Lib.GrayMat; ResourceManager.Get(ObjectLabel.F_ElfLab).material = Lib.GrayMat; ResourceManager.Get(ObjectLabel.F_StoreLab).material = Lib.GrayMat; ResourceManager.Get(ObjectLabel.F_MagicLab).material = Lib.GrayMat; ResourceManager.Get