diff --git a/binaries/data/mods/public/simulation/components/BuildLimits.js b/binaries/data/mods/public/simulation/components/BuildLimits.js index c1d62e66b7..8a069527f6 100644 --- a/binaries/data/mods/public/simulation/components/BuildLimits.js +++ b/binaries/data/mods/public/simulation/components/BuildLimits.js @@ -76,7 +76,6 @@ BuildLimits.prototype.AllowedToBuild = function(category) { if (this.count[category] >= this.count["CivilCentre"] * this.limit[category].LimitPerCivCentre) { - var cmpPlayerManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_PlayerManager); var cmpPlayer = Engine.QueryInterface(this.entity, IID_Player); var notification = {"player": cmpPlayer.GetPlayerID(), "message": category+" build limit of "+this.limit[category].LimitPerCivCentre+" per civil centre reached"}; var cmpGUIInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface); @@ -87,8 +86,7 @@ BuildLimits.prototype.AllowedToBuild = function(category) } else if (this.count[category] >= this.limit[category]) { - var cmpPlayerManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_PlayerManager); - var cmpPlayer = Engine.QueryInterface(this.entity, IID_Player); + var cmpPlayer = Engine.QueryInterface(this.entity, IID_Player); var notification = {"player": cmpPlayer.GetPlayerID(), "message": category+" build limit of "+this.limit[category]+ " reached"}; var cmpGUIInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface); cmpGUIInterface.PushNotification(notification); @@ -99,4 +97,22 @@ BuildLimits.prototype.AllowedToBuild = function(category) return true; }; +BuildLimits.prototype.OnGlobalOwnershipChanged = function(msg) +{ + // This automatically updates build counts + var cmpBuildRestrictions = Engine.QueryInterface(msg.entity, IID_BuildRestrictions); + if (cmpBuildRestrictions) + { + var playerID = (Engine.QueryInterface(this.entity, IID_Player)).GetPlayerID(); + if (msg.from == playerID) + { + this.DecrementCount(cmpBuildRestrictions.GetCategory()); + } + if (msg.to == playerID) + { + this.IncrementCount(cmpBuildRestrictions.GetCategory()); + } + } +}; + Engine.RegisterComponentType(IID_BuildLimits, "BuildLimits", BuildLimits); diff --git a/binaries/data/mods/public/simulation/components/BuildRestrictions.js b/binaries/data/mods/public/simulation/components/BuildRestrictions.js index fa3827713d..89ff62719b 100644 --- a/binaries/data/mods/public/simulation/components/BuildRestrictions.js +++ b/binaries/data/mods/public/simulation/components/BuildRestrictions.js @@ -71,24 +71,6 @@ BuildRestrictions.prototype.Init = function() this.territories = this.template.Territory.split(/\s+/); }; -BuildRestrictions.prototype.OnOwnershipChanged = function(msg) -{ - // This automatically updates building counts - if (this.template.Category) - { - if (msg.from != -1) - { - var fromPlayerBuildLimits = QueryPlayerIDInterface(msg.from, IID_BuildLimits); - fromPlayerBuildLimits.DecrementCount(this.template.Category); - } - if (msg.to != -1) - { - var toPlayerBuildLimits = QueryPlayerIDInterface(msg.to, IID_BuildLimits); - toPlayerBuildLimits.IncrementCount(this.template.Category); - } - } -}; - BuildRestrictions.prototype.CheckPlacement = function(player) { // TODO: Return error code for invalid placement, which can be handled by the UI