/// <summary> /// Returns Dictionary of enemies from XML file /// /// Author: Cole Twitchell /// </summary> /// <returns>Dictionary of enemies</returns> public static Dictionary <string, Enemy> GetEnemiesFromXml() { if (enemies != null) { return(enemies); } Dictionary <string, Enemy> retDictionary = new Dictionary <string, Enemy>(); XmlDocument doc = new XmlDocument(); TextAsset textasset = (TextAsset)Resources.Load(ENEMIES_XML_FILEPATH, typeof(TextAsset)); doc.LoadXml(textasset.text); foreach (XmlNode node in doc.SelectSingleNode("enemies").SelectNodes("enemy")) { string id = node.SelectSingleNode("id").InnerText; float health = float.Parse(node.SelectSingleNode("health").InnerText); float speed = float.Parse(node.SelectSingleNode("speed").InnerText); int value = int.Parse(node.SelectSingleNode("value").InnerText); ColorType color = (ColorType)ColorType.Parse(typeof(ColorType), node.SelectSingleNode("color").InnerText); Enemy e = (GameObject.Instantiate(Resources.Load("Prefabs/Enemies/" + id), LevelManager.PrefabHolderParent) as GameObject).GetComponent <Enemy>(); e.Initialize(health, speed, value, color); retDictionary.Add(id, e); } enemies = retDictionary; return(retDictionary); }
/// <summary> /// Returns Dictionary of Tower types from XML file /// /// Author: Cole Twitchell /// </summary> /// <returns>Dictionary of tower types</returns> public static Dictionary <string, Tower> GetTowersFromXml() { if (towers != null) { return(towers); } Dictionary <string, Tower> retDictionary = new Dictionary <string, Tower>(); XmlDocument doc = new XmlDocument(); TextAsset textasset = (TextAsset)Resources.Load(TOWERS_XML_FILEPATH, typeof(TextAsset)); doc.LoadXml(textasset.text); Transform prefabHolder = GameObject.Find("PrefabHolder").transform; foreach (XmlNode node in doc.SelectSingleNode("towers").SelectNodes("proj-tower")) { string name = node.SelectSingleNode("name").InnerText; int cost = int.Parse(node.SelectSingleNode("cost").InnerText); int upgradeCost = int.Parse(node.SelectSingleNode("upgrade-cost").InnerText); float upgradeCostScale = float.Parse(node.SelectSingleNode("upgrade-cost-scale").InnerText); int maxLevel = int.Parse(node.SelectSingleNode("max-level").InnerText); float range = float.Parse(node.SelectSingleNode("range").InnerText); ColorType color = (ColorType)ColorType.Parse(typeof(ColorType), node.SelectSingleNode("color").InnerText); string description = node.SelectSingleNode("description").InnerText; // Projectile tower specific float projectileDamage = float.Parse(node.SelectSingleNode("proj-damage").InnerText); float projectileSpeed = float.Parse(node.SelectSingleNode("proj-speed").InnerText); float attackRate = float.Parse(node.SelectSingleNode("attack-rate").InnerText); ProjectileTower tower = (GameObject.Instantiate(Resources.Load("Prefabs/Towers/TowerPrefabs/" + name), LevelManager.PrefabHolderParent) as GameObject).GetComponent <ProjectileTower>(); tower.Initialize(name, cost, upgradeCost, upgradeCostScale, maxLevel, range, color, description, attackRate, projectileSpeed, projectileDamage); retDictionary.Add(name, tower); } foreach (XmlNode node in doc.SelectSingleNode("towers").SelectNodes("aoe-tower")) { string name = node.SelectSingleNode("name").InnerText; int cost = int.Parse(node.SelectSingleNode("cost").InnerText); int upgradeCost = int.Parse(node.SelectSingleNode("upgrade-cost").InnerText); float upgradeCostScale = float.Parse(node.SelectSingleNode("upgrade-cost-scale").InnerText); int maxLevel = int.Parse(node.SelectSingleNode("max-level").InnerText); float range = float.Parse(node.SelectSingleNode("range").InnerText); ColorType color = (ColorType)ColorType.Parse(typeof(ColorType), node.SelectSingleNode("color").InnerText); string description = node.SelectSingleNode("description").InnerText; // Projectile tower specific float aoeDamage = float.Parse(node.SelectSingleNode("aoe-damage").InnerText); float attackRate = float.Parse(node.SelectSingleNode("attack-rate").InnerText); AoETower tower = (GameObject.Instantiate(Resources.Load("Prefabs/Towers/TowerPrefabs/" + name), LevelManager.PrefabHolderParent) as GameObject).GetComponent <AoETower>(); tower.Initialize(name, cost, upgradeCost, upgradeCostScale, maxLevel, range, color, description, attackRate, aoeDamage); retDictionary.Add(name, tower); } foreach (XmlNode node in doc.SelectSingleNode("towers").SelectNodes("dot-tower")) { string name = node.SelectSingleNode("name").InnerText; int cost = int.Parse(node.SelectSingleNode("cost").InnerText); int upgradeCost = int.Parse(node.SelectSingleNode("upgrade-cost").InnerText); float upgradeCostScale = float.Parse(node.SelectSingleNode("upgrade-cost-scale").InnerText); int maxLevel = int.Parse(node.SelectSingleNode("max-level").InnerText); float range = float.Parse(node.SelectSingleNode("range").InnerText); ColorType color = (ColorType)ColorType.Parse(typeof(ColorType), node.SelectSingleNode("color").InnerText); string description = node.SelectSingleNode("description").InnerText; // Projectile tower specific float doTDamage = float.Parse(node.SelectSingleNode("dot-damage").InnerText); DoTTower tower = (GameObject.Instantiate(Resources.Load("Prefabs/Towers/TowerPrefabs/" + name), LevelManager.PrefabHolderParent) as GameObject).GetComponent <DoTTower>(); tower.Initialize(name, cost, upgradeCost, upgradeCostScale, maxLevel, range, color, description, doTDamage); retDictionary.Add(name, tower); } towers = retDictionary; return(retDictionary); }