Fix oversight where disguising SpyA as a disguised SpyB uses the image and tooltip for SpyB instead of SpyB’s disguise.

This commit is contained in:
Taryn Hill
2015-05-22 09:57:21 -05:00
parent 9ec7f00635
commit 70c61817d9

View File

@@ -112,10 +112,22 @@ namespace OpenRA.Mods.RA.Traits
if (target != null)
{
var tooltip = target.TraitsImplementing<IToolTip>().FirstOrDefault();
AsTooltipInfo = tooltip.TooltipInfo;
AsPlayer = tooltip.Owner;
AsSprite = target.Trait<RenderSprites>().GetImage(target);
// Take the image of the target's disguise, if it exist.
// E.g., SpyA is disguised as a dog. SpyB then targets SpyA. We should use the dog image.
var targetDisguise = target.TraitOrDefault<Disguise>();
if (targetDisguise != null && targetDisguise.Disguised)
{
AsSprite = targetDisguise.AsSprite;
AsPlayer = targetDisguise.AsPlayer;
AsTooltipInfo = targetDisguise.AsTooltipInfo;
}
else
{
AsSprite = target.Trait<RenderSprites>().GetImage(target);
var tooltip = target.TraitsImplementing<IToolTip>().FirstOrDefault();
AsPlayer = tooltip.Owner;
AsTooltipInfo = tooltip.TooltipInfo;
}
}
else
{