Added checks to make sure cash can't be < 0.
This commit is contained in:
@@ -127,7 +127,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
self.Owner.Shroud.ExploreAll();
|
||||
|
||||
var amount = order.ExtraData != 0 ? (int)order.ExtraData : info.Cash;
|
||||
self.Trait<PlayerResources>().GiveCash(amount);
|
||||
self.Trait<PlayerResources>().ChangeCash(amount);
|
||||
}
|
||||
else
|
||||
self.Owner.Shroud.ResetExploration();
|
||||
@@ -160,7 +160,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
case "DevGiveCash":
|
||||
{
|
||||
var amount = order.ExtraData != 0 ? (int)order.ExtraData : info.Cash;
|
||||
self.Trait<PlayerResources>().GiveCash(amount);
|
||||
self.Trait<PlayerResources>().ChangeCash(amount);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -86,6 +86,21 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
int lastNotificationTick;
|
||||
|
||||
public int ChangeCash(int amount)
|
||||
{
|
||||
if (amount >= 0)
|
||||
GiveCash(amount);
|
||||
else
|
||||
{
|
||||
// Don't put the player into negative funds
|
||||
amount = Math.Max(-(Cash + Resources), amount);
|
||||
|
||||
TakeCash(-amount);
|
||||
}
|
||||
|
||||
return amount;
|
||||
}
|
||||
|
||||
public bool CanGiveResources(int amount)
|
||||
{
|
||||
return Resources + amount <= ResourceCapacity;
|
||||
|
||||
Reference in New Issue
Block a user