Add support for generic tooltip names.

This commit is contained in:
Paul Chote
2014-09-30 18:05:50 +13:00
parent 9de79318e8
commit 80f42b4921
7 changed files with 93 additions and 45 deletions

View File

@@ -10,6 +10,7 @@
using System;
using System.Drawing;
using OpenRA.Traits;
using OpenRA.Widgets;
namespace OpenRA.Mods.RA.Widgets.Logic
@@ -17,7 +18,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
public class WorldTooltipLogic
{
[ObjectCreator.UseCtor]
public WorldTooltipLogic(Widget widget, TooltipContainerWidget tooltipContainer, ViewportControllerWidget viewport)
public WorldTooltipLogic(Widget widget, World world, TooltipContainerWidget tooltipContainer, ViewportControllerWidget viewport)
{
widget.IsVisible = () => viewport.TooltipType != WorldTooltipType.None;
var label = widget.Get<LabelWidget>("LABEL");
@@ -41,20 +42,32 @@ namespace OpenRA.Mods.RA.Widgets.Logic
if (viewport == null || viewport.TooltipType == WorldTooltipType.None)
return;
showOwner = false;
Player o = null;
switch (viewport.TooltipType)
{
case WorldTooltipType.Unexplored:
labelText = "Unexplored Terrain";
break;
case WorldTooltipType.Actor:
labelText = viewport.ActorTooltip.Name();
o = viewport.ActorTooltip.Owner();
break;
case WorldTooltipType.FrozenActor:
labelText = viewport.FrozenActorTooltip.TooltipName;
o = viewport.FrozenActorTooltip.TooltipOwner;
break;
case WorldTooltipType.Unexplored:
labelText = "Unexplored Terrain";
break;
case WorldTooltipType.Actor:
{
o = viewport.ActorTooltip.Owner;
showOwner = !o.NonCombatant && viewport.ActorTooltip.TooltipInfo.IsOwnerRowVisible;
var stance = o == null || world.RenderPlayer == null? Stance.None : o.Stances[world.RenderPlayer];
labelText = viewport.ActorTooltip.TooltipInfo.TooltipForPlayerStance(stance);
break;
}
case WorldTooltipType.FrozenActor:
{
o = viewport.FrozenActorTooltip.TooltipOwner;
showOwner = !o.NonCombatant && viewport.FrozenActorTooltip.TooltipInfo.IsOwnerRowVisible;
var stance = o == null || world.RenderPlayer == null? Stance.None : o.Stances[world.RenderPlayer];
labelText = viewport.FrozenActorTooltip.TooltipInfo.TooltipForPlayerStance(stance);
break;
}
}
var textWidth = font.Measure(labelText).X;
@@ -64,8 +77,6 @@ namespace OpenRA.Mods.RA.Widgets.Logic
widget.Bounds.Width = 2*label.Bounds.X + textWidth;
}
showOwner = o != null && !o.NonCombatant;
if (showOwner)
{
flagRace = o.Country.Race;