Index: ps/trunk/binaries/data/mods/public/simulation/components/ProductionQueue.js =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/components/ProductionQueue.js +++ ps/trunk/binaries/data/mods/public/simulation/components/ProductionQueue.js @@ -20,9 +20,32 @@ { this.producer = producer; this.metadata = metadata; +}; +/** + * @param {string} type - The type of queue to use. + * @param {string} templateName - The template to queue. + * @param {number} count - The amount of template to queue. Only applicable for type == "unit". + * + * @return {boolean} - Whether the item could be queued. + */ +ProductionQueue.prototype.Item.prototype.Queue = function(type, templateName, count) +{ + if (type == "unit") + return this.QueueEntity(templateName, count); + + if (type == "technology") + return this.QueueTechnology(templateName); + + warn("Tried to add invalid item of type \"" + type + "\" and template \"" + templateName + "\" to a production queue (entity: " + this.producer + ")."); + return false; }; +/** + * @param {string} templateName - The name of the entity to queue. + * @param {number} count - The number of entities that should be produced. + * @return {boolean} - Whether the batch was successfully created. + */ ProductionQueue.prototype.Item.prototype.QueueEntity = function(templateName, count) { const cmpTrainer = Engine.QueryInterface(this.producer, IID_Trainer); @@ -40,20 +63,21 @@ return true; }; +/** + * @param {string} templateName - The name of the technology to queue. + * @return {boolean} - Whether the technology was successfully queued. + */ ProductionQueue.prototype.Item.prototype.QueueTechnology = function(templateName) { const cmpResearcher = Engine.QueryInterface(this.producer, IID_Researcher); if (!cmpResearcher) return false; this.technology = cmpResearcher.QueueTechnology(templateName, this.metadata); - if (this.technology == -1) - return false; - - return true; + return this.technology != -1; }; /** - * @param {number} id - The id of this item. + * @param {number} id - The id this item needs to get. */ ProductionQueue.prototype.Item.prototype.SetID = function(id) { @@ -62,19 +86,11 @@ ProductionQueue.prototype.Item.prototype.Stop = function() { - if (this.entity) - { - const cmpTrainer = Engine.QueryInterface(this.producer, IID_Trainer); - if (cmpTrainer) - cmpTrainer.StopBatch(this.entity); - } + if (this.entity > 0) + Engine.QueryInterface(this.producer, IID_Trainer)?.StopBatch(this.entity); - if (this.technology) - { - const cmpResearcher = Engine.QueryInterface(this.producer, IID_Researcher); - if (cmpResearcher) - cmpResearcher.StopResearching(this.technology); - } + if (this.technology > 0) + Engine.QueryInterface(this.producer, IID_Researcher)?.StopResearching(this.technology); }; /** @@ -85,6 +101,9 @@ this.started = true; }; +/** + * @return {boolean} - Whether there is work done on the item. + */ ProductionQueue.prototype.Item.prototype.IsStarted = function() { return !!this.started; @@ -142,6 +161,9 @@ Engine.QueryInterface(this.producer, IID_Researcher).UnpauseTechnology(this.technology); }; +/** + * @return {boolean} - Whether the item is currently paused. + */ ProductionQueue.prototype.Item.prototype.IsPaused = function() { return !!this.paused; @@ -199,7 +221,6 @@ ProductionQueue.prototype.Init = function() { this.nextID = 1; - this.queue = []; }; @@ -309,21 +330,8 @@ const item = new this.Item(); item.Init(this.entity, metadata); - if (type == "unit") - { - if (!item.QueueEntity(templateName, count)) - return false; - } - else if (type == "technology") - { - if (!item.QueueTechnology(templateName)) - return false; - } - else - { - warn("Tried to add invalid item of type \"" + type + "\" and template \"" + templateName + "\" to a production queue"); + if (!item.Queue(type, templateName, count)) return false; - } item.SetID(this.nextID++); if (pushFront) @@ -342,7 +350,7 @@ }; /* - * Removes an item from the queue. + * @param {number} - The ID of the item to remove from the queue. */ ProductionQueue.prototype.RemoveItem = function(id) { @@ -457,7 +465,6 @@ this.StopTimer(); this.paused = true; this.queue[0]?.Pause(); - this.StopTimer(); }; ProductionQueue.prototype.UnpauseProduction = function() @@ -492,6 +499,9 @@ delete this.timer; }; +/** + * @return {boolean} - Whether this entity is currently producing. + */ ProductionQueue.prototype.HasQueuedProduction = function() { return this.queue.length > 0; Index: ps/trunk/binaries/data/mods/public/simulation/components/Researcher.js =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/components/Researcher.js +++ ps/trunk/binaries/data/mods/public/simulation/components/Researcher.js @@ -221,8 +221,7 @@ if (!this.template.Technologies) return []; - let string = this.template.Technologies._string; - string = ApplyValueModificationsToEntity("Researcher/Technologies/_string", string, this.entity); + const string = ApplyValueModificationsToEntity("Researcher/Technologies/_string", this.template.Technologies._string, this.entity); if (!string) return []; Index: ps/trunk/binaries/data/mods/public/simulation/components/Trainer.js =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/components/Trainer.js +++ ps/trunk/binaries/data/mods/public/simulation/components/Trainer.js @@ -386,6 +386,7 @@ "missingPopSpace": this.missingPopSpace, "paused": this.paused, "player": this.player, + "population": this.population, "trainer": this.trainer, "resource": this.resources, "started": this.started, @@ -403,6 +404,7 @@ this.missingPopSpace = data.missingPopSpace; this.paused = data.paused; this.player = data.player; + this.population = data.population; this.trainer = data.trainer; this.resources = data.resources; this.started = data.started; Index: ps/trunk/binaries/data/mods/public/simulation/templates/structures/athen/gymnasium.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/structures/athen/gymnasium.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/structures/athen/gymnasium.xml @@ -33,6 +33,7 @@ + Index: ps/trunk/binaries/data/mods/public/simulation/templates/structures/athen/prytaneion.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/structures/athen/prytaneion.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/structures/athen/prytaneion.xml @@ -33,6 +33,7 @@ + long_walls Index: ps/trunk/binaries/data/mods/public/simulation/templates/structures/gaul/assembly.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/structures/gaul/assembly.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/structures/gaul/assembly.xml @@ -38,6 +38,7 @@ + Index: ps/trunk/binaries/data/mods/public/simulation/templates/structures/pers/apadana.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/structures/pers/apadana.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/structures/pers/apadana.xml @@ -37,6 +37,7 @@ + immortals Index: ps/trunk/binaries/data/mods/public/simulation/templates/structures/rome/army_camp.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/structures/rome/army_camp.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/structures/rome/army_camp.xml @@ -83,6 +83,7 @@ + Index: ps/trunk/binaries/data/mods/public/simulation/templates/structures/spart/gerousia.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/structures/spart/gerousia.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/structures/spart/gerousia.xml @@ -33,6 +33,7 @@ + Index: ps/trunk/binaries/data/mods/public/simulation/templates/structures/spart/syssiton.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/structures/spart/syssiton.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/structures/spart/syssiton.xml @@ -34,6 +34,7 @@ + agoge Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_structure.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/template_structure.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/template_structure.xml @@ -77,7 +77,6 @@ 0 6 - special/rallypoint @@ -94,15 +93,6 @@ 2.0 - - - 1.0 - 1.0 - 1.0 - 1.0 - - - @@ -161,9 +151,6 @@ 20 neutral enemy - - 1.0 - true false Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_civic_civil_centre.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_civic_civil_centre.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_civic_civil_centre.xml @@ -90,6 +90,7 @@ 20 + phase_town_{civ} Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_civic_house.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_civic_house.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_civic_house.xml @@ -38,6 +38,7 @@ 5 + health_females_01 Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_civic_temple.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_civic_temple.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_civic_temple.xml @@ -39,6 +39,7 @@ + heal_range Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_defensive_outpost.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_defensive_outpost.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_defensive_outpost.xml @@ -37,6 +37,7 @@ + outpost_vision Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_defensive_palisade.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_defensive_palisade.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_defensive_palisade.xml @@ -16,9 +16,7 @@ Palisade gaia/special_palisade.png - - @@ -34,5 +32,4 @@ interface/complete/building/complete_wall.xml - Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_defensive_tower_artillery.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_defensive_tower_artillery.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_defensive_tower_artillery.xml @@ -60,6 +60,7 @@ + tower_health Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_defensive_tower_bolt.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_defensive_tower_bolt.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_defensive_tower_bolt.xml @@ -57,6 +57,7 @@ + tower_health Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_defensive_tower_sentry.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_defensive_tower_sentry.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_defensive_tower_sentry.xml @@ -38,6 +38,7 @@ + tower_watch Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_defensive_tower_stone.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_defensive_tower_stone.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_defensive_tower_stone.xml @@ -37,6 +37,7 @@ + tower_watch Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_defensive_wall.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_defensive_wall.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_defensive_wall.xml @@ -19,11 +19,9 @@ - 4.5 - @@ -35,5 +33,4 @@ 20 65535 - Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_economic_farmstead.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_economic_farmstead.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_economic_farmstead.xml @@ -34,6 +34,7 @@ 20 + Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_economic_market.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_economic_market.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_economic_market.xml @@ -39,6 +39,7 @@ + trader_health Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_economic_storehouse.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_economic_storehouse.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_economic_storehouse.xml @@ -35,6 +35,7 @@ + Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_military_arsenal.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_military_arsenal.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_military_arsenal.xml @@ -35,6 +35,7 @@ + siege_attack Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_military_barracks.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_military_barracks.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_military_barracks.xml @@ -37,6 +37,7 @@ + barracks_batch_training Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_military_dock.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_military_dock.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_military_dock.xml @@ -41,6 +41,7 @@ true 0.0 + ship Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_military_elephant_stable.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_military_elephant_stable.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_military_elephant_stable.xml @@ -37,6 +37,7 @@ + interface/complete/building/complete_elephant_stable.xml Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_military_embassy.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_military_embassy.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_military_embassy.xml @@ -27,6 +27,7 @@ + Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_military_forge.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_military_forge.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_military_forge.xml @@ -33,6 +33,7 @@ + soldier_attack_melee_01 Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_military_fortress.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_military_fortress.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_military_fortress.xml @@ -77,6 +77,7 @@ + attack_soldiers_will Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_military_range.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_military_range.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_military_range.xml @@ -32,6 +32,7 @@ + interface/complete/building/complete_range.xml Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_military_stable.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_military_stable.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_military_stable.xml @@ -37,6 +37,7 @@ + stable_batch_training Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_resource_corral.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_resource_corral.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_resource_corral.xml @@ -28,6 +28,7 @@ + gather_animals_stockbreeding Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_resource_field.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_resource_field.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_resource_field.xml @@ -32,9 +32,7 @@ false false - - @@ -60,7 +58,6 @@ 8.0 - 0 Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_special_amphitheater.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_special_amphitheater.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_special_amphitheater.xml @@ -27,6 +27,7 @@ + Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_special_library.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_special_library.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_special_library.xml @@ -34,8 +34,6 @@ - - @@ -47,7 +45,6 @@ 50 40000 - 40 Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_special_rotarymill.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_special_rotarymill.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_special_rotarymill.xml @@ -28,9 +28,7 @@ - - food true @@ -49,7 +47,6 @@ 32 40000 - 40 Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_special_theater.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_special_theater.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_special_theater.xml @@ -35,8 +35,6 @@ - - @@ -48,7 +46,6 @@ 100 40000 - 40 Index: ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_wonder.xml =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_wonder.xml +++ ps/trunk/binaries/data/mods/public/simulation/templates/template_structure_wonder.xml @@ -50,6 +50,7 @@ + wonder_population_cap