Don't display a tooltip for actors without the Tooltip trait

This commit is contained in:
Paul Chote
2011-06-20 22:22:40 +12:00
parent 088573f2b7
commit e33995d71b

View File

@@ -49,38 +49,41 @@ namespace OpenRA.Mods.RA.Widgets
return; return;
} }
var actor = world.FindUnitsAtMouse(Viewport.LastMousePos).FirstOrDefault(); var actor = world.FindUnitsAtMouse(Viewport.LastMousePos).FirstOrDefault();
if (actor == null) if (actor == null)
return; return;
var tooltip = actor.TraitsImplementing<IToolTip>().FirstOrDefault(); var itt = actor.TraitsImplementing<IToolTip>().FirstOrDefault();
if (itt == null)
return;
var name = tooltip != null ? tooltip.Name() : actor.Info.Name; var owner = itt.Owner();
var owner = (tooltip != null && !tooltip.Owner().NonCombatant) ? "{0}".F(tooltip.Owner().PlayerName) : ""; var nameText = itt.Name();
var stance = (tooltip != null && tooltip.Owner() != actor.World.LocalPlayer && !tooltip.Owner().NonCombatant) ? " ({0})".F(tooltip.Stance()) : ""; var ownerText = !owner.NonCombatant ? owner.PlayerName : "";
var stanceText = (world.LocalPlayer != null && owner != actor.World.LocalPlayer
var nameSize = Game.Renderer.Fonts["Bold"].Measure(name); && !owner.NonCombatant) ? " ({0})".F(itt.Stance()) : "";
var ownerSize = Game.Renderer.Fonts["Regular"].Measure(owner);
var stanceSize = Game.Renderer.Fonts["Regular"].Measure(stance); var nameSize = Game.Renderer.Fonts["Bold"].Measure(nameText);
var ownerSize = Game.Renderer.Fonts["Regular"].Measure(ownerText);
var stanceSize = Game.Renderer.Fonts["Regular"].Measure(stanceText);
var panelSize = new int2(Math.Max(nameSize.X, ownerSize.X + stanceSize.X + 35) + 20, nameSize.Y + 24); var panelSize = new int2(Math.Max(nameSize.X, ownerSize.X + stanceSize.X + 35) + 20, nameSize.Y + 24);
if (owner != "") panelSize.Y += ownerSize.Y + 2; if (ownerText != "") panelSize.Y += ownerSize.Y + 2;
WidgetUtils.DrawPanel("dialog4", Rectangle.FromLTRB( WidgetUtils.DrawPanel("dialog4", Rectangle.FromLTRB(
Viewport.LastMousePos.X + 20, Viewport.LastMousePos.Y + 20, Viewport.LastMousePos.X + 20, Viewport.LastMousePos.Y + 20,
Viewport.LastMousePos.X + panelSize.X + 20, Viewport.LastMousePos.Y + panelSize.Y + 20)); Viewport.LastMousePos.X + panelSize.X + 20, Viewport.LastMousePos.Y + panelSize.Y + 20));
Game.Renderer.Fonts["Bold"].DrawText(name, Game.Renderer.Fonts["Bold"].DrawText(nameText,
new float2(Viewport.LastMousePos.X + 30, Viewport.LastMousePos.Y + 30), Color.White); new float2(Viewport.LastMousePos.X + 30, Viewport.LastMousePos.Y + 30), Color.White);
if (owner != "") if (ownerText != "")
{ {
Game.Renderer.Fonts["Regular"].DrawText(owner, Game.Renderer.Fonts["Regular"].DrawText(ownerText,
new float2(Viewport.LastMousePos.X + 65, Viewport.LastMousePos.Y + 50), actor.Owner.ColorRamp.GetColor(0)); new float2(Viewport.LastMousePos.X + 65, Viewport.LastMousePos.Y + 50), actor.Owner.ColorRamp.GetColor(0));
Game.Renderer.Fonts["Regular"].DrawText(stance, Game.Renderer.Fonts["Regular"].DrawText(stanceText,
new float2(Viewport.LastMousePos.X + 65 + ownerSize.X, Viewport.LastMousePos.Y + 50), Color.White); new float2(Viewport.LastMousePos.X + 65 + ownerSize.X, Viewport.LastMousePos.Y + 50), Color.White);
WidgetUtils.DrawRGBA( WidgetUtils.DrawRGBA(