From fe169b04850eb0fe7c04db464b8095ae1e975df8 Mon Sep 17 00:00:00 2001 From: ezsh <ezsh.junk@gmail.com> Date: Sat, 31 Aug 2019 14:42:39 +0200 Subject: [PATCH] Refactor "remove all slaves" fragments Introduce a widget and a function to do the work and use them in facility passages. --- src/004-base/facility.js | 2 +- src/facilities/farmyard/farmyard.tw | 14 +------------- src/facilities/nursery/nursery.tw | 14 +------------- src/facilities/widgets/misc.tw | 17 +++++++++++++++++ src/js/assignJS.js | 16 ++++++++++++++++ src/uncategorized/arcade.tw | 10 +--------- src/uncategorized/brothel.tw | 14 +------------- src/uncategorized/cellblock.tw | 14 +------------- src/uncategorized/clinic.tw | 14 +------------- src/uncategorized/club.tw | 14 +------------- src/uncategorized/dairy.tw | 14 +------------- src/uncategorized/masterSuite.tw | 14 +------------- src/uncategorized/schoolroom.tw | 14 +------------- src/uncategorized/servantsQuarters.tw | 14 +------------- src/uncategorized/spa.tw | 14 +------------- 15 files changed, 46 insertions(+), 153 deletions(-) create mode 100644 src/facilities/widgets/misc.tw diff --git a/src/004-base/facility.js b/src/004-base/facility.js index 4b8a2fb5c4e..3e685aa2e71 100644 --- a/src/004-base/facility.js +++ b/src/004-base/facility.js @@ -250,7 +250,7 @@ App.Entity.Facilities.ManagingJob = class extends App.Entity.Facilities.Job { /** @returns {App.Entity.SlaveState} */ get currentEmployee() { const obj = State.variables[capFirstChar(this.desc.position)]; - return obj === undefined ? null : obj; + return obj === undefined || obj === 0 ? null : obj; } /** @private */ diff --git a/src/facilities/farmyard/farmyard.tw b/src/facilities/farmyard/farmyard.tw index 751eef03387..4dd5d7e0b04 100644 --- a/src/facilities/farmyard/farmyard.tw +++ b/src/facilities/farmyard/farmyard.tw @@ -85,19 +85,7 @@ $farmyardNameCaps is an oasis of growth in the midst of the jungle of steel and <</if>> <<if _FyL > 0>> - <<if $Farmer != 0>><<set _X = 1>><<else>><<set _X = 0>><</if>> - <<set _NewPop = _FyL+$dormitoryPopulation+_X>> - <<link "Remove all slaves" "Farmyard">> - <<if $Farmer != 0>> - <<= assignJob($Farmer, "rest")>> - <</if>> - <<for $FarmyardiIDs.length > 0>> - <<= assignJob($slaves[$slaveIndices[$FarmyardiIDs[0]]], "rest")>> - <</for>> - <</link>> - <<if _NewPop > $dormitory>> - @@.red;Dormitory capacity will be exceeded.@@ - <</if>> + <<removeFacilityWorkers "farmyard" "rest" "rest">> <</if>> <<set _Tmult0 = Math.trunc($farmyard*1000*$upgradeMultiplierArcology)>> diff --git a/src/facilities/nursery/nursery.tw b/src/facilities/nursery/nursery.tw index 8c31898bc24..1fadd82fe4b 100644 --- a/src/facilities/nursery/nursery.tw +++ b/src/facilities/nursery/nursery.tw @@ -89,19 +89,7 @@ $nurseryNameCaps <</if>> <<if _NL > 0>> - <<if $Matron>><<set _X = 1>><<else>><<set _X = 0>><</if>> - <<set _NewPop = _NL+$dormitoryPopulation+_X>> - <<link "Remove all slaves" "Nursery">> - <<if $Matron>> - <<= assignJob($Matron, "rest")>> - <</if>> - <<for $NurseryiIDs.length > 0>> - <<= assignJob($slaves[$slaveIndices[$NurseryiIDs[0]]], "rest")>> - <</for>> - <</link>> - <<if _NewPop > $dormitory>> - @@.red;Dormitory capacity will be exceeded.@@ - <</if>> + <<removeFacilityWorkers "nursery" "rest" "rest">> <</if>> <<set _Tmult0 = Math.trunc($nurseryNannies*1000*$upgradeMultiplierArcology)>> diff --git a/src/facilities/widgets/misc.tw b/src/facilities/widgets/misc.tw new file mode 100644 index 00000000000..4e815a937b9 --- /dev/null +++ b/src/facilities/widgets/misc.tw @@ -0,0 +1,17 @@ +:: FacilityMiscWidgets [nobr widget] + +/* Call as removeFacilityWorkers <facilityName> <managerAssignment> <workerAssignment> */ +<<widget "removeFacilityWorkers">> + <<set _facility = App.Entity.facilities[$args[0]]>> + <<set _count = _facility.hostedSlaves + (_facility.manager && _facility.manager.currentEmployee ? 1 : 0)>> + <<set _NewPop = _count+$dormitoryPopulation>> + <<if _count > 0>> + <<set _passage = passage()>> + <<link "Remove all slaves" _passage>> + <<run App.Utils.moveFacilityWorkers(_facility, $args[1], $args[2])>> + <</link>> + <<if _NewPop > $dormitory>> + @@.red;Dormitory capacity will be exceeded.@@ + <</if>> + <</if>> +<</widget>> diff --git a/src/js/assignJS.js b/src/js/assignJS.js index 8a0a9a2d57f..0ee88183491 100644 --- a/src/js/assignJS.js +++ b/src/js/assignJS.js @@ -753,3 +753,19 @@ App.currentAgent = function() { } } }; + +/** + * Remove all workers from the facility changing their assignments + * @param {App.Entity.Facilities.Facility} facility + * @param {string} [managerAssignment="rest"] new assignment for the facility manager + * @param {string} [workerAssignment="rest"] new assignment for the facility workers +*/ +App.Utils.moveFacilityWorkers = function(facility, managerAssignment = "rest", workerAssignment = "rest") { + if (facility.manager && facility.manager.currentEmployee) { + assignJob(facility.manager.currentEmployee, managerAssignment); + } + + for (const w of facility.employees()) { + assignJob(w, workerAssignment); + } +}; diff --git a/src/uncategorized/arcade.tw b/src/uncategorized/arcade.tw index 6d78fe70a23..11316e788c1 100644 --- a/src/uncategorized/arcade.tw +++ b/src/uncategorized/arcade.tw @@ -83,15 +83,7 @@ $arcadeNameCaps <</if>> <<if _AL > 0>> - <<set _NewPop = _AL+$dormitoryPopulation>> - <<link "Remove all slaves" "Arcade">> - <<for $ArcadeiIDs.length > 0>> - <<= assignJob($slaves[$slaveIndices[$ArcadeiIDs[0]]], "work a glory hole")>> - <</for>> - <</link>> - <<if _NewPop > $dormitory>> - @@.red;Dormitory capacity will be exceeded.@@ - <</if>> + <<removeFacilityWorkers "arcade" "" "work a glory hole">> <</if>> <br>It can support $arcade inmates. There <<if _AL == 1>>is<<else>>are<</if>> currently _AL slave<<if _AL != 1>>s<</if>> incarcerated in $arcadeName. diff --git a/src/uncategorized/brothel.tw b/src/uncategorized/brothel.tw index 711d45a26b1..d39040b8d81 100644 --- a/src/uncategorized/brothel.tw +++ b/src/uncategorized/brothel.tw @@ -153,19 +153,7 @@ $brothelNameCaps <</if>> <<if _BL > 0>> - <<if $Madam != 0>><<set _X = 1>><<else>><<set _X = 0>><</if>> - <<set _NewPop = _BL+$dormitoryPopulation+_X>> - <<link "Remove all slaves" "Brothel">> - <<if $Madam != 0>> - <<= assignJob($Madam, "rest")>> - <</if>> - <<for $BrothiIDs.length > 0>> - <<= assignJob($slaves[$slaveIndices[$BrothiIDs[0]]], "whore")>> - <</for>> - <</link>> - <<if _NewPop > $dormitory>> - @@.red;Dormitory capacity will be exceeded.@@ - <</if>> + <<removeFacilityWorkers "brothel" "rest" "whore">> <</if>> <<set _Tmult0 = Math.trunc($brothel*1000*$upgradeMultiplierArcology)>> diff --git a/src/uncategorized/cellblock.tw b/src/uncategorized/cellblock.tw index 75ccd6a0fcb..d04f79ce104 100644 --- a/src/uncategorized/cellblock.tw +++ b/src/uncategorized/cellblock.tw @@ -78,19 +78,7 @@ $cellblockNameCaps <</if>> <<if _CL > 0>> - <<if $Wardeness != 0>><<set _X = 1>><<else>><<set _X = 0>><</if>> - <<set _NewPop = _CL+$dormitoryPopulation+_X>> - <<link "Remove all slaves" "Cellblock">> - <<if $Wardeness != 0>> - <<= assignJob($Wardeness, "rest")>> - <</if>> - <<for $CellBiIDs.length > 0>> - <<= assignJob($slaves[$slaveIndices[$CellBiIDs[0]]], "stay confined")>> - <</for>> - <</link>> - <<if _NewPop > $dormitory>> - @@.red;Dormitory capacity will be exceeded.@@ - <</if>> + <<removeFacilityWorkers "cellblock" "rest" "stay confined">> <</if>> <<set _Tmult0 = Math.trunc($cellblock*1000*$upgradeMultiplierArcology)>> diff --git a/src/uncategorized/clinic.tw b/src/uncategorized/clinic.tw index 3cd55f2b0af..56b283461c0 100644 --- a/src/uncategorized/clinic.tw +++ b/src/uncategorized/clinic.tw @@ -78,19 +78,7 @@ $clinicNameCaps <</if>> <<if _CL > 0>> - <<if $Nurse != 0>><<set _X = 1>><<else>><<set _X = 0>><</if>> - <<set _NewPop = _CL+$dormitoryPopulation+_X>> - <<link "Remove all slaves" "Clinic">> - <<if $Nurse != 0>> - <<= assignJob($Nurse, "rest")>> - <</if>> - <<for $CliniciIDs.length > 0>> - <<= assignJob($slaves[$slaveIndices[$CliniciIDs[0]]], "rest")>> - <</for>> - <</link>> - <<if _NewPop > $dormitory>> - @@.red;Dormitory capacity will be exceeded.@@ - <</if>> + <<removeFacilityWorkers "clinic" "rest" "rest">> <</if>> <<set _Tmult0 = Math.trunc($clinic*1000*$upgradeMultiplierArcology)>> diff --git a/src/uncategorized/club.tw b/src/uncategorized/club.tw index e8c366f6d75..6efe471d720 100644 --- a/src/uncategorized/club.tw +++ b/src/uncategorized/club.tw @@ -154,19 +154,7 @@ $clubNameCaps <</if>> <<if _CL > 0>> - <<if $DJ != 0>><<set _X = 1>><<else>><<set _X = 0>><</if>> - <<set _NewPop = _CL+$dormitoryPopulation+_X>> - <<link "Remove all slaves" "Club">> - <<if $DJ != 0>> - <<= assignJob($DJ, "rest")>> - <</if>> - <<for $ClubiIDs.length > 0>> - <<= assignJob($slaves[$slaveIndices[$ClubiIDs[0]]], "serve the public")>> - <</for>> - <</link>> - <<if _NewPop > $dormitory>> - @@.red;Dormitory capacity will be exceeded.@@ - <</if>> + <<removeFacilityWorkers "club" "rest" "serve the public">> <</if>> <<if _CL > 2>> diff --git a/src/uncategorized/dairy.tw b/src/uncategorized/dairy.tw index f99ca7c1c83..be27cb391c1 100644 --- a/src/uncategorized/dairy.tw +++ b/src/uncategorized/dairy.tw @@ -321,19 +321,7 @@ <</if>> <<if _DL > 0>> - <<if $Milkmaid != 0>><<set _X = 1>><<else>><<set _X = 0>><</if>> - <<set _NewPop = _DL+$dormitoryPopulation+_X>> - <<link "Remove all slaves" "Dairy">> - <<if $Milkmaid != 0>> - <<= assignJob($Milkmaid, "rest")>> - <</if>> - <<for $DairyiIDs.length > 0>> - <<= assignJob($slaves[$slaveIndices[$DairyiIDs[0]]], "get milked")>> - <</for>> - <</link>> - <<if _NewPop > $dormitory>> - @@.red;Dormitory capacity will be exceeded.@@ - <</if>> + <<removeFacilityWorkers "dairy" "rest" "get milked">> <</if>> <<set _Tmult0 = Math.trunc($dairy*1000*$upgradeMultiplierArcology)>> diff --git a/src/uncategorized/masterSuite.tw b/src/uncategorized/masterSuite.tw index 7ddf6ee5796..849830dd6cd 100644 --- a/src/uncategorized/masterSuite.tw +++ b/src/uncategorized/masterSuite.tw @@ -324,19 +324,7 @@ $masterSuiteNameCaps is furnished <</if>> <<if _MsL > 0>> - <<if $Concubine != 0>><<set _X = 1>><<else>><<set _X = 0>><</if>> - <<set _NewPop = _MsL+$dormitoryPopulation+_X>> - <<link "Remove all slaves" "Master Suite">> - <<if $Concubine != 0>> - <<= assignJob($Concubine, "rest")>> - <</if>> - <<for $MastSiIDs.length > 0>> - <<= assignJob($slaves[$slaveIndices[$MastSiIDs[0]]], "please you")>> - <</for>> - <</link>> - <<if _NewPop > $dormitory>> - @@.red;Dormitory capacity will be exceeded.@@ - <</if>> + <<removeFacilityWorkers "masterSuite" "rest" "please you">> <</if>> <<if $seePreg != 0>> diff --git a/src/uncategorized/schoolroom.tw b/src/uncategorized/schoolroom.tw index 27b84cab897..eb63e853336 100644 --- a/src/uncategorized/schoolroom.tw +++ b/src/uncategorized/schoolroom.tw @@ -80,19 +80,7 @@ $schoolroomNameCaps is well-equipped, with wallscreens to display lessons. These <</if>> <<if $SchlRiIDs.length > 0>> - <<if $Schoolteacher != 0>><<set _X = 1>><<else>><<set _X = 0>><</if>> - <<set _NewPop = $SchlRiIDs.length+$dormitoryPopulation+_X>> - <<link "Remove all slaves" "Schoolroom">> - <<if $Schoolteacher != 0>> - <<= assignJob($Schoolteacher, "rest")>> - <</if>> - <<for $SchlRiIDs.length > 0>> - <<= assignJob($slaves[$slaveIndices[$SchlRiIDs[0]]], "take classes")>> - <</for>> - <</link>> - <<if _NewPop > $dormitory>> - @@.red;Dormitory capacity will be exceeded.@@ - <</if>> + <<removeFacilityWorkers "schoolroom" "rest" "take classes">> <</if>> <<set _Tmult0 = Math.trunc($schoolroom*1000*$upgradeMultiplierArcology)>> diff --git a/src/uncategorized/servantsQuarters.tw b/src/uncategorized/servantsQuarters.tw index c8607ae55cc..b0ab1201b9c 100644 --- a/src/uncategorized/servantsQuarters.tw +++ b/src/uncategorized/servantsQuarters.tw @@ -78,19 +78,7 @@ $servantsQuartersNameCaps <</if>> <<if $ServQiIDs.length > 0>> - <<if $Stewardess != 0>><<set _X = 1>><<else>><<set _X = 0>><</if>> - <<set _NewPop = $ServQiIDs.length+$dormitoryPopulation+_X>> - <<link "Remove all slaves" "Servants' Quarters">> - <<if $Schoolteacher != 0>> - <<= assignJob($Stewardess, "rest")>> - <</if>> - <<for $ServQiIDs.length > 0>> - <<= assignJob($slaves[$slaveIndices[$ServQiIDs[0]]], "be a servant")>> - <</for>> - <</link>> - <<if _NewPop > $dormitory>> - @@.red;Dormitory capacity will be exceeded.@@ - <</if>> + <<removeFacilityWorkers "servantsQuarters" "rest" "be a servant">> <</if>> <<set _Tmult0 = Math.trunc($servantsQuarters*1000*$upgradeMultiplierArcology)>> diff --git a/src/uncategorized/spa.tw b/src/uncategorized/spa.tw index 6b495140ada..a4043af398c 100644 --- a/src/uncategorized/spa.tw +++ b/src/uncategorized/spa.tw @@ -79,19 +79,7 @@ $spaNameCaps <</if>> <<if $SpaiIDs.length > 0>> - <<if $Attendant != 0>><<set _X = 1>><<else>><<set _X = 0>><</if>> - <<set _NewPop = $SpaiIDs.length+$dormitoryPopulation+_X>> - <<link "Remove all slaves" "Spa">> - <<if $Attendant != 0>> - <<= assignJob($Attendant, "rest")>> - <</if>> - <<for $SpaiIDs.length > 0>> - <<= assignJob($slaves[$slaveIndices[$SpaiIDs[0]]], "rest")>> - <</for>> - <</link>> - <<if _NewPop > $dormitory>> - @@.red;Dormitory capacity will be exceeded.@@ - <</if>> + <<removeFacilityWorkers "spa" "rest" "rest">> <</if>> <<set _Tmult0 = Math.trunc($spa*1000*$upgradeMultiplierArcology)>> -- GitLab