Show a tooltip over map resources.
This commit is contained in:
@@ -57,6 +57,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
|
|||||||
case WorldTooltipType.Unexplored:
|
case WorldTooltipType.Unexplored:
|
||||||
labelText = "Unrevealed Terrain";
|
labelText = "Unrevealed Terrain";
|
||||||
break;
|
break;
|
||||||
|
case WorldTooltipType.Resource:
|
||||||
|
labelText = viewport.ResourceTooltip.Info.Name;
|
||||||
|
break;
|
||||||
case WorldTooltipType.Actor:
|
case WorldTooltipType.Actor:
|
||||||
{
|
{
|
||||||
o = viewport.ActorTooltip.Owner;
|
o = viewport.ActorTooltip.Owner;
|
||||||
|
|||||||
@@ -13,15 +13,18 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using OpenRA.Graphics;
|
using OpenRA.Graphics;
|
||||||
|
using OpenRA.Mods.Common.Traits;
|
||||||
using OpenRA.Traits;
|
using OpenRA.Traits;
|
||||||
using OpenRA.Widgets;
|
using OpenRA.Widgets;
|
||||||
|
|
||||||
namespace OpenRA.Mods.Common.Widgets
|
namespace OpenRA.Mods.Common.Widgets
|
||||||
{
|
{
|
||||||
public enum WorldTooltipType { None, Unexplored, Actor, FrozenActor }
|
public enum WorldTooltipType { None, Unexplored, Actor, FrozenActor, Resource }
|
||||||
|
|
||||||
public class ViewportControllerWidget : Widget
|
public class ViewportControllerWidget : Widget
|
||||||
{
|
{
|
||||||
|
readonly ResourceLayer resourceLayer;
|
||||||
|
|
||||||
public readonly string TooltipTemplate = "WORLD_TOOLTIP";
|
public readonly string TooltipTemplate = "WORLD_TOOLTIP";
|
||||||
public readonly string TooltipContainer;
|
public readonly string TooltipContainer;
|
||||||
Lazy<TooltipContainerWidget> tooltipContainer;
|
Lazy<TooltipContainerWidget> tooltipContainer;
|
||||||
@@ -30,6 +33,7 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
public ITooltip ActorTooltip { get; private set; }
|
public ITooltip ActorTooltip { get; private set; }
|
||||||
public IProvideTooltipInfo[] ActorTooltipExtra { get; private set; }
|
public IProvideTooltipInfo[] ActorTooltipExtra { get; private set; }
|
||||||
public FrozenActor FrozenActorTooltip { get; private set; }
|
public FrozenActor FrozenActorTooltip { get; private set; }
|
||||||
|
public ResourceType ResourceTooltip { get; private set; }
|
||||||
|
|
||||||
public int EdgeScrollThreshold = 15;
|
public int EdgeScrollThreshold = 15;
|
||||||
public int EdgeCornerScrollThreshold = 35;
|
public int EdgeCornerScrollThreshold = 35;
|
||||||
@@ -105,6 +109,8 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
this.worldRenderer = worldRenderer;
|
this.worldRenderer = worldRenderer;
|
||||||
tooltipContainer = Exts.Lazy(() =>
|
tooltipContainer = Exts.Lazy(() =>
|
||||||
Ui.Root.Get<TooltipContainerWidget>(TooltipContainer));
|
Ui.Root.Get<TooltipContainerWidget>(TooltipContainer));
|
||||||
|
|
||||||
|
resourceLayer = world.WorldActor.TraitOrDefault<ResourceLayer>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void MouseEntered()
|
public override void MouseEntered()
|
||||||
@@ -198,13 +204,24 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
if (frozen != null)
|
if (frozen != null)
|
||||||
{
|
{
|
||||||
var actor = frozen.Actor;
|
var actor = frozen.Actor;
|
||||||
if (actor != null && actor.TraitsImplementing<IVisibilityModifier>().Any(t => !t.IsVisible(actor, world.RenderPlayer)))
|
if (actor != null && actor.TraitsImplementing<IVisibilityModifier>().All(t => t.IsVisible(actor, world.RenderPlayer)))
|
||||||
|
{
|
||||||
|
FrozenActorTooltip = frozen;
|
||||||
|
if (frozen.Actor != null)
|
||||||
|
ActorTooltipExtra = frozen.Actor.TraitsImplementing<IProvideTooltipInfo>().ToArray();
|
||||||
|
TooltipType = WorldTooltipType.FrozenActor;
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
FrozenActorTooltip = frozen;
|
if (resourceLayer != null)
|
||||||
if (frozen.Actor != null)
|
{
|
||||||
ActorTooltipExtra = frozen.Actor.TraitsImplementing<IProvideTooltipInfo>().ToArray();
|
var resource = resourceLayer.GetRenderedResource(cell);
|
||||||
TooltipType = WorldTooltipType.FrozenActor;
|
if (resource != null)
|
||||||
|
{
|
||||||
|
TooltipType = WorldTooltipType.Resource;
|
||||||
|
ResourceTooltip = resource;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user