private void cmdFindPool_Click(object sender, EventArgs e) { if (World.Default.Map.Manipulators.AttackManipulator.IsAttackersPoolEmpty) { MessageBox.Show(ControlsRes.AttackPlanCollectionControl_EmptyAttackersPool, ControlsRes.AttackPlanCollectionControl_AttackersPoolTitle); } else if (ActivePlan != null && UnitInput.Unit != null) { VillageType?villageType = GetSelectedVillageTypeFilter(); bool depleted; var searchIn = World.Default.Map.Manipulators.AttackManipulator.GetAttackersFromPool(ActivePlan.Plan, UnitInput.Unit, villageType, out depleted); if (depleted) { MessageBox.Show(ControlsRes.AttackPlanCollectionControl_AttackersPoolDepleted, ControlsRes.AttackPlanCollectionControl_AttackersPoolTitle); } foreach (var attacker in searchIn) { var attackEventArgs = AttackUpdateEventArgs.AddAttackFrom(new AttackPlanFrom(ActivePlan.Plan, attacker.Village, attacker.Speed)); World.Default.Map.EventPublisher.AttackUpdateTarget(this, attackEventArgs); } ActivePlan.SortOnTimeLeft(); } }
private void cmdAddVillage_Click(object sender, EventArgs e) { Village village = VillageInput.Village; if (village != null) { var attackEventArgs = AttackUpdateEventArgs.AddAttackFrom(new AttackPlanFrom(ActivePlan.Plan, village, WorldUnits.Default[UnitTypes.Ram])); World.Default.Map.EventPublisher.AttackUpdateTarget(this, attackEventArgs); } }
private void cmdFind_Click(object sender, EventArgs e) { if (World.Default.You.Empty) { ActivePlayerForm.AskToSetSelf(); } else if (ActivePlan != null) { VillageType?villageType = GetSelectedVillageTypeFilter(); var searchIn = World.Default.Map.Manipulators.AttackManipulator.GetAttackersFromYou(ActivePlan.Plan, UnitInput.Unit, villageType); foreach (var attacker in searchIn) { var attackEventArgs = AttackUpdateEventArgs.AddAttackFrom(new AttackPlanFrom(ActivePlan.Plan, attacker.Village, attacker.Speed)); World.Default.Map.EventPublisher.AttackUpdateTarget(this, attackEventArgs); } ActivePlan.SortOnTimeLeft(); } }
private void OnAddAttacker(object sender, CommandEventArgs e) { Debug.Assert(World.Default.Map.Manipulators.AttackManipulator.ActivePlan != null && _village != null); World.Default.Map.Manipulators.SetManipulator(ManipulatorManagerTypes.Attack); World.Default.Map.EventPublisher.AttackUpdateTarget(this, AttackUpdateEventArgs.AddAttackFrom(new AttackPlanFrom(World.Default.Map.Manipulators.AttackManipulator.ActivePlan, _village, WorldUnits.Default[World.Default.Map.Manipulators.AttackManipulator.DefaultSpeed]))); }
protected internal override bool MouseDownCore(MapMouseEventArgs e) { IsAddingTarget = false; if (e.Village != null) { AttackPlan existingPlan = GetExistingPlan(e.Village, true); AttackPlanFrom[] existingAttacks = GetAttackers(e.Village).ToArray(); if (e.MouseEventArgs.Button == MouseButtons.Left) { if (existingPlan == null) { if (!existingAttacks.Any()) { _map.EventPublisher.AttackAddTarget(this, e.Village); } else { if (!existingAttacks.Contains(ActiveAttacker)) { _map.EventPublisher.AttackSelect(this, existingAttacks.First()); } else { // Already selected village is perhaps used in multiple plans if (existingAttacks.Length == 1) { return(false); } else { // Cycle through the attackers AttackPlanFrom selectAttacker; if (ActiveAttacker == null || !existingAttacks.Contains(ActiveAttacker) || existingAttacks.Last() == ActiveAttacker) { selectAttacker = existingAttacks.First(); } else { selectAttacker = existingAttacks.SkipWhile(x => x != ActiveAttacker).Take(2).Last(); } _map.EventPublisher.AttackSelect(this, selectAttacker); } } } } else { if (existingPlan == ActivePlan && ActivePlan != null) { var existingAttack = existingAttacks.FirstOrDefault(); if (existingAttack != ActiveAttacker) { if (existingAttack == null) { _map.EventPublisher.AttackSelect(this, ActivePlan); } else { _map.EventPublisher.AttackSelect(this, existingAttack); } } else { return(false); } } else { _map.EventPublisher.AttackSelect(this, existingPlan); } } return(true); } else if (e.MouseEventArgs.Button == MouseButtons.Right) { if (e.Village.Player == World.Default.You && ActivePlan != null) { if (e.Village == ActivePlan.Target) { // Can't add attacker to target return(false); } else { if (existingAttacks.Any()) { // Show contextmenu instead return(false); } else { // Add new attacker var attackEventArgs = AttackUpdateEventArgs.AddAttackFrom(new AttackPlanFrom(ActivePlan, e.Village, WorldUnits.Default[World.Default.Map.Manipulators.AttackManipulator.DefaultSpeed])); _map.EventPublisher.AttackUpdateTarget(this, attackEventArgs); IsAddingTarget = true; return(true); } } } } } return(false); }