From c78a67de83b6350fe426d070ad097fbd2a7bd5cc Mon Sep 17 00:00:00 2001
From: Svornost <11434-svornost@users.noreply.gitgud.io>
Date: Mon, 30 Nov 2020 01:00:23 -0800
Subject: [PATCH] Replace <<SetFacilityDecoration>> widget with
 App.UI.facilityRedecoration DOM function.

---
 src/002-config/fc-version.js       |  2 +-
 src/facilities/fsDecoration.js     | 29 ++++++++++
 src/uncategorized/futureSociety.tw | 24 ++++----
 src/utility/miscWidgets.tw         | 88 ------------------------------
 4 files changed, 42 insertions(+), 101 deletions(-)
 create mode 100644 src/facilities/fsDecoration.js

diff --git a/src/002-config/fc-version.js b/src/002-config/fc-version.js
index f4fb6dcf0a0..94bbfb53d28 100644
--- a/src/002-config/fc-version.js
+++ b/src/002-config/fc-version.js
@@ -2,5 +2,5 @@ App.Version = {
 	base: "0.10.7.1", // The vanilla version the mod is based off of, this should never be changed.
 	pmod: "3.8.2",
 	commitHash: null,
-	release: 1110 // When getting close to 2000,  please remove the check located within the onLoad() function defined at line five of src/js/eventHandlers.js.
+	release: 1111 // When getting close to 2000,  please remove the check located within the onLoad() function defined at line five of src/js/eventHandlers.js.
 };
diff --git a/src/facilities/fsDecoration.js b/src/facilities/fsDecoration.js
new file mode 100644
index 00000000000..56ae1ec98b4
--- /dev/null
+++ b/src/facilities/fsDecoration.js
@@ -0,0 +1,29 @@
+/** Replaces <<SetFacilityDecoration>> widget
+ * @param {string} variable - global property name for the facility decoration (no $ etc)
+ * @returns {DocumentFragment}
+ */
+App.UI.facilityRedecoration = function(variable) {
+	const frag = new DocumentFragment();
+	const arc = V.arcologies[0];
+	for (const FS of FutureSocieties.activeFSes(arc)) {
+		if (arc[FS] > 20) {
+			const decorationName = FutureSocieties.decorationName(FS);
+			if (decorationName && V[variable] !== decorationName) {
+				const link = App.UI.DOM.link(`${decorationName} Redecoration`, () => {
+					V[variable] = decorationName;
+					cashX(-5000, "capEx");
+					App.UI.reload();
+				});
+				App.UI.DOM.appendNewElement("div", frag, link, "indent");
+			}
+		}
+	}
+	if (V[variable] !== "standard") {
+		const link = App.UI.DOM.link(`Remove all decorations`, () => {
+			V[variable] = "standard";
+			App.UI.reload();
+		});
+		App.UI.DOM.appendNewElement("div", frag, link, "indent");
+	}
+	return frag;
+};
diff --git a/src/uncategorized/futureSociety.tw b/src/uncategorized/futureSociety.tw
index 4b4d4ddc5b9..89aa9cd429b 100644
--- a/src/uncategorized/futureSociety.tw
+++ b/src/uncategorized/futureSociety.tw
@@ -1767,60 +1767,60 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
 
 <<if $brothel > 0>>
 	<div><<= capFirstChar($brothelName)>> is decorated in $brothelDecoration style.</div>
-	<<SetFacilityDecoration "brothelDecoration">>
+	<<includeDOM App.UI.facilityRedecoration("brothelDecoration")>>
 <</if>>
 
 <<if $club > 0>>
 	<div><<= capFirstChar($clubName)>> is decorated in $clubDecoration style.</div>
-	<<SetFacilityDecoration "clubDecoration">>
+	<<includeDOM App.UI.facilityRedecoration("clubDecoration")>>
 <</if>>
 
 <<if $dairy > 0>>
 	<div><<= capFirstChar($dairyName)>> is decorated in $dairyDecoration style.</div>
-	<<SetFacilityDecoration "dairyDecoration">>
+	<<includeDOM App.UI.facilityRedecoration("dairyDecoration")>>
 <</if>>
 
 <<if $farmyard > 0>>
 	<div><<= capFirstChar($farmyardName)>> is decorated in $farmyardDecoration style.</div>
