Merge pull request #12103 from pchote/resource-tooltip

Add tooltips to map resources.
This commit is contained in:
reaperrr
2016-09-29 18:36:00 +02:00
committed by GitHub
16 changed files with 132 additions and 54 deletions

View File

@@ -56,7 +56,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
layerPreview.IsVisible = () => true;
layerPreview.GetPalette = () => resource.Palette;
var variant = resource.Variants.FirstOrDefault();
var variant = resource.Sequences.FirstOrDefault();
var sequence = rules.Sequences.GetSequence("resources", variant);
var frame = sequence.Frames != null ? sequence.Frames.Last() : resource.MaxDensity - 1;
layerPreview.GetSprite = () => sequence.GetSprite(frame);
@@ -67,7 +67,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
newResourcePreviewTemplate.Bounds.Height = tileSize.Height + (layerPreview.Bounds.Y * 2);
newResourcePreviewTemplate.IsVisible = () => true;
newResourcePreviewTemplate.GetTooltipText = () => resource.Name;
newResourcePreviewTemplate.GetTooltipText = () => resource.Type;
layerTemplateList.AddChild(newResourcePreviewTemplate);
}

View File

@@ -55,7 +55,10 @@ namespace OpenRA.Mods.Common.Widgets.Logic
switch (viewport.TooltipType)
{
case WorldTooltipType.Unexplored:
labelText = "Unexplored Terrain";
labelText = "Unrevealed Terrain";
break;
case WorldTooltipType.Resource:
labelText = viewport.ResourceTooltip.Info.Name;
break;
case WorldTooltipType.Actor:
{

View File

@@ -13,15 +13,18 @@ using System;
using System.Collections.Generic;
using System.Linq;
using OpenRA.Graphics;
using OpenRA.Mods.Common.Traits;
using OpenRA.Traits;
using OpenRA.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
{
readonly ResourceLayer resourceLayer;
public readonly string TooltipTemplate = "WORLD_TOOLTIP";
public readonly string TooltipContainer;
Lazy<TooltipContainerWidget> tooltipContainer;
@@ -30,6 +33,7 @@ namespace OpenRA.Mods.Common.Widgets
public ITooltip ActorTooltip { get; private set; }
public IProvideTooltipInfo[] ActorTooltipExtra { get; private set; }
public FrozenActor FrozenActorTooltip { get; private set; }
public ResourceType ResourceTooltip { get; private set; }
public int EdgeScrollThreshold = 15;
public int EdgeCornerScrollThreshold = 35;
@@ -105,6 +109,8 @@ namespace OpenRA.Mods.Common.Widgets
this.worldRenderer = worldRenderer;
tooltipContainer = Exts.Lazy(() =>
Ui.Root.Get<TooltipContainerWidget>(TooltipContainer));
resourceLayer = world.WorldActor.TraitOrDefault<ResourceLayer>();
}
public override void MouseEntered()
@@ -198,13 +204,24 @@ namespace OpenRA.Mods.Common.Widgets
if (frozen != null)
{
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;
}
}
FrozenActorTooltip = frozen;
if (frozen.Actor != null)
ActorTooltipExtra = frozen.Actor.TraitsImplementing<IProvideTooltipInfo>().ToArray();
TooltipType = WorldTooltipType.FrozenActor;
if (resourceLayer != null)
{
var resource = resourceLayer.GetRenderedResource(cell);
if (resource != null)
{
TooltipType = WorldTooltipType.Resource;
ResourceTooltip = resource;
}
}
}