Index: binaries/data/mods/public/gui/session/unit_actions.js =================================================================== --- binaries/data/mods/public/gui/session/unit_actions.js +++ binaries/data/mods/public/gui/session/unit_actions.js @@ -905,7 +905,7 @@ }, "getActionInfo": function(entState, targetState) { - if (!entState.treasureCollecter || + if (!entState.treasureCollector || !targetState || !targetState.treasure) return false; Index: binaries/data/mods/public/simulation/ai/common-api/entity.js =================================================================== --- binaries/data/mods/public/simulation/ai/common-api/entity.js +++ binaries/data/mods/public/simulation/ai/common-api/entity.js @@ -569,7 +569,7 @@ "canOccupyTurret": function() { return "Turretable" in this._template; }, - "isTreasureCollecter": function() { return this.get("TreasureCollecter") !== undefined; }, + "isTreasureCollector": function() { return this.get("TreasureCollector") !== undefined; }, }); Index: binaries/data/mods/public/simulation/ai/petra/entityExtend.js =================================================================== --- binaries/data/mods/public/simulation/ai/petra/entityExtend.js +++ binaries/data/mods/public/simulation/ai/petra/entityExtend.js @@ -382,7 +382,7 @@ return false; if (!ent || !ent.position()) return false; - if (!ent.isTreasureCollecter()) + if (!ent.isTreasureCollector()) return false; let treasureFound; let distmin = Math.min(); Index: binaries/data/mods/public/simulation/components/GuiInterface.js =================================================================== --- binaries/data/mods/public/simulation/components/GuiInterface.js +++ binaries/data/mods/public/simulation/components/GuiInterface.js @@ -570,9 +570,9 @@ "resources": cmpTreasure.Resources() }; - let cmpTreasureCollecter = Engine.QueryInterface(ent, IID_TreasureCollecter); - if (cmpTreasureCollecter) - ret.treasureCollecter = true; + let cmpTreasureCollector = Engine.QueryInterface(ent, IID_TreasureCollector); + if (cmpTreasureCollector) + ret.treasureCollector = true; let cmpUnitMotion = Engine.QueryInterface(ent, IID_UnitMotion); if (cmpUnitMotion) Index: binaries/data/mods/public/simulation/components/TreasureCollecter.js =================================================================== --- binaries/data/mods/public/simulation/components/TreasureCollecter.js +++ binaries/data/mods/public/simulation/components/TreasureCollecter.js @@ -1,127 +0,0 @@ -function TreasureCollecter() {} - -TreasureCollecter.prototype.Schema = - "Defines the treasure collecting abilities." + - "" + - "2.0" + - "" + - "" + - "" + - ""; - -TreasureCollecter.prototype.Init = function() -{ -}; - -/** - * @return {Object} - Min/Max range at which this entity can claim a treasure. - */ -TreasureCollecter.prototype.GetRange = function() -{ - return { "min": 0, "max": +this.template.MaxDistance }; -}; - -/** - * @param {number} target - Entity ID of the target. - * @return {boolean} - Whether we can collect from the target. - */ -TreasureCollecter.prototype.CanCollect = function(target) -{ - let cmpTreasure = Engine.QueryInterface(target, IID_Treasure); - return cmpTreasure && cmpTreasure.IsAvailable(); -}; - -/** - * @param {number} target - The target to collect. - * @param {number} callerIID - The IID to notify on specific events. - * - * @return {boolean} - Whether we started collecting. - */ -TreasureCollecter.prototype.StartCollecting = function(target, callerIID) -{ - if (this.target) - this.StopCollecting(); - - let cmpTreasure = Engine.QueryInterface(target, IID_Treasure); - if (!cmpTreasure || !cmpTreasure.IsAvailable()) - return false; - - let cmpVisual = Engine.QueryInterface(this.entity, IID_Visual); - if (cmpVisual) - cmpVisual.SelectAnimation("collecting_treasure", false, 1.0); - - this.target = target; - this.callerIID = callerIID; - - // ToDo: Implement rate modifiers. - let cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer); - this.timer = cmpTimer.SetTimeout(this.entity, IID_TreasureCollecter, "CollectTreasure", cmpTreasure.CollectionTime(), null); - - return true; -}; - -/** - * @param {string} reason - The reason why we stopped collecting, used to notify the caller. - */ -TreasureCollecter.prototype.StopCollecting = function(reason) -{ - if (!this.target) - return; - - let cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer); - cmpTimer.CancelTimer(this.timer); - delete this.timer; - - delete this.target; - - let cmpVisual = Engine.QueryInterface(this.entity, IID_Visual); - if (cmpVisual) - cmpVisual.SelectAnimation("idle", false, 1.0); - - // The callerIID component may start again, - // replacing the callerIID, hence save that. - let callerIID = this.callerIID; - delete this.callerIID; - - if (reason && callerIID) - { - let component = Engine.QueryInterface(this.entity, callerIID); - if (component) - component.ProcessMessage(reason, null); - } -}; - -/** - * @params - Data and lateness are unused. - */ -TreasureCollecter.prototype.CollectTreasure = function(data, lateness) -{ - let cmpTreasure = Engine.QueryInterface(this.target, IID_Treasure); - if (!cmpTreasure || !cmpTreasure.IsAvailable()) - { - this.StopCollecting("TargetInvalidated"); - return; - } - - if (!this.IsTargetInRange(this.target)) - { - this.StopCollecting("OutOfRange"); - return; - } - - cmpTreasure.Reward(this.entity); - this.StopCollecting("TargetInvalidated"); -}; - -/** - * @param {number} - The entity ID of the target to check. - * @return {boolean} - Whether this entity is in range of its target. - */ -TreasureCollecter.prototype.IsTargetInRange = function(target) -{ - let range = this.GetRange(); - let cmpObstructionManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_ObstructionManager); - return cmpObstructionManager.IsInTargetRange(this.entity, target, range.min, range.max, false); -}; - -Engine.RegisterComponentType(IID_TreasureCollecter, "TreasureCollecter", TreasureCollecter); Index: binaries/data/mods/public/simulation/components/TreasureCollector.js =================================================================== --- binaries/data/mods/public/simulation/components/TreasureCollector.js +++ binaries/data/mods/public/simulation/components/TreasureCollector.js @@ -1,6 +1,6 @@ -function TreasureCollecter() {} +function TreasureCollector() {} -TreasureCollecter.prototype.Schema = +TreasureCollector.prototype.Schema = "Defines the treasure collecting abilities." + "" + "2.0" + @@ -9,14 +9,14 @@ "" + ""; -TreasureCollecter.prototype.Init = function() +TreasureCollector.prototype.Init = function() { }; /** * @return {Object} - Min/Max range at which this entity can claim a treasure. */ -TreasureCollecter.prototype.GetRange = function() +TreasureCollector.prototype.GetRange = function() { return { "min": 0, "max": +this.template.MaxDistance }; }; @@ -25,7 +25,7 @@ * @param {number} target - Entity ID of the target. * @return {boolean} - Whether we can collect from the target. */ -TreasureCollecter.prototype.CanCollect = function(target) +TreasureCollector.prototype.CanCollect = function(target) { let cmpTreasure = Engine.QueryInterface(target, IID_Treasure); return cmpTreasure && cmpTreasure.IsAvailable(); @@ -37,7 +37,7 @@ * * @return {boolean} - Whether we started collecting. */ -TreasureCollecter.prototype.StartCollecting = function(target, callerIID) +TreasureCollector.prototype.StartCollecting = function(target, callerIID) { if (this.target) this.StopCollecting(); @@ -55,7 +55,7 @@ // ToDo: Implement rate modifiers. let cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer); - this.timer = cmpTimer.SetTimeout(this.entity, IID_TreasureCollecter, "CollectTreasure", cmpTreasure.CollectionTime(), null); + this.timer = cmpTimer.SetTimeout(this.entity, IID_TreasureCollector, "CollectTreasure", cmpTreasure.CollectionTime(), null); return true; }; @@ -63,7 +63,7 @@ /** * @param {string} reason - The reason why we stopped collecting, used to notify the caller. */ -TreasureCollecter.prototype.StopCollecting = function(reason) +TreasureCollector.prototype.StopCollecting = function(reason) { if (!this.target) return; @@ -94,7 +94,7 @@ /** * @params - Data and lateness are unused. */ -TreasureCollecter.prototype.CollectTreasure = function(data, lateness) +TreasureCollector.prototype.CollectTreasure = function(data, lateness) { let cmpTreasure = Engine.QueryInterface(this.target, IID_Treasure); if (!cmpTreasure || !cmpTreasure.IsAvailable()) @@ -117,11 +117,11 @@ * @param {number} - The entity ID of the target to check. * @return {boolean} - Whether this entity is in range of its target. */ -TreasureCollecter.prototype.IsTargetInRange = function(target) +TreasureCollector.prototype.IsTargetInRange = function(target) { let range = this.GetRange(); let cmpObstructionManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_ObstructionManager); return cmpObstructionManager.IsInTargetRange(this.entity, target, range.min, range.max, false); }; -Engine.RegisterComponentType(IID_TreasureCollecter, "TreasureCollecter", TreasureCollecter); +Engine.RegisterComponentType(IID_TreasureCollector, "TreasureCollector", TreasureCollector); Index: binaries/data/mods/public/simulation/components/UnitAI.js =================================================================== --- binaries/data/mods/public/simulation/components/UnitAI.js +++ binaries/data/mods/public/simulation/components/UnitAI.js @@ -642,7 +642,7 @@ }, "Order.CollectTreasure": function(msg) { - if (this.CheckTargetRange(msg.data.target, IID_TreasureCollecter)) + if (this.CheckTargetRange(msg.data.target, IID_TreasureCollector)) this.SetNextState("INDIVIDUAL.COLLECTTREASURE.COLLECTING"); else if (this.AbleToMove()) this.SetNextState("INDIVIDUAL.COLLECTTREASURE.APPROACHING"); @@ -2786,7 +2786,7 @@ this.FinishOrder(); return true; } - if (!this.MoveToTargetRange(this.order.data.target, IID_TreasureCollecter)) + if (!this.MoveToTargetRange(this.order.data.target, IID_TreasureCollector)) { this.SetNextState("FINDINGNEWTARGET"); return true; @@ -2799,7 +2799,7 @@ }, "MovementUpdate": function(msg) { - if (this.CheckTargetRange(this.order.data.target, IID_TreasureCollecter)) + if (this.CheckTargetRange(this.order.data.target, IID_TreasureCollector)) this.SetNextState("COLLECTING"); else if (msg.likelyFailure) this.SetNextState("FINDINGNEWTARGET"); @@ -2808,8 +2808,8 @@ "COLLECTING": { "enter": function() { - let cmpTreasureCollecter = Engine.QueryInterface(this.entity, IID_TreasureCollecter); - if (!cmpTreasureCollecter.StartCollecting(this.order.data.target, IID_UnitAI)) + let cmpTreasureCollector = Engine.QueryInterface(this.entity, IID_TreasureCollector); + if (!cmpTreasureCollector.StartCollecting(this.order.data.target, IID_UnitAI)) { this.ProcessMessage("TargetInvalidated"); return true; @@ -2819,9 +2819,9 @@ }, "leave": function() { - let cmpTreasureCollecter = Engine.QueryInterface(this.entity, IID_TreasureCollecter); - if (cmpTreasureCollecter) - cmpTreasureCollecter.StopCollecting(); + let cmpTreasureCollector = Engine.QueryInterface(this.entity, IID_TreasureCollector); + if (cmpTreasureCollector) + cmpTreasureCollector.StopCollecting(); }, "OutOfRange": function(msg) { @@ -4451,8 +4451,8 @@ if (!position) return undefined; - let cmpTreasureCollecter = Engine.QueryInterface(this.entity, IID_TreasureCollecter); - if (!cmpTreasureCollecter) + let cmpTreasureCollector = Engine.QueryInterface(this.entity, IID_TreasureCollector); + if (!cmpTreasureCollector) return undefined; let players = Engine.QueryInterface(SYSTEM_ENTITY, IID_PlayerManager).GetAllPlayers(); @@ -4461,7 +4461,7 @@ let cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager); // Don't account for entity size, we need to match LOS visibility. let nearby = cmpRangeManager.ExecuteQueryAroundPos(position, 0, range, players, IID_Treasure, false); - return nearby.find(ent => cmpTreasureCollecter.CanCollect(ent)); + return nearby.find(ent => cmpTreasureCollector.CanCollect(ent)); }; /** Index: binaries/data/mods/public/simulation/components/interfaces/TreasureCollecter.js =================================================================== --- binaries/data/mods/public/simulation/components/interfaces/TreasureCollecter.js +++ binaries/data/mods/public/simulation/components/interfaces/TreasureCollecter.js @@ -1 +0,0 @@ -Engine.RegisterInterface("TreasureCollecter"); Index: binaries/data/mods/public/simulation/components/interfaces/TreasureCollector.js =================================================================== --- binaries/data/mods/public/simulation/components/interfaces/TreasureCollector.js +++ binaries/data/mods/public/simulation/components/interfaces/TreasureCollector.js @@ -1 +1 @@ -Engine.RegisterInterface("TreasureCollecter"); +Engine.RegisterInterface("TreasureCollector"); Index: binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js =================================================================== --- binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js +++ binaries/data/mods/public/simulation/components/tests/test_GuiInterface.js @@ -33,7 +33,7 @@ Engine.LoadComponentScript("interfaces/TurretHolder.js"); Engine.LoadComponentScript("interfaces/Timer.js"); Engine.LoadComponentScript("interfaces/Treasure.js"); -Engine.LoadComponentScript("interfaces/TreasureCollecter.js"); +Engine.LoadComponentScript("interfaces/TreasureCollector.js"); Engine.LoadComponentScript("interfaces/Turretable.js"); Engine.LoadComponentScript("interfaces/StatisticsTracker.js"); Engine.LoadComponentScript("interfaces/StatusEffectsReceiver.js"); Index: binaries/data/mods/public/simulation/components/tests/test_TreasureCollecter.js =================================================================== --- binaries/data/mods/public/simulation/components/tests/test_TreasureCollecter.js +++ binaries/data/mods/public/simulation/components/tests/test_TreasureCollecter.js @@ -1,47 +0,0 @@ -Engine.LoadHelperScript("Player.js"); -Engine.LoadComponentScript("interfaces/Timer.js"); -Engine.LoadComponentScript("interfaces/Treasure.js"); -Engine.LoadComponentScript("interfaces/TreasureCollecter.js"); -Engine.LoadComponentScript("interfaces/UnitAI.js"); -Engine.LoadComponentScript("Timer.js"); -Engine.LoadComponentScript("TreasureCollecter.js"); - -AddMock(SYSTEM_ENTITY, IID_ObstructionManager, { - "IsInTargetRange": () => true -}); - -const entity = 11; -let treasure = 12; -let cmpTimer = ConstructComponent(SYSTEM_ENTITY, "Timer", {}); - -let cmpTreasurer = ConstructComponent(entity, "TreasureCollecter", { - "MaxDistance": "2.0" -}); - -TS_ASSERT(!cmpTreasurer.StartCollecting(treasure)); - -let cmpTreasure = AddMock(treasure, IID_Treasure, { - "Reward": (ent) => true, - "CollectionTime": () => 1000, - "IsAvailable": () => true -}); -let spyTreasure = new Spy(cmpTreasure, "Reward"); -TS_ASSERT(cmpTreasurer.StartCollecting(treasure)); -cmpTimer.OnUpdate({ "turnLength": 1 }); -TS_ASSERT_EQUALS(spyTreasure._called, 1); - -// Test that starting to collect twice merely collects once. -spyTreasure._called = 0; -TS_ASSERT(cmpTreasurer.StartCollecting(treasure)); -TS_ASSERT(cmpTreasurer.StartCollecting(treasure)); -cmpTimer.OnUpdate({ "turnLength": 1 }); -TS_ASSERT_EQUALS(spyTreasure._called, 1); - -// Test callback is called. -let cmpUnitAI = AddMock(entity, IID_UnitAI, { - "ProcessMessage": (type, data) => TS_ASSERT_EQUALS(type, "TargetInvalidated") -}); -let spyUnitAI = new Spy(cmpUnitAI, "ProcessMessage"); -TS_ASSERT(cmpTreasurer.StartCollecting(treasure, IID_UnitAI)); -cmpTimer.OnUpdate({ "turnLength": 1 }); -TS_ASSERT_EQUALS(spyUnitAI._called, 1); Index: binaries/data/mods/public/simulation/components/tests/test_TreasureCollector.js =================================================================== --- binaries/data/mods/public/simulation/components/tests/test_TreasureCollector.js +++ binaries/data/mods/public/simulation/components/tests/test_TreasureCollector.js @@ -1,10 +1,10 @@ Engine.LoadHelperScript("Player.js"); Engine.LoadComponentScript("interfaces/Timer.js"); Engine.LoadComponentScript("interfaces/Treasure.js"); -Engine.LoadComponentScript("interfaces/TreasureCollecter.js"); +Engine.LoadComponentScript("interfaces/TreasureCollector.js"); Engine.LoadComponentScript("interfaces/UnitAI.js"); Engine.LoadComponentScript("Timer.js"); -Engine.LoadComponentScript("TreasureCollecter.js"); +Engine.LoadComponentScript("TreasureCollector.js"); AddMock(SYSTEM_ENTITY, IID_ObstructionManager, { "IsInTargetRange": () => true @@ -14,7 +14,7 @@ let treasure = 12; let cmpTimer = ConstructComponent(SYSTEM_ENTITY, "Timer", {}); -let cmpTreasurer = ConstructComponent(entity, "TreasureCollecter", { +let cmpTreasurer = ConstructComponent(entity, "TreasureCollector", { "MaxDistance": "2.0" }); Index: binaries/data/mods/public/simulation/components/tests/test_Treasures.js =================================================================== --- binaries/data/mods/public/simulation/components/tests/test_Treasures.js +++ binaries/data/mods/public/simulation/components/tests/test_Treasures.js @@ -26,14 +26,14 @@ Engine.LoadComponentScript("interfaces/Player.js"); Engine.LoadComponentScript("interfaces/StatisticsTracker.js"); Engine.LoadComponentScript("interfaces/Treasure.js"); -Engine.LoadComponentScript("interfaces/TreasureCollecter.js"); +Engine.LoadComponentScript("interfaces/TreasureCollector.js"); Engine.LoadComponentScript("interfaces/Timer.js"); Engine.LoadComponentScript("interfaces/Trigger.js"); Engine.LoadComponentScript("interfaces/UnitAI.js"); Engine.LoadComponentScript("Player.js"); Engine.LoadComponentScript("Timer.js"); Engine.LoadComponentScript("Treasure.js"); -Engine.LoadComponentScript("TreasureCollecter.js"); +Engine.LoadComponentScript("TreasureCollector.js"); Engine.LoadComponentScript("Trigger.js"); let cmpTimer = ConstructComponent(SYSTEM_ENTITY, "Timer", {}); @@ -73,7 +73,7 @@ }); cmpTreasure.OnOwnershipChanged({ "to": 0 }); -let cmpTreasurer = ConstructComponent(treasurer, "TreasureCollecter", { +let cmpTreasurer = ConstructComponent(treasurer, "TreasureCollector", { "MaxDistance": "2.0" }); Index: binaries/data/mods/public/simulation/templates/template_unit.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit.xml +++ binaries/data/mods/public/simulation/templates/template_unit.xml @@ -107,9 +107,9 @@ 5.0 - + 2 - + aggressive 12.0 Index: binaries/data/mods/public/simulation/templates/template_unit_catafalque.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_catafalque.xml +++ binaries/data/mods/public/simulation/templates/template_unit_catafalque.xml @@ -44,7 +44,7 @@ actor/singlesteps/steps_grass.xml - + standground false Index: binaries/data/mods/public/simulation/templates/template_unit_dog.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_dog.xml +++ binaries/data/mods/public/simulation/templates/template_unit_dog.xml @@ -63,7 +63,7 @@ WarDog - + 1.5 2 Index: binaries/data/mods/public/simulation/templates/template_unit_fauna.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_fauna.xml +++ binaries/data/mods/public/simulation/templates/template_unit_fauna.xml @@ -32,7 +32,7 @@ Animal - + passive false Index: binaries/data/mods/public/simulation/templates/template_unit_ship.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_ship.xml +++ binaries/data/mods/public/simulation/templates/template_unit_ship.xml @@ -70,7 +70,7 @@ 0.5 6.0 - + ship Index: binaries/data/mods/public/simulation/templates/template_unit_ship_merchant.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_ship_merchant.xml +++ binaries/data/mods/public/simulation/templates/template_unit_ship_merchant.xml @@ -28,9 +28,9 @@ 0.75 0.2 - + 12 - + passive false Index: binaries/data/mods/public/simulation/templates/template_unit_support_slave.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_support_slave.xml +++ binaries/data/mods/public/simulation/templates/template_unit_support_slave.xml @@ -45,7 +45,7 @@ 10 - + resource/construction/con_wood.xml