-	<<SetFacilityDecoration "farmyardDecoration">>
+	<<includeDOM App.UI.facilityRedecoration("farmyardDecoration")>>
 <</if>>
 
 <<if $spa > 0>>
 	<div><<= capFirstChar($spaName)>> is decorated in $spaDecoration style.</div>
-	<<SetFacilityDecoration "spaDecoration">>
+	<<includeDOM App.UI.facilityRedecoration("spaDecoration")>>
 <</if>>
 
 <<if $nursery > 0>>
 	<div><<= capFirstChar($nurseryName)>> is decorated in $nurseryDecoration style.</div>
-	<<SetFacilityDecoration "nurseryDecoration">>
+	<<includeDOM App.UI.facilityRedecoration("nurseryDecoration")>>
 <</if>>
 
 <<if $clinic > 0>>
 	<div><<= capFirstChar($clinicName)>> is decorated in $clinicDecoration style.</div>
-	<<SetFacilityDecoration "clinicDecoration">>
+	<<includeDOM App.UI.facilityRedecoration("clinicDecoration")>>
 <</if>>
 
 <<if $schoolroom > 0>>
 	<div><<= capFirstChar($schoolroomName)>> is decorated in $schoolroomDecoration style.</div>
-	<<SetFacilityDecoration "schoolroomDecoration">>
+	<<includeDOM App.UI.facilityRedecoration("schoolroomDecoration")>>
 <</if>>
 
 <<if $cellblock > 0>>
 	<div><<= capFirstChar($cellblockName)>> is decorated in $cellblockDecoration style.</div>
-	<<SetFacilityDecoration "cellblockDecoration">>
+	<<includeDOM App.UI.facilityRedecoration("cellblockDecoration")>>
 <</if>>
 
 <<if $servantsQuarters > 0>>
 	<div><<= capFirstChar($servantsQuartersName)>> is decorated in $servantsQuartersDecoration style.</div>
-	<<SetFacilityDecoration "servantsQuartersDecoration">>
+	<<includeDOM App.UI.facilityRedecoration("servantsQuartersDecoration")>>
 <</if>>
 
 <<if $arcade > 0>>
 	<div><<= capFirstChar($arcadeName)>> is decorated in $arcadeDecoration style.</div>
-	<<SetFacilityDecoration "arcadeDecoration">>
+	<<includeDOM App.UI.facilityRedecoration("arcadeDecoration")>>
 <</if>>
 
 <<if $masterSuite > 0>>
 	<div><<= capFirstChar($masterSuiteName)>> is decorated in $masterSuiteDecoration style.</div>
-	<<SetFacilityDecoration "masterSuiteDecoration">>
+	<<includeDOM App.UI.facilityRedecoration("masterSuiteDecoration")>>
 <</if>>
