diff --git a/OpenRa.Game/OpenRa.Game.csproj b/OpenRa.Game/OpenRa.Game.csproj index 87d9f1e3ec..b5a186c4b6 100644 --- a/OpenRa.Game/OpenRa.Game.csproj +++ b/OpenRa.Game/OpenRa.Game.csproj @@ -111,7 +111,6 @@ - diff --git a/OpenRa.Game/ProductionItem.cs b/OpenRa.Game/ProductionItem.cs deleted file mode 100644 index 4a580feacd..0000000000 --- a/OpenRa.Game/ProductionItem.cs +++ /dev/null @@ -1,57 +0,0 @@ -using System; - -namespace OpenRa -{ - class ProductionItem - { - public readonly string Item; - - public readonly int TotalTime; - public readonly int TotalCost; - public int RemainingTime { get; private set; } - public int RemainingCost { get; private set; } - - public bool Paused = false, Done = false; - public Action OnComplete; - - int slowdown = 0; - - public ProductionItem(string item, int time, int cost, Action onComplete) - { - if( time <= 0 ) - time = 1; - Item = item; - RemainingTime = TotalTime = time; - RemainingCost = TotalCost = cost; - OnComplete = onComplete; - } - - public void Tick(Player player) - { - if (Done) - { - if (OnComplete != null) OnComplete(); - return; - } - - if (Paused) return; - - if (player.GetPowerState() != PowerState.Normal) - { - if (--slowdown <= 0) - slowdown = Rules.General.LowPowerSlowdown; - else - return; - } - - var costThisFrame = RemainingCost / RemainingTime; - if (costThisFrame != 0 && !player.TakeCash(costThisFrame)) return; - - RemainingCost -= costThisFrame; - RemainingTime -= 1; - if (RemainingTime > 0) return; - - Done = true; - } - } -} diff --git a/OpenRa.Game/Traits/ProductionQueue.cs b/OpenRa.Game/Traits/ProductionQueue.cs index 20b8b218b9..4bb5c357a2 100755 --- a/OpenRa.Game/Traits/ProductionQueue.cs +++ b/OpenRa.Game/Traits/ProductionQueue.cs @@ -168,4 +168,57 @@ namespace OpenRa.Traits FinishProduction( newUnitType.Category ); } } + + class ProductionItem + { + public readonly string Item; + + public readonly int TotalTime; + public readonly int TotalCost; + public int RemainingTime { get; private set; } + public int RemainingCost { get; private set; } + + public bool Paused = false, Done = false; + public Action OnComplete; + + int slowdown = 0; + + public ProductionItem(string item, int time, int cost, Action onComplete) + { + if (time <= 0) + time = 1; + Item = item; + RemainingTime = TotalTime = time; + RemainingCost = TotalCost = cost; + OnComplete = onComplete; + } + + public void Tick(Player player) + { + if (Done) + { + if (OnComplete != null) OnComplete(); + return; + } + + if (Paused) return; + + if (player.GetPowerState() != PowerState.Normal) + { + if (--slowdown <= 0) + slowdown = Rules.General.LowPowerSlowdown; + else + return; + } + + var costThisFrame = RemainingCost / RemainingTime; + if (costThisFrame != 0 && !player.TakeCash(costThisFrame)) return; + + RemainingCost -= costThisFrame; + RemainingTime -= 1; + if (RemainingTime > 0) return; + + Done = true; + } + } }