Show tooltips for frozen actors.
This commit is contained in:
@@ -19,7 +19,7 @@ using OpenRA.Traits;
|
|||||||
|
|
||||||
namespace OpenRA.Widgets
|
namespace OpenRA.Widgets
|
||||||
{
|
{
|
||||||
public enum WorldTooltipType { None, Unexplored, Actor }
|
public enum WorldTooltipType { None, Unexplored, Actor, FrozenActor }
|
||||||
|
|
||||||
public class ViewportControllerWidget : Widget
|
public class ViewportControllerWidget : Widget
|
||||||
{
|
{
|
||||||
@@ -29,6 +29,7 @@ namespace OpenRA.Widgets
|
|||||||
|
|
||||||
public WorldTooltipType TooltipType { get; private set; }
|
public WorldTooltipType TooltipType { get; private set; }
|
||||||
public IToolTip ActorTooltip { get; private set; }
|
public IToolTip ActorTooltip { get; private set; }
|
||||||
|
public FrozenActor FrozenActorTooltip { get; private set; }
|
||||||
|
|
||||||
public int EdgeScrollThreshold = 15;
|
public int EdgeScrollThreshold = 15;
|
||||||
public int EdgeCornerScrollThreshold = 35;
|
public int EdgeCornerScrollThreshold = 35;
|
||||||
@@ -113,6 +114,17 @@ namespace OpenRA.Widgets
|
|||||||
TooltipType = WorldTooltipType.Actor;
|
TooltipType = WorldTooltipType.Actor;
|
||||||
return;
|
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)
|
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)
|
if (viewport == null || viewport.TooltipType == WorldTooltipType.None)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
labelText = viewport.TooltipType == WorldTooltipType.Unexplored ? "Unexplored Terrain" :
|
Player o = null;
|
||||||
viewport.ActorTooltip.Name();
|
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;
|
var textWidth = font.Measure(labelText).X;
|
||||||
if (textWidth != cachedWidth)
|
if (textWidth != cachedWidth)
|
||||||
{
|
{
|
||||||
label.Bounds.Width = textWidth;
|
label.Bounds.Width = textWidth;
|
||||||
widget.Bounds.Width = 2*label.Bounds.X + 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)
|
if (showOwner)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user