fix mishandled CancelProduction
This commit is contained in:
@@ -196,27 +196,21 @@ namespace OpenRA.Mods.RA
|
|||||||
|
|
||||||
protected void CancelProduction(string itemName, int numberToCancel)
|
protected void CancelProduction(string itemName, int numberToCancel)
|
||||||
{
|
{
|
||||||
if (Queue.Count == 0)
|
for (var i = 0; i < numberToCancel; i++)
|
||||||
return; // Nothing to do here
|
CancelProductionInner(itemName);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CancelProductionInner(string itemName)
|
||||||
|
{
|
||||||
var lastIndex = Queue.FindLastIndex(a => a.Item == itemName);
|
var lastIndex = Queue.FindLastIndex(a => a.Item == itemName);
|
||||||
|
|
||||||
while (lastIndex > 0)
|
if (lastIndex > 0)
|
||||||
{
|
|
||||||
|
|
||||||
Queue.RemoveAt(lastIndex);
|
Queue.RemoveAt(lastIndex);
|
||||||
lastIndex = Queue.FindLastIndex(a => a.Item == itemName);
|
else if (lastIndex == 0)
|
||||||
if (numberToCancel > 0)
|
|
||||||
--numberToCancel;
|
|
||||||
if (numberToCancel == 0)
|
|
||||||
break;
|
|
||||||
//else negative, continue deleting all orders
|
|
||||||
}
|
|
||||||
|
|
||||||
if (lastIndex == 0)
|
|
||||||
{
|
{
|
||||||
var item = Queue[0];
|
var item = Queue[0];
|
||||||
self.Owner.PlayerActor.Trait<PlayerResources>().GiveCash(item.TotalCost - item.RemainingCost); // refund what's been paid so far.
|
self.Owner.PlayerActor.Trait<PlayerResources>().GiveCash(
|
||||||
|
item.TotalCost - item.RemainingCost); // refund what has been paid
|
||||||
FinishProduction();
|
FinishProduction();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user