From 556774804f4597c46ef8c19254273e1fa46cfea3 Mon Sep 17 00:00:00 2001 From: Mustafa Alperen Seki Date: Tue, 12 Mar 2019 12:23:32 +0300 Subject: [PATCH] Make Capture related traits conditional. --- .../Traits/CapturableProgressBar.cs | 15 ++++++--------- .../Traits/CapturableProgressBlink.cs | 16 ++++++++-------- OpenRA.Mods.Common/Traits/CaptureProgressBar.cs | 15 ++++++--------- 3 files changed, 20 insertions(+), 26 deletions(-) diff --git a/OpenRA.Mods.Common/Traits/CapturableProgressBar.cs b/OpenRA.Mods.Common/Traits/CapturableProgressBar.cs index b18bdd7aad..91c1789c8e 100644 --- a/OpenRA.Mods.Common/Traits/CapturableProgressBar.cs +++ b/OpenRA.Mods.Common/Traits/CapturableProgressBar.cs @@ -17,22 +17,19 @@ using OpenRA.Traits; namespace OpenRA.Mods.Common.Traits { [Desc("Visualize capture progress.")] - class CapturableProgressBarInfo : ITraitInfo, Requires + class CapturableProgressBarInfo : ConditionalTraitInfo, Requires { public readonly Color Color = Color.Orange; - public object Create(ActorInitializer init) { return new CapturableProgressBar(init.Self, this); } + public override object Create(ActorInitializer init) { return new CapturableProgressBar(init.Self, this); } } - class CapturableProgressBar : ISelectionBar, ICaptureProgressWatcher + class CapturableProgressBar : ConditionalTrait, ISelectionBar, ICaptureProgressWatcher { - readonly CapturableProgressBarInfo info; Dictionary> progress = new Dictionary>(); public CapturableProgressBar(Actor self, CapturableProgressBarInfo info) - { - this.info = info; - } + : base(info) { } void ICaptureProgressWatcher.Update(Actor self, Actor captor, Actor target, int current, int total) { @@ -47,13 +44,13 @@ namespace OpenRA.Mods.Common.Traits float ISelectionBar.GetValue() { - if (!progress.Any()) + if (IsTraitDisabled || !progress.Any()) return 0f; return progress.Values.Max(p => (float)p.First / p.Second); } - Color ISelectionBar.GetColor() { return info.Color; } + Color ISelectionBar.GetColor() { return Info.Color; } bool ISelectionBar.DisplayWhenEmpty { get { return false; } } } } diff --git a/OpenRA.Mods.Common/Traits/CapturableProgressBlink.cs b/OpenRA.Mods.Common/Traits/CapturableProgressBlink.cs index 92eb6e891a..70d91cfb87 100644 --- a/OpenRA.Mods.Common/Traits/CapturableProgressBlink.cs +++ b/OpenRA.Mods.Common/Traits/CapturableProgressBlink.cs @@ -17,25 +17,22 @@ using OpenRA.Traits; namespace OpenRA.Mods.Common.Traits { [Desc("Blinks the actor and captor when it is being captured.")] - class CapturableProgressBlinkInfo : ITraitInfo, Requires + class CapturableProgressBlinkInfo : ConditionalTraitInfo, Requires { [Desc("Number of ticks to wait between repeating blinks.")] public readonly int Interval = 50; - public object Create(ActorInitializer init) { return new CapturableProgressBlink(this); } + public override object Create(ActorInitializer init) { return new CapturableProgressBlink(this); } } - class CapturableProgressBlink : ITick, ICaptureProgressWatcher + class CapturableProgressBlink : ConditionalTrait, ITick, ICaptureProgressWatcher { - readonly CapturableProgressBlinkInfo info; List captorOwners = new List(); HashSet captors = new HashSet(); int tick = 0; public CapturableProgressBlink(CapturableProgressBlinkInfo info) - { - this.info = info; - } + : base(info) { } void ICaptureProgressWatcher.Update(Actor self, Actor captor, Actor target, int current, int total) { @@ -54,6 +51,9 @@ namespace OpenRA.Mods.Common.Traits void ITick.Tick(Actor self) { + if (IsTraitDisabled) + return; + if (!captorOwners.Any()) { tick = 0; @@ -70,7 +70,7 @@ namespace OpenRA.Mods.Common.Traits self.World.Add(new FlashTarget(captor, captorOwner)); } - if (++tick >= info.Interval) + if (++tick >= Info.Interval) tick = 0; } } diff --git a/OpenRA.Mods.Common/Traits/CaptureProgressBar.cs b/OpenRA.Mods.Common/Traits/CaptureProgressBar.cs index 926ff99e51..13fb41cf63 100644 --- a/OpenRA.Mods.Common/Traits/CaptureProgressBar.cs +++ b/OpenRA.Mods.Common/Traits/CaptureProgressBar.cs @@ -15,23 +15,20 @@ using OpenRA.Traits; namespace OpenRA.Mods.Common.Traits { [Desc("Visualize the progress of this actor being captured.")] - class CaptureProgressBarInfo : ITraitInfo, Requires + class CaptureProgressBarInfo : ConditionalTraitInfo, Requires { public readonly Color Color = Color.Orange; - public object Create(ActorInitializer init) { return new CaptureProgressBar(init.Self, this); } + public override object Create(ActorInitializer init) { return new CaptureProgressBar(init.Self, this); } } - class CaptureProgressBar : ISelectionBar, ICaptureProgressWatcher + class CaptureProgressBar : ConditionalTrait, ISelectionBar, ICaptureProgressWatcher { - readonly CaptureProgressBarInfo info; int current; int total; public CaptureProgressBar(Actor self, CaptureProgressBarInfo info) - { - this.info = info; - } + : base(info) { } void ICaptureProgressWatcher.Update(Actor self, Actor captor, Actor target, int current, int total) { @@ -44,13 +41,13 @@ namespace OpenRA.Mods.Common.Traits float ISelectionBar.GetValue() { - if (total == 0) + if (IsTraitDisabled || total == 0) return 0f; return (float)current / total; } - Color ISelectionBar.GetColor() { return info.Color; } + Color ISelectionBar.GetColor() { return Info.Color; } bool ISelectionBar.DisplayWhenEmpty { get { return false; } } } }