using UnityEngine; using System.Xml; using System.Collections; using System.Collections.Generic; using LitJson; public class ManaVisit { #region 变量 #region 配置 public static int LevelMin; public static int LevelMax; public static float CreatePosi; #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 void Regist() { CreatePosi = 0.75f; } public static void Exit() { ManaReso.Get("I_BlackMask").TweenForCG(); ManaReso.SetActive("C_Return", false); #region Garden ManaGarden.RetriveFlowerAll(); for (int i = 0; i < ManaGarden.PageList.Count; i++) { ManaReso.Save(ManaGarden.PageList[i]); } Garden.CurPage = 0; ManaGarden.SlotList = new List(); ManaGarden.PageList = new List(); 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; } else { ManaGarden.SlotList[i].Valid = 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(); ManaReso.SetActive("C_Return", true); 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; #region Bird Tree Rainbow if (!Visit) { if (ManaReso.Get("Bird").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]); } 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; } else { ManaGarden.SlotList[i].Valid = false; } } List> plantList = Data.GetPlantList(Node); for (int i = 0; i < plantList.Count; i++) { 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 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(); // } // ); //} } }