Don't display a tooltip for actors without the Tooltip trait
This commit is contained in:
@@ -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(
|
||||||
|
|||||||
Reference in New Issue
Block a user