Simple support power tooltips
This commit is contained in:
@@ -8,6 +8,8 @@
|
|||||||
*/
|
*/
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using OpenRA.Mods.RA;
|
||||||
using OpenRA.Support;
|
using OpenRA.Support;
|
||||||
using OpenRA.Widgets;
|
using OpenRA.Widgets;
|
||||||
|
|
||||||
@@ -17,10 +19,38 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic
|
|||||||
{
|
{
|
||||||
[ObjectCreator.UseCtor]
|
[ObjectCreator.UseCtor]
|
||||||
public SupportPowerTooltipLogic([ObjectCreator.Param] Widget widget,
|
public SupportPowerTooltipLogic([ObjectCreator.Param] Widget widget,
|
||||||
|
[ObjectCreator.Param] TooltipContainerWidget tooltipContainer,
|
||||||
[ObjectCreator.Param] SupportPowersWidget palette)
|
[ObjectCreator.Param] SupportPowersWidget palette)
|
||||||
{
|
{
|
||||||
widget.IsVisible = () => palette.TooltipPower != null;
|
widget.IsVisible = () => palette.TooltipPower != null;
|
||||||
widget.GetWidget<LabelWidget>("NAME").GetText = () => palette.TooltipPower;
|
var nameLabel = widget.GetWidget<LabelWidget>("NAME");
|
||||||
|
var timeLabel = widget.GetWidget<LabelWidget>("TIME");
|
||||||
|
var nameFont = Game.Renderer.Fonts[nameLabel.Font];
|
||||||
|
var timeFont = Game.Renderer.Fonts[timeLabel.Font];
|
||||||
|
var name = "";
|
||||||
|
var time = "";
|
||||||
|
|
||||||
|
SupportPowerManager.SupportPowerInstance lastPower = null;
|
||||||
|
tooltipContainer.BeforeRender = () =>
|
||||||
|
{
|
||||||
|
var sp = palette.TooltipPower;
|
||||||
|
if (sp == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
time = "{0} / {1}".F(WidgetUtils.FormatTime(sp.RemainingTime),
|
||||||
|
WidgetUtils.FormatTime(sp.Info.ChargeTime*25));
|
||||||
|
|
||||||
|
if (sp == lastPower)
|
||||||
|
return;
|
||||||
|
|
||||||
|
name = sp.Info.Description;
|
||||||
|
widget.Bounds.Width = 2*nameLabel.Bounds.X
|
||||||
|
+ Math.Max(nameFont.Measure(name).X, timeFont.Measure(time).X);
|
||||||
|
lastPower = sp;
|
||||||
|
};
|
||||||
|
|
||||||
|
nameLabel.GetText = () => name;
|
||||||
|
timeLabel.GetText = () => time;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ namespace OpenRA.Mods.Cnc.Widgets
|
|||||||
|
|
||||||
public readonly string TooltipContainer;
|
public readonly string TooltipContainer;
|
||||||
public readonly string TooltipTemplate = "SUPPORT_POWER_TOOLTIP";
|
public readonly string TooltipTemplate = "SUPPORT_POWER_TOOLTIP";
|
||||||
public string TooltipPower { get; private set; }
|
public SupportPowerManager.SupportPowerInstance TooltipPower { get; private set; }
|
||||||
Lazy<TooltipContainerWidget> tooltipContainer;
|
Lazy<TooltipContainerWidget> tooltipContainer;
|
||||||
|
|
||||||
Rectangle eventBounds;
|
Rectangle eventBounds;
|
||||||
@@ -136,8 +136,9 @@ namespace OpenRA.Mods.Cnc.Widgets
|
|||||||
{
|
{
|
||||||
if (mi.Event == MouseInputEvent.Move)
|
if (mi.Event == MouseInputEvent.Move)
|
||||||
{
|
{
|
||||||
TooltipPower = Icons.Where(i => i.Key.Contains(mi.Location))
|
var power = Icons.Where(i => i.Key.Contains(mi.Location))
|
||||||
.Select(i => i.Value).FirstOrDefault();
|
.Select(i => i.Value).FirstOrDefault();
|
||||||
|
TooltipPower = (power != null) ? spm.Powers[power] : null;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -69,11 +69,16 @@ Background@SUPPORT_POWER_TOOLTIP:
|
|||||||
Logic:SupportPowerTooltipLogic
|
Logic:SupportPowerTooltipLogic
|
||||||
Background:panel-black
|
Background:panel-black
|
||||||
Width:200
|
Width:200
|
||||||
Height:25
|
Height:45
|
||||||
Children:
|
Children:
|
||||||
Label@NAME:
|
Label@NAME:
|
||||||
Id:NAME
|
Id:NAME
|
||||||
X:5
|
X:5
|
||||||
Width:PARENT_RIGHT-10
|
Height:23
|
||||||
|
Font:Bold
|
||||||
|
Label@TIME:
|
||||||
|
Id:TIME
|
||||||
|
X:5
|
||||||
|
Y:19
|
||||||
Height:23
|
Height:23
|
||||||
Font:Bold
|
Font:Bold
|
||||||
Reference in New Issue
Block a user