Show tooltips for frozen actors.

This commit is contained in:
Paul Chote
2013-08-07 13:48:23 +12:00
parent eef941fd42
commit c0cb52a5ca
2 changed files with 31 additions and 5 deletions

View File

@@ -19,7 +19,7 @@ using OpenRA.Traits;
namespace OpenRA.Widgets
{
public enum WorldTooltipType { None, Unexplored, Actor }
public enum WorldTooltipType { None, Unexplored, Actor, FrozenActor }
public class ViewportControllerWidget : Widget
{
@@ -29,6 +29,7 @@ namespace OpenRA.Widgets
public WorldTooltipType TooltipType { get; private set; }
public IToolTip ActorTooltip { get; private set; }
public FrozenActor FrozenActorTooltip { get; private set; }
public int EdgeScrollThreshold = 15;
public int EdgeCornerScrollThreshold = 35;
@@ -113,6 +114,17 @@ namespace OpenRA.Widgets
TooltipType = WorldTooltipType.Actor;
return;
}
var frozen = world.FindFrozenActorsAtMouse(Viewport.LastMousePos)
.Where(a => a.TooltipName != null)
.OrderByDescending(a => a.Info.SelectionPriority())
.FirstOrDefault();
if (frozen != null)
{
FrozenActorTooltip = frozen;
TooltipType = WorldTooltipType.FrozenActor;
}
}
public static string GetScrollCursor(Widget w, ScrollDirection edge, int2 pos)

View File

@@ -41,16 +41,30 @@ namespace OpenRA.Mods.RA.Widgets.Logic
if (viewport == null || viewport.TooltipType == WorldTooltipType.None)
return;
labelText = viewport.TooltipType == WorldTooltipType.Unexplored ? "Unexplored Terrain" :
viewport.ActorTooltip.Name();
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;
}
var textWidth = font.Measure(labelText).X;
if (textWidth != cachedWidth)
{
label.Bounds.Width = textWidth;
widget.Bounds.Width = 2*label.Bounds.X + textWidth;
}
var o = viewport.ActorTooltip != null ? viewport.ActorTooltip.Owner() : null;
showOwner = viewport.TooltipType == WorldTooltipType.Actor && o != null && !o.NonCombatant;
showOwner = o != null && !o.NonCombatant;
if (showOwner)
{