From 60fa61840d16f5bb6785ab4cd9f952229e3ad55c Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Mon, 2 Apr 2012 13:27:13 +1200 Subject: [PATCH] Spy drops disguise on attacking --- OpenRA.Mods.RA/Spy.cs | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/OpenRA.Mods.RA/Spy.cs b/OpenRA.Mods.RA/Spy.cs index 54ec5b6706..0ca0063119 100644 --- a/OpenRA.Mods.RA/Spy.cs +++ b/OpenRA.Mods.RA/Spy.cs @@ -73,7 +73,7 @@ namespace OpenRA.Mods.RA class SpyInfo : TraitInfo { } - class Spy : IIssueOrder, IResolveOrder, IOrderVoice, IRadarColorModifier + class Spy : IIssueOrder, IResolveOrder, IOrderVoice, IRadarColorModifier, INotifyAttack { public Player disguisedAsPlayer; public string disguisedAsSprite, disguisedAsName; @@ -113,18 +113,9 @@ namespace OpenRA.Mods.RA var target = order.TargetActor == self ? null : order.TargetActor; if (target != null && target.IsInWorld) - { - var tooltip = target.TraitsImplementing().FirstOrDefault(); - disguisedAsName = tooltip.Name(); - disguisedAsPlayer = tooltip.Owner(); - disguisedAsSprite = target.Trait().GetImage(target); - } + DisguiseAs(target); else - { - disguisedAsName = null; - disguisedAsPlayer = null; - disguisedAsSprite = null; - } + DropDisguise(); } } @@ -141,6 +132,24 @@ namespace OpenRA.Mods.RA return disguisedAsPlayer.ColorRamp.GetColor(0); } + + void DisguiseAs(Actor target) + { + var tooltip = target.TraitsImplementing().FirstOrDefault(); + disguisedAsName = tooltip.Name(); + disguisedAsPlayer = tooltip.Owner(); + disguisedAsSprite = target.Trait().GetImage(target); + } + + void DropDisguise() + { + disguisedAsName = null; + disguisedAsPlayer = null; + disguisedAsSprite = null; + } + + /* lose our disguise if we attack anything */ + public void Attacking(Actor self, Target target) { DropDisguise(); } } class IgnoresDisguiseInfo : TraitInfo {}