From f5fafb1b9d0c043a0a2ccac5bbaf441bd743cd3d Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Wed, 30 Dec 2015 19:50:26 +0000 Subject: [PATCH] Move EnterBehaviour behaviour to Enter. --- OpenRA.Mods.Common/Activities/CaptureActor.cs | 2 +- OpenRA.Mods.Common/Activities/Demolish.cs | 9 +-------- OpenRA.Mods.Common/Activities/DonateSupplies.cs | 3 +-- OpenRA.Mods.Common/Activities/Enter.cs | 10 +++++++++- OpenRA.Mods.Common/Activities/EnterTransport.cs | 2 +- OpenRA.Mods.Common/Activities/RepairBridge.cs | 2 +- OpenRA.Mods.Common/Activities/RepairBuilding.cs | 2 +- OpenRA.Mods.RA/Activities/Infiltrate.cs | 2 +- 8 files changed, 16 insertions(+), 16 deletions(-) diff --git a/OpenRA.Mods.Common/Activities/CaptureActor.cs b/OpenRA.Mods.Common/Activities/CaptureActor.cs index f1ca1aaef7..a2620b2dae 100644 --- a/OpenRA.Mods.Common/Activities/CaptureActor.cs +++ b/OpenRA.Mods.Common/Activities/CaptureActor.cs @@ -22,7 +22,7 @@ namespace OpenRA.Mods.Common.Activities readonly Health health; public CaptureActor(Actor self, Actor target) - : base(self, target) + : base(self, target, EnterBehaviour.Dispose) { actor = target; building = actor.TraitOrDefault(); diff --git a/OpenRA.Mods.Common/Activities/Demolish.cs b/OpenRA.Mods.Common/Activities/Demolish.cs index afa2c9d3f8..c70069a064 100644 --- a/OpenRA.Mods.Common/Activities/Demolish.cs +++ b/OpenRA.Mods.Common/Activities/Demolish.cs @@ -20,7 +20,6 @@ namespace OpenRA.Mods.Common.Activities { readonly Actor target; readonly IDemolishable[] demolishables; - readonly EnterBehaviour enterBehaviour; readonly int delay; readonly int flashes; readonly int flashesDelay; @@ -31,11 +30,10 @@ namespace OpenRA.Mods.Common.Activities public Demolish(Actor self, Actor target, EnterBehaviour enterBehaviour, int delay, int flashes, int flashesDelay, int flashInterval, int flashDuration) - : base(self, target) + : base(self, target, enterBehaviour) { this.target = target; demolishables = target.TraitsImplementing().ToArray(); - this.enterBehaviour = enterBehaviour; this.delay = delay; this.flashes = flashes; this.flashesDelay = flashesDelay; @@ -75,11 +73,6 @@ namespace OpenRA.Mods.Common.Activities if (Util.ApplyPercentageModifiers(100, modifiers) > 0) demolishables.Do(d => d.Demolish(target, self)); })); - - if (enterBehaviour == EnterBehaviour.Suicide) - self.Kill(self); - else if (enterBehaviour == EnterBehaviour.Dispose) - self.Dispose(); }); } } diff --git a/OpenRA.Mods.Common/Activities/DonateSupplies.cs b/OpenRA.Mods.Common/Activities/DonateSupplies.cs index c6cd5c4c16..754f1f2a83 100644 --- a/OpenRA.Mods.Common/Activities/DonateSupplies.cs +++ b/OpenRA.Mods.Common/Activities/DonateSupplies.cs @@ -19,7 +19,7 @@ namespace OpenRA.Mods.Common.Activities readonly int payload; public DonateSupplies(Actor self, Actor target, int payload) - : base(self, target) + : base(self, target, EnterBehaviour.Dispose) { this.target = target; this.payload = payload; @@ -31,7 +31,6 @@ namespace OpenRA.Mods.Common.Activities return; target.Owner.PlayerActor.Trait().GiveCash(payload); - self.Dispose(); if (self.Owner.IsAlliedWith(self.World.RenderPlayer)) self.World.AddFrameEndTask(w => w.Add(new FloatingText(target.CenterPosition, target.Owner.Color.RGB, FloatingText.FormatCashTick(payload), 30))); diff --git a/OpenRA.Mods.Common/Activities/Enter.cs b/OpenRA.Mods.Common/Activities/Enter.cs index ad99857013..60f3526253 100644 --- a/OpenRA.Mods.Common/Activities/Enter.cs +++ b/OpenRA.Mods.Common/Activities/Enter.cs @@ -24,7 +24,9 @@ namespace OpenRA.Mods.Common.Activities readonly IMove move; readonly int maxTries = 0; + readonly EnterBehaviour enterBehaviour; readonly bool targetCenter; + public Target Target { get { return target; } } Target target; State nextState = State.ApproachingOrEntering; // Hint/starting point for next state @@ -33,11 +35,12 @@ namespace OpenRA.Mods.Common.Activities Activity inner; bool firstApproach = true; - protected Enter(Actor self, Actor target, int maxTries = 1, bool targetCenter = false) + protected Enter(Actor self, Actor target, EnterBehaviour enterBehaviour, int maxTries = 1, bool targetCenter = false) { this.move = self.Trait(); this.target = Target.FromActor(target); this.maxTries = maxTries; + this.enterBehaviour = enterBehaviour; this.targetCenter = targetCenter; } @@ -215,6 +218,11 @@ namespace OpenRA.Mods.Common.Activities OnInside(self); + if (enterBehaviour == EnterBehaviour.Suicide) + self.Kill(self); + else if (enterBehaviour == EnterBehaviour.Dispose) + self.Dispose(); + // Return if Abort(Actor) or Done(self) was called from OnInside. if (nextState >= State.Exiting) return State.Inside; diff --git a/OpenRA.Mods.Common/Activities/EnterTransport.cs b/OpenRA.Mods.Common/Activities/EnterTransport.cs index c31172eddc..edae4573d2 100644 --- a/OpenRA.Mods.Common/Activities/EnterTransport.cs +++ b/OpenRA.Mods.Common/Activities/EnterTransport.cs @@ -22,7 +22,7 @@ namespace OpenRA.Mods.Common.Activities Cargo cargo; public EnterTransport(Actor self, Actor transport, int maxTries = 0, bool targetCenter = false) - : base(self, transport, maxTries, targetCenter) + : base(self, transport, EnterBehaviour.Exit, maxTries, targetCenter) { this.transport = transport; this.maxTries = maxTries; diff --git a/OpenRA.Mods.Common/Activities/RepairBridge.cs b/OpenRA.Mods.Common/Activities/RepairBridge.cs index 1b02b81644..b1ddf1ade9 100644 --- a/OpenRA.Mods.Common/Activities/RepairBridge.cs +++ b/OpenRA.Mods.Common/Activities/RepairBridge.cs @@ -18,7 +18,7 @@ namespace OpenRA.Mods.Common.Activities readonly BridgeHut hut; public RepairBridge(Actor self, Actor target) - : base(self, target) + : base(self, target, EnterBehaviour.Dispose) { hut = target.Trait(); } diff --git a/OpenRA.Mods.Common/Activities/RepairBuilding.cs b/OpenRA.Mods.Common/Activities/RepairBuilding.cs index 418808bb46..581062dd5c 100644 --- a/OpenRA.Mods.Common/Activities/RepairBuilding.cs +++ b/OpenRA.Mods.Common/Activities/RepairBuilding.cs @@ -19,7 +19,7 @@ namespace OpenRA.Mods.Common.Activities readonly Health health; public RepairBuilding(Actor self, Actor target) - : base(self, target) + : base(self, target, EnterBehaviour.Dispose) { this.target = target; health = target.Trait(); diff --git a/OpenRA.Mods.RA/Activities/Infiltrate.cs b/OpenRA.Mods.RA/Activities/Infiltrate.cs index b6a4e634dd..e443fddbfc 100644 --- a/OpenRA.Mods.RA/Activities/Infiltrate.cs +++ b/OpenRA.Mods.RA/Activities/Infiltrate.cs @@ -24,7 +24,7 @@ namespace OpenRA.Mods.RA.Activities readonly Infiltrates infiltrates; public Infiltrate(Actor self, Actor target) - : base(self, target) + : base(self, target, EnterBehaviour.Dispose) { this.target = target;