public static bool CheckIfAdded(EvolutionTree et, EvolutionInstance ei) { bool x = false; foreach (EvolutionInstance y in et.Evolutions) { if (ei.Place == y.Place && ei.Move == y.Move && ei.Item == y.Item && ei.Condition == y.Condition) { x = true; break; } } return(x); }
public static List <EvolutionTree> ReadEvoTrees() { List <int> test = new List <int>(); List <EvolutionTree> returnable = new List <EvolutionTree>(); _doc.Load(URL + "evotrees.xml"); XmlElement root = _doc.DocumentElement; XmlElement current; for (int x = 0; x < root.GetElementsByTagName("Instance").Count; x++) { current = (XmlElement)root.ChildNodes[x]; int id = Convert.ToInt32(current.GetElementsByTagName("ID")[0].InnerText); int treenumber = Convert.ToInt32(current.GetElementsByTagName("TreeNumber")[0].InnerText); int placeintree = Convert.ToInt32(current.GetElementsByTagName("PlaceInTree")[0].InnerText); EvoMethod evomethod = Database.GetEvoMethod(Convert.ToInt32(current.GetElementsByTagName("EvoWay")[0].InnerText)); string condition = current.GetElementsByTagName("Condition")[0].InnerText; int level = Convert.ToInt32(current.GetElementsByTagName("Level")[0].InnerText); EvolutionTree et = new EvolutionTree(id, treenumber); EvolutionInstance ei = null; if (returnable.Count > 0) { foreach (EvolutionTree temp in returnable) { if (et.TreeID == temp.TreeID) { et = temp; break; } } } switch (evomethod.Method) { case "Level": case "Level At Time": case "Level At Location": case "Level With Friendship": case "Level With Unique Condition": case "Trade": case "Trade for Specific Pokemon": ei = new EvolutionInstance(id, et.TreeID, placeintree, evomethod, level, condition); break; case "Level With Item": case "Trade With Item": case "Use Stone": ei = new EvolutionInstance(id, et.TreeID, placeintree, evomethod, level, condition, Database.GetItem(Convert.ToInt32(current.GetElementsByTagName("Item")[0].InnerText))); break; case "Level With Move": ei = new EvolutionInstance(id, et.TreeID, placeintree, evomethod, level, condition, Database.GetMove(Convert.ToInt32(current.GetElementsByTagName("Move")[0].InnerText))); break; case "Egg": ei = new EvolutionInstance(id, et.TreeID, placeintree, evomethod); break; } if (!Database.CheckIfAdded(et, ei)) { et.Evolutions.Add(ei); } if (!returnable.Contains(et)) { returnable.Add(et); } foreach (Pokémon p in Database.Pokedex) { if (p.EvoInstanceID == id) { p.AddEvolutionInstance(ei); } } } return(returnable); }