private void EventPublisherOnTargetUpdated(object sender, AttackUpdateEventArgs e) { foreach (AttackPlanFrom attacker in e.AttackFrom.ToArray()) { Debug.Assert(_plans.Contains(attacker.Plan)); AttackPlan plan = _plans.Single(x => x == attacker.Plan); switch (e.Action) { case AttackUpdateEventArgs.ActionKind.Add: AddAttacker(plan, attacker); break; case AttackUpdateEventArgs.ActionKind.Delete: RemoveAttacker(plan, attacker); break; case AttackUpdateEventArgs.ActionKind.Update: break; default: Debug.Assert(false); break; } } _map.Invalidate(false); }
public void AttackUpdateTarget(object sender, AttackUpdateEventArgs e) { if (TargetUpdated != null) { TargetUpdated(sender, e); } }
private void cmdClear_Click(object sender, EventArgs e) { if (ActivePlan != null) { World.Default.Map.EventPublisher.AttackUpdateTarget(this, AttackUpdateEventArgs.DeleteAttacksFrom(ActivePlan.Plan.Attacks)); } }
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 EventPublisherOnTargetUpdated(object sender, AttackUpdateEventArgs e) { switch (e.Action) { case AttackUpdateEventArgs.ActionKind.Add: e.AttackFrom.ForEach(x => ActivePlan.AddAttacker(x)); break; case AttackUpdateEventArgs.ActionKind.Delete: e.AttackFrom.ForEach(x => ActivePlan.RemoveAttacker(x)); break; case AttackUpdateEventArgs.ActionKind.Update: break; default: Debug.Assert(false); break; } if (e.AttackFrom.Any()) { var plan = e.AttackFrom.First().Plan; _plans[plan].Item1.Text = GetAttackToolstripText(plan); } if (ActivePlan != null) { Debug.Assert(!e.AttackFrom.Any() || ActivePlan.Plan == e.AttackFrom.First().Plan); ActivePlan.SetActiveAttacker(e.AttackFrom.FirstOrDefault()); ActivePlan.UpdateDisplay(); } }
private void Date_DateSelected(object sender, TribalWars.Controls.TimeConverter.DateEventArgs e) { if (!_settingControlValues) { Plan.ArrivalTime = e.SelectedDate; World.Default.Map.EventPublisher.AttackUpdateTarget(this, AttackUpdateEventArgs.Update()); } }
private void Coords_VillageSelected(object sender, Worlds.Events.Impls.VillageEventArgs e) { if (!_settingControlValues) { Plan.Target = e.FirstVillage; SetControlProperties(); World.Default.Map.EventPublisher.AttackUpdateTarget(this, AttackUpdateEventArgs.Update()); } }
private void Coords_TextChanged(object sender, EventArgs e) { if (!_changingAttacker && Coords.Village != null) { Attacker.Attacker = Coords.Village; UpdateDisplay(); World.Default.Map.EventPublisher.AttackUpdateTarget(this, AttackUpdateEventArgs.UpdateAttackFrom(Attacker)); } }
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); } }
protected internal override bool OnKeyDownCore(MapKeyEventArgs e) { switch (e.KeyEventArgs.KeyCode) { case Keys.Delete: if (ActiveAttacker != null) { _map.EventPublisher.AttackUpdateTarget(this, AttackUpdateEventArgs.DeleteAttackFrom(ActiveAttacker)); } else if (ActivePlan != null) { _map.EventPublisher.AttackRemoveTarget(this, ActivePlan); } break; } return(false); }
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 Close_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { var attackEventArgs = AttackUpdateEventArgs.DeleteAttackFrom(Attacker); World.Default.Map.EventPublisher.AttackUpdateTarget(this, attackEventArgs); }
private void OnDeleteAttacker(object sender, CommandEventArgs e) { Debug.Assert(_attacker != null); World.Default.Map.Manipulators.SetManipulator(ManipulatorManagerTypes.Attack); World.Default.Map.EventPublisher.AttackUpdateTarget(this, AttackUpdateEventArgs.DeleteAttackFrom(_attacker)); }
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); }