Allow support powers to override the icon overlay/tooltip labels.

This commit is contained in:
Paul Chote
2018-10-09 19:28:02 +01:00
committed by reaperrr
parent 70b020205d
commit 1fa90c0474
3 changed files with 29 additions and 12 deletions

View File

@@ -105,13 +105,6 @@ namespace OpenRA.Mods.Common.Traits
Powers[order.OrderString].Activate(order);
}
// Deprecated. Remove after SupportPowerBinWidget is removed.
public void Target(string key)
{
if (Powers.ContainsKey(key))
Powers[key].Target();
}
static readonly SupportPowerInstance[] NoInstances = { };
public IEnumerable<SupportPowerInstance> GetPowersForActor(Actor a)
@@ -260,6 +253,16 @@ namespace OpenRA.Mods.Common.Traits
oneShotFired = true;
}
}
public virtual string IconOverlayTextOverride()
{
return null;
}
public virtual string TooltipTimeTextOverride()
{
return null;
}
}
public class SelectGenericPowerTarget : OrderGenerator

View File

@@ -59,11 +59,17 @@ namespace OpenRA.Mods.Common.Widgets.Logic
descLabel.Text = sp.Info.LongDesc.Replace("\\n", "\n");
var descSize = descFont.Measure(descLabel.Text);
var customLabel = sp.TooltipTimeTextOverride();
if (customLabel == null)
{
var remaining = WidgetUtils.FormatTime(sp.RemainingTicks, world.Timestep);
var total = WidgetUtils.FormatTime(sp.Info.ChargeInterval, world.Timestep);
timeLabel.Text = "{0} / {1}".F(remaining, total);
var timeSize = timeFont.Measure(timeLabel.Text);
}
else
timeLabel.Text = customLabel;
var timeSize = timeFont.Measure(timeLabel.Text);
var hotkeyWidth = 0;
hotkeyLabel.Visible = hotkey.IsValid();
if (hotkeyLabel.Visible)

View File

@@ -215,7 +215,15 @@ namespace OpenRA.Mods.Common.Widgets
// Overlay
foreach (var p in icons.Values)
{
if (p.Power.Ready)
var customText = p.Power.IconOverlayTextOverride();
if (customText != null)
{
var customOffset = iconOffset - overlayFont.Measure(customText) / 2;
overlayFont.DrawTextWithContrast(customText,
p.Pos + customOffset,
Color.White, Color.Black, 1);
}
else if (p.Power.Ready)
overlayFont.DrawTextWithContrast(ReadyText,
p.Pos + readyOffset,
Color.White, Color.Black, 1);