From efebb500f0345a09f3ce61148df2a34708e01266 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sat, 2 Aug 2014 21:27:18 +1200 Subject: [PATCH] Fix instant-use and AllowMultiple support powers. Fixes #2185, #6090. --- OpenRA.Mods.RA/SupportPowers/SupportPowerManager.cs | 1 + OpenRA.Mods.RA/Widgets/SupportPowersWidget.cs | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/OpenRA.Mods.RA/SupportPowers/SupportPowerManager.cs b/OpenRA.Mods.RA/SupportPowers/SupportPowerManager.cs index 472208290e..7f768bc9d3 100644 --- a/OpenRA.Mods.RA/SupportPowers/SupportPowerManager.cs +++ b/OpenRA.Mods.RA/SupportPowers/SupportPowerManager.cs @@ -108,6 +108,7 @@ namespace OpenRA.Mods.RA Powers[order.OrderString].Activate(order); } + // Deprecated. Remove after SupportPowerBinWidget is removed. public void Target(string key) { if (Powers.ContainsKey(key)) diff --git a/OpenRA.Mods.RA/Widgets/SupportPowersWidget.cs b/OpenRA.Mods.RA/Widgets/SupportPowersWidget.cs index eba2f0e550..e3677e8b87 100644 --- a/OpenRA.Mods.RA/Widgets/SupportPowersWidget.cs +++ b/OpenRA.Mods.RA/Widgets/SupportPowersWidget.cs @@ -113,9 +113,10 @@ namespace OpenRA.Mods.RA.Widgets WidgetUtils.DrawSHPCentered(p.Sprite, p.Pos + iconOffset, worldRenderer); // Charge progress + var sp = p.Power; clock.PlayFetchIndex("idle", - () => (p.Power.TotalTime - p.Power.RemainingTime) - * (clock.CurrentSequence.Length - 1) / p.Power.TotalTime); + () => sp.TotalTime == 0 ? clock.CurrentSequence.Length - 1 : (sp.TotalTime - sp.RemainingTime) + * (clock.CurrentSequence.Length - 1) / sp.TotalTime); clock.Tick(); WidgetUtils.DrawSHPCentered(clock.Image, p.Pos + iconOffset, worldRenderer); @@ -184,7 +185,7 @@ namespace OpenRA.Mods.RA.Widgets if (!clicked.Power.Active) Sound.PlayToPlayer(spm.self.Owner, clicked.Power.Info.InsufficientPowerSound); - spm.Target(clicked.Power.Info.OrderName); + clicked.Power.Target(); } return true;