public Tanks(string tanksDescriptor) { tanks = new Dictionary<string, Tank>(); sortedTanks = new List<Tank>(); nations = new List<string>(); XmlDocument XD = new XmlDocument(); XD.Load(tanksDescriptor); XmlNode XN = XD.DocumentElement; XmlNodeList XNL = XN.SelectNodes("/tanks/tank"); for (int i = 0; i < XNL.Count; i++) { TankType type; switch (XNL.Item(i).SelectSingleNode("type").InnerText) { case "Heavy": type = TankType.Heavy; break; case "Medium": type = TankType.Medium; break; case "Light": type = TankType.Light; break; case "TD": type = TankType.TD; break; case "SPG": type = TankType.SPG; break; default: type = TankType.Heavy; break; } Tank tank = new Tank( XNL.Item(i).Attributes["id"].InnerText, XNL.Item(i).SelectSingleNode("nation").InnerText, XNL.Item(i).SelectSingleNode("name").InnerText, type, System.IO.Path.GetDirectoryName(tanksDescriptor) + "\\" + XNL.Item(i).SelectSingleNode("filename").InnerText ); tanks.Add(tank.id, tank); sortedTanks.Add(tank); if (!nations.Contains(tank.nation)) { nations.Add(tank.nation); } } sortedTanks.Sort(tankSorter); }
private static int tankSorter(Tank a, Tank b) { if (a == null && b == null) { return 0; } else if (a == null) { return -1; } else if (b == null) { return 1; } else { return String.Compare(a.name, b.name); } }