diff --git a/src/Mods/SecExp/buildings/secBarracks.tw b/src/Mods/SecExp/buildings/secBarracks.tw index 3e46b03a25221d2aeb5aca886516c6c633c80d41..0fbe76bf1a140780ea578f17e03b84edec1c5da8 100644 --- a/src/Mods/SecExp/buildings/secBarracks.tw +++ b/src/Mods/SecExp/buildings/secBarracks.tw @@ -193,7 +193,7 @@ You are free to organize your menial slaves into fighting units. Currently you h <br> <<link "Form a new unit" "secBarracks">> <<set _newUnit = { - ID: 0, + ID: App.SecExp.generateUnitID(), platoonName: ordinalSuffix(++$createdSlavesUnits) + " slave platoon", active: 1, isDeployed: 0, @@ -207,7 +207,6 @@ You are free to organize your menial slaves into fighting units. Currently you h SF: 0, commissars: 0, battlesFought: 0}>> - <<generateUnitID _newUnit>> <<set $slaveUnits.push(_newUnit)>> <<set $menials -= _newUnit.troops>> <</link>> @@ -296,7 +295,7 @@ __Militia__ <br><br> <<link "Form a new unit" "secBarracks">> <<set _newUnit = { - ID: 0, + ID: App.SecExp.generateUnitID(), platoonName: ordinalSuffix(++$createdMilitiaUnits) + " citizens' platoon", active: 1, isDeployed: 0, @@ -310,7 +309,6 @@ __Militia__ SF: 0, commissars: 0, battlesFought: 0}>> - <<generateUnitID _newUnit>> <<set $militiaUnits.push(_newUnit)>> <<set $militiaFreeManpower -= _newUnit.troops>> <</link>> @@ -395,7 +393,7 @@ __Mercenaries__ <br><br> <<link "Form a new unit" "secBarracks">> <<set _newUnit = { - ID: 0, + ID: App.SecExp.generateUnitID(), platoonName: ordinalSuffix(++$createdMercUnits) + " mercenary platoon", active: 1, isDeployed: 0, @@ -409,7 +407,6 @@ __Mercenaries__ SF: 0, commissars: 0, battlesFought: 0}>> - <<generateUnitID _newUnit>> <<set $mercUnits.push(_newUnit)>> <<set $mercFreeManpower -= _newUnit.troops>> <</link>> diff --git a/src/Mods/SecExp/js/Unit.js b/src/Mods/SecExp/js/Unit.js index 36c0c413185028c6c2d918ba44c283a67e4334cc..cd6bdfa02dc88a5f712005ff65046108295eee0e 100644 --- a/src/Mods/SecExp/js/Unit.js +++ b/src/Mods/SecExp/js/Unit.js @@ -1,3 +1,14 @@ +/** Generate a unit ID for a new unit + * @returns {number} + */ +App.SecExp.generateUnitID = function() { + return Math.max( + V.militiaUnits.reduce((acc, cur) => Math.max(acc, cur.ID), 0), + V.slaveUnits.reduce((acc, cur) => Math.max(acc, cur.ID), 0), + V.mercUnits.reduce((acc, cur) => Math.max(acc, cur.ID), 0) + ) + 1; +}; + /** Player unit factory - get a unit based on its type and index * @param {string} type - "Bots", "Militia", "Slaves", or "Mercs" * @param {number} [index] - must be supplied if type is not "Bots" diff --git a/src/Mods/SecExp/widgets/miscSecExpWidgets.tw b/src/Mods/SecExp/widgets/miscSecExpWidgets.tw index db9bddea9276f8d41ba7dbf20fc24ed804d7367f..77e99c5102c43d78eabfc7a00e534ff7145c178d 100644 --- a/src/Mods/SecExp/widgets/miscSecExpWidgets.tw +++ b/src/Mods/SecExp/widgets/miscSecExpWidgets.tw @@ -24,7 +24,7 @@ <</if>> <<if ndef $militiaUnits[_i].ID>> <br>Set militia missing ID - <<generateUnitID $militiaUnits[_i]>> + <<set $militiaUnits[_i].ID = App.SecExp.generateUnitID()>> <</if>> <<if ndef $militiaUnits[_i].cyber>> <br>Set militia missing flag @@ -55,7 +55,7 @@ <</if>> <<if ndef $slaveUnits[_i].ID>> <br>Set slave missing ID - <<generateUnitID $slaveUnits[_i]>> + <<set $slaveUnits[_i].ID = App.SecExp.generateUnitID()>> <</if>> <<if ndef $slaveUnits[_i].cyber>> <br>Set slave missing flag @@ -86,7 +86,7 @@ <</if>> <<if ndef $mercUnits[_i].ID>> <br>Set merc missing ID - <<generateUnitID $mercUnits[_i]>> + <<set $mercUnits[_i].ID = App.SecExp.generateUnitID()>> <</if>> <<if ndef $mercUnits[_i].cyber>> <br>Set merc missing flag diff --git a/src/Mods/SecExp/widgets/unitsWidgets.tw b/src/Mods/SecExp/widgets/unitsWidgets.tw deleted file mode 100644 index 9cdc494ef7b54a3bff4d8cdc138d7408d0bc3489..0000000000000000000000000000000000000000 --- a/src/Mods/SecExp/widgets/unitsWidgets.tw +++ /dev/null @@ -1,25 +0,0 @@ -:: unitsWidgets [widget nobr] - -<<widget "generateUnitID">> - <<set _newID = 0>> - - <<for _i = 0; _i < $militiaUnits.length; _i++>> - <<if $militiaUnits[_i].ID >= _newID>> - <<set _newID = $militiaUnits[_i].ID + 1>> - <</if>> - <</for>> - - <<for _i = 0; _i < $slaveUnits.length; _i++>> - <<if $slaveUnits[_i].ID >= _newID>> - <<set _newID = $slaveUnits[_i].ID + 1>> - <</if>> - <</for>> - - <<for _i = 0; _i < $mercUnits.length; _i++>> - <<if $mercUnits[_i].ID >= _newID>> - <<set _newID = $mercUnits[_i].ID + 1>> - <</if>> - <</for>> - - <<set $args[0].ID = _newID>> -<</widget>> \ No newline at end of file