Index: ps/trunk/binaries/data/mods/public/simulation/components/Cost.js
===================================================================
--- ps/trunk/binaries/data/mods/public/simulation/components/Cost.js (revision 19603)
+++ ps/trunk/binaries/data/mods/public/simulation/components/Cost.js (revision 19604)
@@ -1,119 +1,119 @@
function Cost() {}
Cost.prototype.Schema =
"Specifies the construction/training costs of this entity." +
"" +
"1" +
"15" +
"20.0" +
"" +
"50" +
"0" +
"0" +
"25" +
"" +
"" +
"" +
"" +
"" +
"" +
"" +
"" +
"" +
"" +
"" +
"" +
- Resources.BuildSchema("nonNegativeDecimal") +
+ Resources.BuildSchema("nonNegativeInteger") +
"";
Cost.prototype.Init = function()
{
this.populationCost = +this.template.Population;
this.populationBonus = +this.template.PopulationBonus;
};
Cost.prototype.GetPopCost = function()
{
return this.populationCost;
};
Cost.prototype.GetPopBonus = function()
{
return this.populationBonus;
};
Cost.prototype.GetBuildTime = function()
{
var cmpPlayer = QueryOwnerInterface(this.entity);
var buildTime = (+this.template.BuildTime) * cmpPlayer.cheatTimeMultiplier;
return ApplyValueModificationsToEntity("Cost/BuildTime", buildTime, this.entity);
};
Cost.prototype.GetResourceCosts = function(owner)
{
if (!owner)
{
let cmpOwnership = Engine.QueryInterface(this.entity, IID_Ownership);
if (!cmpOwnership)
error("GetResourceCosts called without valid ownership");
else
owner = cmpOwnership.GetOwner();
}
let cmpTemplateManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager);
let entityTemplateName = cmpTemplateManager.GetCurrentTemplateName(this.entity);
let entityTemplate = cmpTemplateManager.GetTemplate(entityTemplateName);
let costs = {};
for (let res in this.template.Resources)
costs[res] = ApplyValueModificationsToTemplate("Cost/Resources/"+res, +this.template.Resources[res], owner, entityTemplate);
return costs;
};
Cost.prototype.OnOwnershipChanged = function(msg)
{
if (msg.from != -1)
{
let cmpPlayer = QueryPlayerIDInterface(msg.from);
if (cmpPlayer)
cmpPlayer.AddPopulationBonuses(-this.GetPopBonus());
}
if (msg.to != -1)
{
let cmpPlayer = QueryPlayerIDInterface(msg.to);
if (cmpPlayer)
cmpPlayer.AddPopulationBonuses(this.GetPopBonus());
}
};
Cost.prototype.OnValueModification = function(msg)
{
if (msg.component != "Cost")
return;
// foundations shouldn't give a pop bonus and a pop cost
var cmpFoundation = Engine.QueryInterface(this.entity, IID_Foundation);
if (cmpFoundation)
return;
// update the population costs
var newPopCost = Math.round(ApplyValueModificationsToEntity("Cost/Population", +this.template.Population, this.entity));
var popCostDifference = newPopCost - this.populationCost;
this.populationCost = newPopCost;
// update the population bonuses
var newPopBonus = Math.round(ApplyValueModificationsToEntity("Cost/PopulationBonus", +this.template.PopulationBonus, this.entity));
var popDifference = newPopBonus - this.populationBonus;
this.populationBonus = newPopBonus;
var cmpPlayer = QueryOwnerInterface(this.entity);
if (!cmpPlayer)
return;
if (popCostDifference)
cmpPlayer.AddPopulation(popCostDifference);
if (popDifference)
cmpPlayer.AddPopulationBonuses(popDifference);
};
Engine.RegisterComponentType(IID_Cost, "Cost", Cost);