Ejemplo n.º 1
0
        /// <summary>
        /// Gets the first plan where the village is either the target
        /// or one of the attackers
        /// </summary>
        public AttackPlan GetPlan(Village village, out bool isActivePlan, out AttackPlanFrom attacker, bool cycleVillage)
        {
            var plan = _attacker.GetPlan(village, out attacker, cycleVillage);

            isActivePlan = plan == _attacker.ActivePlan;
            return(plan);
        }
Ejemplo n.º 2
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);
                    }
                }
            }
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Pinpoint the plan on the main map
 /// </summary>
 public void Pinpoint(AttackPlanFrom activeAttacker)
 {
     World.Default.Map.Manipulators.SetManipulator(ManipulatorManagerTypes.Attack);
     var villages = Attacks.SelectMany(x => x.Attacker).Union(Target).ToArray();
     if (activeAttacker != null)
     {
         World.Default.Map.EventPublisher.AttackSelect(this, activeAttacker);
     }
     else
     {
         World.Default.Map.EventPublisher.AttackSelect(this, this);
     }
     World.Default.Map.SetCenter(villages);
 }
Ejemplo n.º 4
0
        /// <summary>
        /// Pinpoint the plan on the main map
        /// </summary>
        public void Pinpoint(AttackPlanFrom activeAttacker)
        {
            World.Default.Map.Manipulators.SetManipulator(ManipulatorManagerTypes.Attack);
            var villages = Attacks.SelectMany(x => x.Attacker).Union(Target).ToArray();

            if (activeAttacker != null)
            {
                World.Default.Map.EventPublisher.AttackSelect(this, activeAttacker);
            }
            else
            {
                World.Default.Map.EventPublisher.AttackSelect(this, this);
            }
            World.Default.Map.SetCenter(villages);
        }
Ejemplo n.º 5
0
        public AttackPlan GetPlan(Village village, out AttackPlanFrom attacker, bool cycleVillage)
        {
            AttackPlan asTarget = GetExistingPlan(village, cycleVillage);

            if (asTarget != null)
            {
                attacker = null;
                return(asTarget);
            }

            AttackPlanFrom asAttacker = GetAttacker(village);

            if (asAttacker != null)
            {
                attacker = asAttacker;
                return(asAttacker.Plan);
            }

            attacker = null;
            return(null);
        }
Ejemplo n.º 6
0
 private void RemoveAttacker(AttackPlan plan, AttackPlanFrom attacker)
 {
     Debug.Assert(plan.Attacks.Contains(attacker));
     ActiveAttacker = null;
     plan.RemoveAttack(attacker);
 }
Ejemplo n.º 7
0
 private void EventPublisherOnTargetSelected(object sender, AttackEventArgs e)
 {
     ActiveAttacker = e.Attacker;
     ActivePlan = e.Plan;
     _map.Invalidate(false);
 }
Ejemplo n.º 8
0
 private void AddAttacker(AttackPlan plan, AttackPlanFrom attacker)
 {
     Debug.Assert(!plan.Attacks.Contains(attacker));
     ActiveAttacker = attacker;
     plan.AddAttacker(attacker);
 }
Ejemplo n.º 9
0
 /// <summary>
 /// Cleanup anything when switching worlds or settings
 /// </summary>
 protected internal override void CleanUp()
 {
     _plans.Clear();
     ActivePlan = null;
     ActiveAttacker = null;
 }
Ejemplo n.º 10
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);
                    }
                }
            }
        }
Ejemplo n.º 11
0
 private void AddAttacker(AttackPlan plan, AttackPlanFrom attacker)
 {
     Debug.Assert(!plan.Attacks.Contains(attacker));
     ActiveAttacker = attacker;
     plan.AddAttacker(attacker);
 }
Ejemplo n.º 12
0
 public void AddAttacker(AttackPlanFrom attacker)
 {
     _attacks.Add(attacker);
 }
Ejemplo n.º 13
0
 /// <summary>
 /// Gets the first plan where the village is either the target
 /// or one of the attackers
 /// </summary>
 public AttackPlan GetPlan(Village village, out bool isActivePlan, out AttackPlanFrom attacker, bool cycleVillage)
 {
     var plan = _attacker.GetPlan(village, out attacker, cycleVillage);
     isActivePlan = plan == _attacker.ActivePlan;
     return plan;
 }
Ejemplo n.º 14
0
 public void AttackSelect(object sender, AttackPlanFrom attacker)
 {
     var e = new AttackEventArgs(attacker.Plan, attacker);
     AttackSelect(sender, e);
 }
Ejemplo n.º 15
0
        private AttackPlanFrom GetAttacker(Village village)
        {
            AttackPlanFrom existingAttack = GetAttackers(village).FirstOrDefault();

            return(existingAttack);
        }
Ejemplo n.º 16
0
 public void RemoveAttack(AttackPlanFrom attacker)
 {
     _attacks.Remove(attacker);
 }
Ejemplo n.º 17
0
 public void AddAttacker(AttackPlanFrom attacker)
 {
     _attacks.Add(attacker);
 }
Ejemplo n.º 18
0
        public AttackPlan GetPlan(Village village, out AttackPlanFrom attacker, bool cycleVillage)
        {
            AttackPlan asTarget = GetExistingPlan(village, cycleVillage);
            if (asTarget != null)
            {
                attacker = null;
                return asTarget;
            }

            AttackPlanFrom asAttacker = GetAttacker(village);
            if (asAttacker != null)
            {
                attacker = asAttacker;
                return asAttacker.Plan;
            }

            attacker = null;
            return null;
        }
Ejemplo n.º 19
0
 public void RemoveAttack(AttackPlanFrom attacker)
 {
     _attacks.Remove(attacker);
 }
Ejemplo n.º 20
0
 private void RemoveAttacker(AttackPlan plan, AttackPlanFrom attacker)
 {
     Debug.Assert(plan.Attacks.Contains(attacker));
     ActiveAttacker = null;
     plan.RemoveAttack(attacker);
 }