Show tooltips for frozen actors.
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user