Files
OpenRA/OpenRa.Game/ProductionItem.cs
2010-01-17 09:30:53 +13:00

56 lines
1.1 KiB
C#

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)
{
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;
}
}
}