Add notification for missing resources when tributing. Patch by alpha123. Fixes #1839.

This was SVN commit r13276.
This commit is contained in:
leper 2013-03-13 18:37:06 +00:00
parent 637abf8167
commit 844f71681a

View File

@ -175,7 +175,7 @@ Player.prototype.GetNeededResources = function(amounts)
return amountsNeeded;
};
Player.prototype.TrySubtractResources = function(amounts)
Player.prototype.SubtractResourcesOrNotify = function(amounts)
{
var amountsNeeded = this.GetNeededResources(amounts);
@ -190,17 +190,23 @@ Player.prototype.TrySubtractResources = function(amounts)
cmpGUIInterface.PushNotification(notification);
return false;
}
else
{
// Subtract the resources
var cmpStatisticsTracker = QueryPlayerIDInterface(this.playerID, IID_StatisticsTracker);
for (var type in amounts)
{
this.resourceCount[type] -= amounts[type];
return true;
};
Player.prototype.TrySubtractResources = function(amounts)
{
if (!this.SubtractResourcesOrNotify(amounts))
return false;
var cmpStatisticsTracker = QueryPlayerIDInterface(this.playerID, IID_StatisticsTracker);
if (cmpStatisticsTracker)
for (var type in amounts)
cmpStatisticsTracker.IncreaseResourceUsedCounter(type, amounts[type]);
}
}
return true;
};
@ -534,10 +540,8 @@ Player.prototype.TributeResource = function(player, amounts)
if (this.state != "active" || cmpPlayer.state != "active")
return;
if (!this.GetNeededResources(amounts))
{
for (var type in amounts)
this.resourceCount[type] -= amounts[type];
if (!this.SubtractResourcesOrNotify(amounts))
return;
cmpPlayer.AddResources(amounts);
@ -551,9 +555,8 @@ Player.prototype.TributeResource = function(player, amounts)
var notification = {"type": "tribute", "player": player, "player1": this.playerID, "amounts": amounts};
var cmpGUIInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface);
if (cmpGUIInterface)
cmpGUIInterface.PushNotification(notification);
}
// else not enough resources... TODO: send gui notification
};
Engine.RegisterComponentType(IID_Player, "Player", Player);