using UnityEngine; using System.Xml; using System.Collections; using System.Collections.Generic; using LitJson; using UnityEngine.Events; using UnityEngine.UI; public class ManaVisit { #region 变量 #region 配置 public static int Cost; public static int LevelMin; public static int LevelMax; public static int CoolTime; public static int AwardMin; public static int AwardMax; public static float AwardRate; public static float CreateRate; #endregion public static bool Visit; public static bool LoadFinish; public static bool TweenFinish; public static string XmlStr; public static int Slot; public static int Level; public static int PageAmt; public static string Player; public static XmlNode Node; public static XmlDocument Document; public static bool Bird; public static bool Tree; public static bool Rainbow; public static List VisitPlantList; public static List OriginPlantList; public static List OriginElfList; #endregion public static void Initialize() { XmlAttributeCollection attribute = Data.GetVisitConfig(); Cost = Mathf.FloorToInt((float)Auxiliary.FmlParse(attribute[5].Value, "l", ManaData.Level.ToString())); AwardMin = Mathf.CeilToInt((float) Auxiliary.FmlParse(attribute[2].Value)); AwardMax = Mathf.CeilToInt((float)Auxiliary.FmlParse(attribute[3].Value, "l", ManaData.Level.ToString())); CoolTime = int.Parse(attribute[4].Value); AwardRate = float.Parse(attribute[1].Value); #region 倒计时 if (CoolTime != 0) { Text text = ManaReso.Get("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 < CoolTime - 1; i++) { delayList.Add(0.5f); delayList.Add(0); } delayList.Add(0.5f); for (int i = 0; i < CoolTime; 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 = (CoolTime - tempInt).ToString(); ManaAudio.PlayClip(Clip.BtnClip); } ); actionList.Add(null); } actionList.Add ( () => { ManaAudio.PlayClip(Clip.BubbleClip); } ); ManaReso.Get("C_VisitLab").CreateStreamScale ( delayList, durationList, pairList, true, false, Curve.EaseOutQuad, false, actionList ); } #endregion } public static void Exit() { ManaReso.Get("I_BlackMask").TweenForCG(); ManaReso.SetActive("C_Visit", true); ManaReso.SetActive("C_Coin", true); ManaReso.SetActive("C_Group1", true); ManaReso.SetActive("C_Group2", true); ManaReso.SetActive("C_Return", false); ManaReso.SetActive("C_Garden", false); ManaGarden.AwardValid = true; #region Garden ManaGarden.RetriveFlowerAll(); for (int i = 0; i < ManaGarden.PageList.Count; i++) { ManaReso.Save(ManaGarden.PageList[i]); } ManaGarden.PageList = new List(); Garden.CurPage = 0; ManaGarden.SlotList = new List(); ManaGarden.PageList = new List(); Garden.Garden2.position = Garden.GardenPos2[0]; Garden.Garden3.position = Garden.GardenPos3[0]; Garden.Garden4.position = Garden.GardenPos4[0]; Garden.GardenPage.position = Garden.PagePos[0]; for (int i = 0; i < ManaGarden.SlotAmt / 7 + 2; i++) { ManaGarden.CreatePage(); } for (int i = 0; i < ManaGarden.SlotList.Count; i++) { if (i < ManaGarden.SlotAmt) { ManaGarden.SlotList[i].Valid = true; ManaGarden.SlotList[i].Available = true; } else { ManaGarden.SlotList[i].Valid = false; ManaGarden.SlotList[i].Available = false; } } List> plantList = Data.GetPlantList(); for (int i = 0; i < plantList.Count; i++) { ManaGarden.PlantFlower(plantList[i].Key, plantList[i].Value); } #endregion #region Bird Tree Rainbow if (Bird) { ManaReso.Get("Bird0").GetTweenSr().InDestination = true; } else { ManaReso.Get("Bird0").GetTweenSr().InOrigin = true; } if (Tree) { ManaReso.Get("Tree1").GetTweenSr().InDestination = true; ManaReso.Get("Tree2").GetTweenSr().InDestination = true; } else { ManaReso.Get("Tree1").GetTweenSr().InOrigin = true; ManaReso.Get("Tree2").GetTweenSr().InOrigin = true; } if (Rainbow) { ManaReso.Get("Rainbow").GetTweenSr().InDestination = true; } else { ManaReso.Get("Rainbow").GetTweenSr().InOrigin = true; } #endregion #region Player ManaReso.Save(ManaPlayer.Player); ManaReso.TraDic.Remove("Player"); ManaPlayer.Instance.GetPlayer(); Garden.PlayerPos = new List(); Garden.Player = ManaReso.Get("Player"); Garden.PlayerPos.Add(ManaPlayer.Player.ChildDic["Pos1"].position); Garden.PlayerPos.Add(ManaPlayer.Player.ChildDic["Pos2"].position); #endregion ManaGarden.ElfList = new List(OriginElfList); Visit = false; } public static void Enter() { if (!LoadFinish || !TweenFinish) { return; } ManaReso.Get("I_BlackMask").TweenForCG(); Document = new XmlDocument(); Document.LoadXml(XmlStr); Node = Document.SelectSingleNode("PlayerConfig"); Slot = int.Parse(Node.SelectSingleNode("Slot").Attributes[0].Value); Level = int.Parse(Node.SelectSingleNode("Level").Attributes[0].Value); Player = Node.SelectSingleNode("Player").Attributes[0].Value; ManaReso.SetText("C_GardenLab", Language.GetStr("UI", "C_GardenLab") + Level); ManaReso.SetActive("C_Coin", false); ManaReso.SetActive("C_Group1", false); ManaReso.SetActive("C_Group2", false); ManaReso.SetActive("C_Garden", true); if (!ManaTutorial.TutorialC) { ManaReso.SetActive("C_Return", true); } ManaGarden.AwardValid = false; #region Bird Tree Rainbow if (!Visit) { if (ManaReso.Get("Bird0").gameObject.activeSelf) { Bird = true; } if (ManaReso.Get("Tree1").gameObject.activeSelf) { Tree = true; } if (ManaReso.Get("Rainbow").gameObject.activeSelf) { Rainbow = true; } } ManaReso.SetActive("Bird0", false); ManaReso.SetActive("Tree1", false); ManaReso.SetActive("Tree2", false); ManaReso.SetActive("Rainbow", false); #endregion #region Ability if (!Visit) { Data.SavePlantList(); OriginElfList = new List(ManaGarden.ElfList); } ManaGarden.ElfList = new List(); List attributeList = Data.GetSkillList(Node); for (int i = 0; i < attributeList.Count; i++) { if (!attributeList[i][0].Value.Contains("Ability")) { continue; } if (int.Parse(attributeList[i][3].Value) == 0) { continue; } if (attributeList[i][0].Value == "Ability2") { ManaReso.Get("Rainbow").GetTweenSr().InDestination = true; } else if (attributeList[i][0].Value == "Ability3") { ManaReso.Get("Tree1").GetTweenSr().InDestination = true; ManaReso.Get("Tree2").GetTweenSr().InDestination = true; } else if (attributeList[i][0].Value == "Ability4") { ManaReso.Get("Bird0").GetTweenSr().InDestination = true; } else if (attributeList[i][0].Value == "Ability5") { ManaGarden.ElfList.Add(ObjType.BeeYellow); } else if (attributeList[i][0].Value == "Ability6") { Slot++; ManaGarden.ElfList.Add(ObjType.BeePurple); } else if (attributeList[i][0].Value == "Ability7") { Slot++; ManaGarden.ElfList.Add(ObjType.BeeBlue); } else if (attributeList[i][0].Value == "Ability8") { Slot++; ManaGarden.ElfList.Add(ObjType.BeeRed); } else if (attributeList[i][0].Value == "Ability9") { Slot++; ManaGarden.ElfList.Add(ObjType.BeeWhite); } else if (attributeList[i][0].Value == "Ability10") { Slot++; ManaGarden.ElfList.Add(ObjType.ButterflyYellow); } else if (attributeList[i][0].Value == "Ability11") { Slot++; ManaGarden.ElfList.Add(ObjType.ButterflyPurple); } else if (attributeList[i][0].Value == "Ability12") { Slot++; ManaGarden.ElfList.Add(ObjType.ButterflyBlue); } else if (attributeList[i][0].Value == "Ability13") { Slot++; ManaGarden.ElfList.Add(ObjType.ButterflyRed); } else if (attributeList[i][0].Value == "Ability14") { Slot++; ManaGarden.ElfList.Add(ObjType.ButterflyWhite); } } #endregion #region Garden OriginPlantList = new List(ManaGarden.PlantList); ManaGarden.RetriveFlowerAll(); for (int i = 0; i < ManaGarden.PageList.Count; i++) { ManaReso.Save(ManaGarden.PageList[i]); } ManaGarden.PageList = new List(); Garden.CurPage = 0; ManaGarden.SlotList = new List(); ManaGarden.PageList = new List(); for (int i = 0; i < Slot/7 + 2; i++) { ManaGarden.CreatePage(); } for (int i = 0; i < ManaGarden.SlotList.Count; i++) { if (i < Slot) { ManaGarden.SlotList[i].Valid = true; ManaGarden.SlotList[i].Available = true; } else { ManaGarden.SlotList[i].Valid = false; ManaGarden.SlotList[i].Available = false; } } List> plantList = Data.GetPlantList(Node); Debug.Log("Count" + ManaGarden.PlantList.Count); for (int i = 0; i < plantList.Count; i++) { Debug.Log("Plant : " + plantList[i].Key + " " + plantList[i].Value); ManaGarden.PlantFlower(plantList[i].Key, plantList[i].Value); } #endregion #region Player ManaReso.Save(ManaPlayer.Player); ManaReso.TraDic.Remove("Player"); ManaPlayer.Instance.GetPlayer(Player); Garden.PlayerPos = new List(); Garden.Player = ManaReso.Get("Player"); Garden.PlayerPos.Add(ManaPlayer.Player.ChildDic["Pos1"].position); Garden.PlayerPos.Add(ManaPlayer.Player.ChildDic["Pos2"].position); #endregion #region Award if (Random.Range(0f,1f) <= AwardRate) { ManaGarden.PlantList.Random().Flower.Award = true; } #endregion Visit = true; } public static void DataReverse() { if (Visit) { VisitPlantList = new List(ManaGarden.PlantList); ManaGarden.PlantList = OriginPlantList; } } public static void DataRecover() { if (Visit) { ManaGarden.PlantList = VisitPlantList; } } public static void GetArchive() { ManaServer.Load ( "hsoiv1", (jsonData) => { LoadFinish = true; XmlStr = jsonData["l"].ToString(); Enter(); } ); //if (Random.Range(0f, 1f) <= CreatePosi) //{ // XmlDocument document = new XmlDocument(); // document.LoadXml(Data.PlayerDoc.OuterXml); // document.SelectSingleNode("Level").Value = ((int) Mathf.Lerp(LevelMin, LevelMax, Random.Range(0f, 1f))).ToString(); // #region 生成技能数据 // List intList = new List() {19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}; // int tempInt = (int)Mathf.Lerp(6, 12, Random.Range(0f, 1f)); // XmlNodeList nodeList = document.SelectNodes("Skill"); // for (int i = 0; i < tempInt; i++) // { // nodeList[intList.Random(true)].Attributes[3].Value = "1"; // } // for (int i = 0; i < intList.Count; i++) // { // nodeList[intList.Random(true)].Attributes[3].Value = "0"; // } // #endregion // LoadFinish = true; // XmlStr = document.OuterXml; // Enter(); //} //else //{ // ManaServer.Load // ( // "hsoiv1", // (jsonData) => // { // LoadFinish = true; // XmlStr = jsonData.ToJson(); // Enter(); // } // ); //} } }