コード例 #1
0
        /// <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;
            }
        }
コード例 #2
0
        /// <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;
            }
        }