Example #1
0
        public override void ReadXml(XDocument doc)
        {
            XElement attackManipulator =
                doc.Descendants("Manipulator")
                .SingleOrDefault(manipulator => manipulator.Attribute("Type").Value == "Attack");

            if (attackManipulator != null)
            {
                // Settings
                var settingsNode = attackManipulator.Element("Plans");
                Debug.Assert(settingsNode != null);

                Func <string, bool, bool> readSetting = (settingName, defaultValue) =>
                {
                    XAttribute value = settingsNode.Attribute(settingName);
                    return(value != null?Convert.ToBoolean(value.Value) : defaultValue);
                };

                Settings.ShowOtherTargets           = readSetting("ShowOtherTargets", true);
                Settings.ShowOtherAttackers         = readSetting("ShowOtherAttackers", true);
                Settings.ShowIfNotActiveManipulator = readSetting("ShowIfNotActiveManipulator", true);
                Settings.ShowArrivalTimeWhenSentNow = readSetting("ShowArrivalTimeWhenSentNow", false);

                // AttackPlans
                var plans = attackManipulator.Descendants("Plan");
                foreach (XElement xmlPlan in plans)
                {
                    var plan = new AttackPlan(
                        World.Default.GetVillage(xmlPlan.Attribute("Target").Value),
                        DateTime.FromFileTimeUtc(long.Parse(xmlPlan.Attribute("ArrivalTime").Value)));

                    if (xmlPlan.Attribute("Comments") != null)
                    {
                        plan.Comments = xmlPlan.Attribute("Comments").Value;
                    }

                    if (plan.Target != null)
                    {
                        foreach (var attackerXml in xmlPlan.Descendants("Attacker"))
                        {
                            var slowestUnit = (UnitTypes)Enum.Parse(typeof(UnitTypes), attackerXml.Attribute("SlowestUnit").Value);
                            var attacker    = new AttackPlanFrom(
                                plan,
                                World.Default.GetVillage(attackerXml.Attribute("Attacker").Value),
                                WorldUnits.Default[slowestUnit]);

                            plan.AddAttacker(attacker);
                        }

                        _plans.Add(plan);
                    }
                }
            }
        }
Example #2
0
 private void AddAttacker(AttackPlan plan, AttackPlanFrom attacker)
 {
     Debug.Assert(!plan.Attacks.Contains(attacker));
     ActiveAttacker = attacker;
     plan.AddAttacker(attacker);
 }
Example #3
0
        public override void ReadXml(XDocument doc)
        {
            XElement attackManipulator =
                doc.Descendants("Manipulator")
                   .SingleOrDefault(manipulator => manipulator.Attribute("Type").Value == "Attack");

            if (attackManipulator != null)
            {
                // Settings
                var settingsNode = attackManipulator.Element("Plans");
                Debug.Assert(settingsNode != null);

                Func<string, bool, bool> readSetting = (settingName, defaultValue) =>
                {
                    XAttribute value = settingsNode.Attribute(settingName);
                    return value != null ? Convert.ToBoolean(value.Value) : defaultValue;
                };

                Settings.ShowOtherTargets = readSetting("ShowOtherTargets", true);
                Settings.ShowOtherAttackers = readSetting("ShowOtherAttackers", true);
                Settings.ShowIfNotActiveManipulator = readSetting("ShowIfNotActiveManipulator", true);
                Settings.ShowArrivalTimeWhenSentNow = readSetting("ShowArrivalTimeWhenSentNow", false);

                // AttackPlans
                var plans = attackManipulator.Descendants("Plan");
                foreach (XElement xmlPlan in plans)
                {
                    var plan = new AttackPlan(
                        World.Default.GetVillage(xmlPlan.Attribute("Target").Value),
                        DateTime.FromFileTimeUtc(long.Parse(xmlPlan.Attribute("ArrivalTime").Value)));

                    if (xmlPlan.Attribute("Comments") != null)
                    {
                        plan.Comments = xmlPlan.Attribute("Comments").Value;
                    }

                    if (plan.Target != null)
                    {
                        foreach (var attackerXml in xmlPlan.Descendants("Attacker"))
                        {
                            var slowestUnit = (UnitTypes)Enum.Parse(typeof(UnitTypes), attackerXml.Attribute("SlowestUnit").Value);
                            var attacker = new AttackPlanFrom(
                                plan,
                                World.Default.GetVillage(attackerXml.Attribute("Attacker").Value),
                                WorldUnits.Default[slowestUnit]);

                            plan.AddAttacker(attacker);
                        }

                        _plans.Add(plan);
                    }
                }
            }
        }
Example #4
0
 private void AddAttacker(AttackPlan plan, AttackPlanFrom attacker)
 {
     Debug.Assert(!plan.Attacks.Contains(attacker));
     ActiveAttacker = attacker;
     plan.AddAttacker(attacker);
 }