/// <summary> /// Load: initializing Constructor from an xml node. /// </summary> /// <param name="node">A <see cref="BattleStepWeapons"/> XmlNode from a Nova save file (xml document). </param> public BattleStepWeapons(XmlNode node) : base(node) { XmlNode subnode = node.FirstChild; while (subnode != null) { try { switch (subnode.Name.ToLower()) { case "type": Type = subnode.FirstChild.Value; break; case "damage": Damage = double.Parse(subnode.FirstChild.Value, System.Globalization.CultureInfo.InvariantCulture); break; case "targeting": if (subnode.FirstChild.Value.ToLower() == "shields") { Targeting = BattleStepWeapons.TokenDefence.Shields; } else if (subnode.FirstChild.Value.ToLower() == "armor") { Targeting = BattleStepWeapons.TokenDefence.Armor; } else { Report.Error("Unable to read Target type \"" + subnode.FirstChild.Value + "\" in BattleStepWeapons.cs LoadXml()"); Targeting = BattleStepWeapons.TokenDefence.Armor; // take a guess so we can continue } break; case "battlesteptarget": WeaponTarget = new BattleStepTarget(subnode); break; } } catch (Exception e) { Report.Error("Error loading Battle Step - Weapons : " + e.Message); } subnode = subnode.NextSibling; } }
/// <summary> /// Load: initializing Constructor from an xml node. /// </summary> /// <param name="node">A <see cref="BattleReport"/> XmlNode from a Nova save file (xml document).</param> public BattleReport(XmlNode node) { XmlNode subnode = node.FirstChild; while (subnode != null) { try { switch (subnode.Name.ToLower()) { case "root": subnode = subnode.FirstChild; continue; case "battlereport": subnode = subnode.FirstChild; continue; case "location": Location = subnode.FirstChild.Value; break; case "spacesize": SpaceSize = int.Parse(subnode.FirstChild.Value, System.Globalization.CultureInfo.InvariantCulture); break; case "year": Year = int.Parse(subnode.FirstChild.Value, System.Globalization.CultureInfo.InvariantCulture); break; case "battlesteptarget": BattleStepTarget target = new BattleStepTarget(subnode); Steps.Add(target); break; case "battlestepdestroy": BattleStepDestroy destroy = new BattleStepDestroy(subnode); Steps.Add(destroy); break; case "battlestepweapons": BattleStepWeapons weapons = new BattleStepWeapons(subnode); Steps.Add(weapons); break; case "battlestepmovement": BattleStepMovement movement = new BattleStepMovement(subnode); Steps.Add(movement); break; case "losses": int empireId = int.Parse(subnode.SelectSingleNode("EmpireId").FirstChild.Value, System.Globalization.CultureInfo.InvariantCulture); int lossCount = int.Parse(subnode.SelectSingleNode("Count").FirstChild.Value, System.Globalization.CultureInfo.InvariantCulture); Losses.Add(empireId, lossCount); break; case "fleet": Stack newStack = new Stack(subnode); Stacks.Add(newStack.Key, newStack); break; } } catch (Exception e) { Report.Error("Failed to load battle report: " + Environment.NewLine + e.Message); throw e; } subnode = subnode.NextSibling; } }