using LitJson; using UnityEngine; using UnityEngine.UI; using UnityEngine.Events; using System; using System.Xml; using System.Collections; using System.Collections.Generic; using Random = UnityEngine.Random; public enum ConfigSource { Fake, Random, SerialNumber, } public class VisitData { //public bool Praised; public JsonData JsonData; public XmlDocument Document; public VisitData(JsonData jsonData, XmlDocument document) { JsonData = jsonData; Document = document; } } public class VisitManager : Regist { #region Config #region 配置 public static int VisitCost { get { return visitCost; } set { visitCost = value; ResourceManager.Get(CanvasLabel.C_CostLab).text = TransferLabel.CoinSprite + VisitCost; } } public static int visitCost; public static int VisitCDTime; public static float FancyGardenRate; public static float CreateAwardRate; public static float FakeGardenRate; public static string VisitCostFml; public static string AwardMinFml; public static string AwardMaxFml; #endregion public static int MaxTipAmt = 10; public static Action OnExitVisteeGarden; public static Action OnEnterVisteeGarden; public static int MaxStachConfigAmt = 8; public static float PullArchiveTime = 0.5f; public static float PullConfigTimer; public static List UsedDataList = new List(); public static List UnusedDataList = new List(); public static bool Inited; public static bool InVisit; public static bool IsPullConfigComplete; public static bool IsBlackMaskTweenComplete; public static int VisiteeLevel; public static int VisiteeTotalSlot; public static int VisiteePraiseAmt; public static string VisiteeSerialNumber; public static XmlNode VisiteeRootNode; public static XmlDocument VisiteeDocument; public static List VisiteePlantList; public static bool PlayerBirdFlag; public static bool PlayerTreeFlag; public static bool PlayerRainbowFlag; public static List PlayerPlantList; public static List PlayerElfList; #endregion public void Update() { if (UnusedDataList.Count > MaxStachConfigAmt) { return; } PullConfigTimer += Time.deltaTime; if (PullConfigTimer >= PullArchiveTime) { PullConfigTimer = 0; HttpManager.GetRandomConfig ( data => { PullConfigCallback(data, null, SavePulledConfig); } ); } } public static void Init() { XmlAttributeCollection attribute = ConfigManager.GetVisitConfig(); VisitCostFml = attribute[5].Value; VisitCost = Mathf.FloorToInt((float)Auxiliary.FmlParse(VisitCostFml, "l", Manager.GardenLevel.ToString())); AwardMinFml = attribute[2].Value; AwardMaxFml = attribute[3].Value; VisitCDTime = int.Parse(attribute[4].Value); FancyGardenRate = float.Parse(attribute[7].Value); CreateAwardRate = float.Parse(attribute[1].Value); FakeGardenRate = float.Parse(attribute[6].Value); #region 倒计时 if (VisitCDTime != 0) { Text text = ResourceManager.Get(CanvasLabel.C_VisitLab); List delayList = new List(); List durationList = new List(); List pairList = new List(); List actionList = new List(); Vector3 v1 = new Vector3(0.75f, 0.75f, 0.75f); Vector3 v2 = new Vector3(0.4f, 0.4f, 0.4f); Vector3 v3 = new Vector3(0, 0, 0); for (int i = 0; i < VisitCDTime - 1; i++) { delayList.Add(0.5f); delayList.Add(0); } delayList.Add(0.5f); for (int i = 0; i < VisitCDTime; i++) { durationList.Add(0.25f); durationList.Add(0.25f); pairList.Add(new VecPair(v1, v2)); pairList.Add(new VecPair(v2, v3)); var tempInt = i; actionList.Add ( () => { text.text = (VisitCDTime - tempInt).ToString(); AudioManager.PlayClip(AudioLabel.ClickButton); } ); actionList.Add(null); } TweenRoot tween = ResourceManager.Get(CanvasLabel.C_VisitLab).CreateStreamScale ( delayList, durationList, pairList, true, false, Curve.EaseOutQuad, false, actionList ); tween.OnForwardFinish += () => { AudioManager.PlayClip(AudioLabel.Bubble); }; } #endregion Inited = true; } public static void OnStartEnterVisiteeGarden() { ResourceManager.SetActive(CanvasLabel.C_EnterPlazaRoom0, false); } public static void EnterVisiteeGarden(VisitData visitData) { IsPullConfigComplete = true; VisiteePraiseAmt = int.Parse(visitData.JsonData["p"].ToString()); if (visitData.JsonData.Inst_Object.ContainsKey("i")) { VisiteeSerialNumber = visitData.JsonData["i"].ToString(); } VisiteeDocument = visitData.Document; SetVisiteeCommentPanel(); EnterVisiteeGarden(); OnEnterVisteeGarden.SafeInvoke(); } public static void StartExitVisiteeGarden() { ResourceManager.Get(CanvasLabel.I_BlackMask).TweenForCG(); HideTip (); ResourceManager.SetActive(CanvasLabel.C_Visit, true); ResourceManager.SetActive(CanvasLabel.C_Coin, true); ResourceManager.SetActive(CanvasLabel.C_Group1, true); ResourceManager.SetActive(CanvasLabel.C_Group2, true); ResourceManager.Get