Spy drops disguise on attacking

This commit is contained in:
Chris Forbes
2012-04-02 13:27:13 +12:00
parent 499234e5dd
commit 60fa61840d

View File

@@ -73,7 +73,7 @@ namespace OpenRA.Mods.RA
class SpyInfo : TraitInfo<Spy> { }
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<IToolTip>().FirstOrDefault();
disguisedAsName = tooltip.Name();
disguisedAsPlayer = tooltip.Owner();
disguisedAsSprite = target.Trait<RenderSimple>().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<IToolTip>().FirstOrDefault();
disguisedAsName = tooltip.Name();
disguisedAsPlayer = tooltip.Owner();
disguisedAsSprite = target.Trait<RenderSimple>().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<IgnoresDisguise> {}