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 SpyInfo : TraitInfo<Spy> { }
class Spy : IIssueOrder, IResolveOrder, IOrderVoice, IRadarColorModifier class Spy : IIssueOrder, IResolveOrder, IOrderVoice, IRadarColorModifier, INotifyAttack
{ {
public Player disguisedAsPlayer; public Player disguisedAsPlayer;
public string disguisedAsSprite, disguisedAsName; public string disguisedAsSprite, disguisedAsName;
@@ -113,18 +113,9 @@ namespace OpenRA.Mods.RA
var target = order.TargetActor == self ? null : order.TargetActor; var target = order.TargetActor == self ? null : order.TargetActor;
if (target != null && target.IsInWorld) if (target != null && target.IsInWorld)
{ DisguiseAs(target);
var tooltip = target.TraitsImplementing<IToolTip>().FirstOrDefault();
disguisedAsName = tooltip.Name();
disguisedAsPlayer = tooltip.Owner();
disguisedAsSprite = target.Trait<RenderSimple>().GetImage(target);
}
else else
{ DropDisguise();
disguisedAsName = null;
disguisedAsPlayer = null;
disguisedAsSprite = null;
}
} }
} }
@@ -141,6 +132,24 @@ namespace OpenRA.Mods.RA
return disguisedAsPlayer.ColorRamp.GetColor(0); 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> {} class IgnoresDisguiseInfo : TraitInfo<IgnoresDisguise> {}