diff --git a/src/utility/miscWidgets.tw b/src/utility/miscWidgets.tw
index a9c54dfe578..3ee42debfdb 100644
--- a/src/utility/miscWidgets.tw
+++ b/src/utility/miscWidgets.tw
@@ -143,91 +143,3 @@ Allows for dynamic updating of the next button in the storyCaption (left side-ba
 <</switch>>
 <</capture>>
 <</widget>>
-
-/* Called as <<SetFacilityDecoration "facilityDecoration">>, will generate a clickable list of potential decorations, quotes are needed to pass facilityDecoration as reference - DO NOT INCLUDE $ PREFIX! */
-<<widget "SetFacilityDecoration">>
-<<if ($arcologies[0].FSSupremacist >= 20) && (State.variables[$args[0]] != "Supremacist")>>
-	<div class="indent">[[Supremacist redecoration|Future Society][State.variables[$args[0]] = "Supremacist", cashX(-5000, "capEx")]]</div>
-<</if>>
-<<if ($arcologies[0].FSSubjugationist >= 20) && (State.variables[$args[0]] != "Subjugationist")>>
-	<div class="indent">[[Subjugationist redecoration|Future Society][State.variables[$args[0]] = "Subjugationist", cashX(-5000, "capEx")]]</div>
-<</if>>
-<<if ($arcologies[0].FSRepopulationFocus >= 20) && (State.variables[$args[0]] != "Repopulation Focus")>>
-	<div class="indent">[[Repopulation Focus redecoration|Future Society][State.variables[$args[0]] = "Repopulation Focus", cashX(-5000, "capEx")]]</div>
-<</if>>
-<<if ($arcologies[0].FSRestart >= 20) && (State.variables[$args[0]] != "Eugenics")>>
-	<div class="indent">[[Eugenics redecoration|Future Society][State.variables[$args[0]] = "Eugenics", cashX(-5000, "capEx")]]</div>
-<</if>>
-<<if ($arcologies[0].FSGenderRadicalist >= 20) && (State.variables[$args[0]] != "Gender Radicalist")>>
-	<div class="indent">[[Gender Radicalist redecoration|Future Society][State.variables[$args[0]] = "Gender Radicalist", cashX(-5000, "capEx")]]</div>
-<</if>>
-<<if ($arcologies[0].FSGenderFundamentalist >= 20) && (State.variables[$args[0]] != "Gender Fundamentalist")>>
-	<div class="indent">[[Gender Fundamentalist redecoration|Future Society][State.variables[$args[0]] = "Gender Fundamentalist", cashX(-5000, "capEx")]]</div>
-<</if>>
-<<if ($arcologies[0].FSPaternalist >= 20) && (State.variables[$args[0]] != "Paternalist")>>
-	<div class="indent">[[Paternalist redecoration|Future Society][State.variables[$args[0]] = "Paternalist", cashX(-5000, "capEx")]]</div>
-<</if>>
-<<if ($arcologies[0].FSIntellectualDependency >= 20) && (State.variables[$args[0]] != "Intellectual Dependency")>>
-	<div class="indent">[[Intellectual Dependency redecoration|Future Society][State.variables[$args[0]] = "Intellectual Dependency", cashX(-5000, "capEx")]]</div>
-<</if>>
-<<if ($arcologies[0].FSSlaveProfessionalism >= 20) && (State.variables[$args[0]] != "Slave Professionalism")>>
-	<div class="indent">[[Slave Professionalism redecoration|Future Society][State.variables[$args[0]] = "Slave Professionalism", cashX(-5000, "capEx")]]</div>
-<</if>>
-<<if ($arcologies[0].FSBodyPurist >= 20) && (State.variables[$args[0]] != "Body Purist")>>
-	<div class="indent">[[Body Purist redecoration|Future Society][State.variables[$args[0]] = "Body Purist", cashX(-5000, "capEx")]]</div>
-<</if>>
-<<if ($arcologies[0].FSTransformationFetishist >= 20) && (State.variables[$args[0]] != "Transformation Fetishist")>>
-	<div class="indent">[[Transformation Fetishist redecoration|Future Society][State.variables[$args[0]] = "Transformation Fetishist", cashX(-5000, "capEx")]]</div>
-<</if>>
-<<if ($arcologies[0].FSYouthPreferentialist >= 20) && (State.variables[$args[0]] != "Youth Preferentialist")>>
-	<div class="indent">[[Youth Preferentialist redecoration|Future Society][State.variables[$args[0]] = "Youth Preferentialist", cashX(-5000, "capEx")]]</div>
-<</if>>
-<<if ($arcologies[0].FSMaturityPreferentialist >= 20) && (State.variables[$args[0]] != "Maturity Preferentialist")>>
-	<div class="indent">[[Maturity Preferentialist redecoration|Future Society][State.variables[$args[0]] = "Maturity Preferentialist", cashX(-5000, "capEx")]]</div>
-<</if>>
-<<if ($arcologies[0].FSPetiteAdmiration >= 20) && (State.variables[$args[0]] != "Petite Admiration")>>
-	<div class="indent">[[Petite Admiration redecoration|Future Society][State.variables[$args[0]] = "Petite Admiration", cashX(-5000, "capEx")]]</div>
-<</if>>
-<<if ($arcologies[0].FSStatuesqueGlorification >= 20) && (State.variables[$args[0]] != "Statuesque Glorification")>>
-	<div class="indent">[[Statuesque Glorification redecoration|Future Society][State.variables[$args[0]] = "Statuesque Glorification", cashX(-5000, "capEx")]]</div>
-<</if>>
-<<if ($arcologies[0].FSSlimnessEnthusiast >= 20) && (State.variables[$args[0]] != "Slimness Enthusiast")>>
-	<div class="indent">[[Slimness Enthusiast redecoration|Future Society][State.variables[$args[0]] = "Slimness Enthusiast", cashX(-5000, "capEx")]]</div>
-<</if>>
-<<if ($arcologies[0].FSAssetExpansionist >= 20) && (State.variables[$args[0]] != "Asset Expansionist")>>
-	<div class="indent">[[Asset Expansionist redecoration|Future Society][State.variables[$args[0]] = "Asset Expansionist", cashX(-5000, "capEx")]]</div>
-<</if>>
-<<if ($arcologies[0].FSPastoralist >= 20) && (State.variables[$args[0]] != "Pastoralist")>>
-	<div class="indent">[[Pastoralist redecoration|Future Society][State.variables[$args[0]] = "Pastoralist", cashX(-5000, "capEx")]]</div>
-<</if>>
-<<if ($arcologies[0].FSPhysicalIdealist >= 20) && (State.variables[$args[0]] != "Physical Idealist")>>
-	<div class="indent">[[Physical Idealist redecoration|Future Society][State.variables[$args[0]] = "Physical Idealist", cashX(-5000, "capEx")]]</div>
-<</if>>
-<<if ($arcologies[0].FSHedonisticDecadence >= 20) && (State.variables[$args[0]] != "Hedonistic")>>
-	<div class="indent">[[Hedonistic redecoration|Future Society][State.variables[$args[0]] = "Hedonistic", cashX(-5000, "capEx")]]</div>
-<</if>>
-<<if ($arcologies[0].FSChattelReligionist >= 20) && (State.variables[$args[0]] != "Chattel Religionist")>>
-	<div class="indent">[[Chattel Religionist redecoration|Future Society][State.variables[$args[0]] = "Chattel Religionist", cashX(-5000, "capEx")]]</div>
-<</if>>
-<<if ($arcologies[0].FSDegradationist >= 20) && (State.variables[$args[0]] != "Degradationist")>>
-	<div class="indent">[[Degradationist redecoration|Future Society][State.variables[$args[0]] = "Degradationist", cashX(-5000, "capEx")]]</div>
-<</if>>
-<<if ($arcologies[0].FSRomanRevivalist >= 20) && (State.variables[$args[0]] != "Roman Revivalist")>>
-	<div class="indent">[[Roman Revivalist redecoration|Future Society][State.variables[$args[0]] = "Roman Revivalist", cashX(-5000, "capEx")]]</div>
-<<elseif ($arcologies[0].FSAztecRevivalist >= 20) && (State.variables[$args[0]] != "Aztec Revivalist")>>
-	<div class="indent">[[Aztec Revivalist redecoration|Future Society][State.variables[$args[0]] = "Aztec Revivalist", cashX(-5000, "capEx")]]</div>
-<<elseif ($arcologies[0].FSEgyptianRevivalist >= 20) && (State.variables[$args[0]] != "Egyptian Revivalist")>>
-	<div class="indent">[[Egyptian Revivalist redecoration|Future Society][State.variables[$args[0]] = "Egyptian Revivalist", cashX(-5000, "capEx")]]</div>
-<<elseif ($arcologies[0].FSEdoRevivalist >= 20) && (State.variables[$args[0]] != "Edo Revivalist")>>
-	<div class="indent">[[Edo Revivalist redecoration|Future Society][State.variables[$args[0]] = "Edo Revivalist", cashX(-5000, "capEx")]]</div>
-<<elseif ($arcologies[0].FSArabianRevivalist >= 20) && (State.variables[$args[0]] != "Arabian Revivalist")>>
-	<div class="indent">[[Arabian Revivalist redecoration|Future Society][State.variables[$args[0]] = "Arabian Revivalist", cashX(-5000, "capEx")]]</div>
-<<elseif ($arcologies[0].FSChineseRevivalist >= 20) && (State.variables[$args[0]] != "Chinese Revivalist")>>
-	<div class="indent">[[Chinese Revivalist redecoration|Future Society][State.variables[$args[0]] = "Chinese Revivalist", cashX(-5000, "capEx")]]</div>
-<<elseif ($arcologies[0].FSNeoImperialist >= 20) && (State.variables[$args[0]] != "Neo Imperialist")>>
-	<div class="indent">[[Neo-Imperialist redecoration|Future Society][State.variables[$args[0]] = "Neo Imperialist", cashX(-5000, "capEx")]]</div>
-<</if>>
-<<if (State.variables[$args[0]] != "standard")>>
-	<div class="indent">[[Remove all decorations|Future Society][State.variables[$args[0]] = "standard"]]</div>
-<</if>>
-<</widget>>
-- 
GitLab