From 0284b14a2ab5a2e2d8d2c99b570c5a9c8a8fbc5d Mon Sep 17 00:00:00 2001
From: DCoded <dcoded@live.com>
Date: Mon, 27 Jul 2020 13:46:04 -0400
Subject: [PATCH] DOMified farmyard upgrades

---
 src/facilities/farmyard/farmyard.js | 137 ++++++++++++++++++++++++++++
 src/facilities/farmyard/farmyard.tw |  51 +----------
 2 files changed, 138 insertions(+), 50 deletions(-)

diff --git a/src/facilities/farmyard/farmyard.js b/src/facilities/farmyard/farmyard.js
index dd33d6c64c7..787d3478c38 100644
--- a/src/facilities/farmyard/farmyard.js
+++ b/src/facilities/farmyard/farmyard.js
@@ -5,7 +5,144 @@ App.Facilities.Farmyard.clearAnimalsBought = function () {
 };
 
 App.Facilities.Farmyard.upgrades = function () {
+	const frag = new DocumentFragment(),
+
+		farmyardUpgrades = V.farmyardUpgrades,
+
+		pumpCost = Math.trunc(5000 * V.upgradeMultiplierArcology),
+		fertilizerCost = Math.trunc(10000 * V.upgradeMultiplierArcology),
+		hydroponicsCost = Math.trunc(20000 * V.upgradeMultiplierArcology),
+		seedsCost = Math.trunc(25000 * V.upgradeMultiplierArcology),
+		machineryCost = Math.trunc(50000 * V.upgradeMultiplierArcology);
+
+	if (!farmyardUpgrades.pump) {
+		const
+			desc = document.createElement("div"),
+			upgrade = document.createElement("div"),
+			note = document.createElement("span");
+
+		upgrade.classList.add("indent");
+		note.classList.add("note");
+
+		upgrade.append(App.UI.DOM.passageLink("Upgrade the water pump", "Farmyard", () => {
+			cashX(forceNeg(pumpCost));
+			farmyardUpgrades.pump = 1;
+		}));
+
+		note.append(` Costs ${cashFormat(pumpCost)} and slightly decreases upkeep costs.`);
+
+		desc.append(`${V.farmyardNameCaps} is currently using the basic water pump that it came with.`);
+
+		upgrade.append(note);
+		frag.append(desc, upgrade);
+	} else {
+		const desc = document.createElement("div");
+
+		desc.append(`The water pump in ${V.farmyardName} is a more efficient model, slightly improving the amount of crops it produces.`);
+
+		frag.append(desc);
+
+		if (!farmyardUpgrades.fertilizer) {
+			const
+				upgrade = document.createElement("div"),
+				note = document.createElement("span");
+
+			upgrade.classList.add("indent");
+			note.classList.add("note");
+
+			upgrade.append(App.UI.DOM.passageLink("Use a higher-quality fertilizer", "Farmyard", () => {
+				cashX(forceNeg(fertilizerCost));
+				farmyardUpgrades.fertilizer = 1;
+			}));
+			note.append(` Costs ${cashFormat(fertilizerCost)} and moderately increases crop yield and slightly increases upkeep costs.`);
+
+			upgrade.append(note);
+			frag.append(upgrade);
+		} else {
+			const desc = document.createElement("div");
+
+			desc.append(`${V.farmyardNameCaps} is using a higher-quality fertilizer, moderately increasing the amount of crops it produces and raising slightly raising upkeep costs.`);
+
+			frag.append(desc);
+
+			if (!farmyardUpgrades.hydroponics) {
+				const
+					upgrade = document.createElement("div"),
+					note = document.createElement("span");
+
+				upgrade.classList.add("indent");
+				note.classList.add("note");
+
+				upgrade.append(App.UI.DOM.passageLink("Purchase an advanced hydroponics system", "Farmyard", () => {
+					cashX(forceNeg(hydroponicsCost));
+					farmyardUpgrades.hydroponics = 1;
+				}));
 
+				note.append(` Costs ${cashFormat(hydroponicsCost)} and moderately decreases upkeep costs.`);
+
+				upgrade.append(note);
+				frag.append(upgrade);
+			} else {
+				const desc = document.createElement("div");
+
+				desc.append(`${V.farmyardNameCaps} is outfitted with an advanced hydroponics system, reducing the amount of water your crops consume and thus moderately reducing upkeep costs.`);
+
+				frag.append(desc);
+
+				if (!farmyardUpgrades.seeds) {
+					const
+						upgrade = document.createElement("div"),
+						note = document.createElement("span");
+
+					upgrade.classList.add("indent");
+					note.classList.add("note");
+
+					upgrade.append(App.UI.DOM.passageLink("Purchase genetically modified seeds", "Farmyard", () => {
+						cashX(forceNeg(seedsCost));
+						farmyardUpgrades.seeds = 1;
+					}));
+
+					note.append(` Costs ${cashFormat(seedsCost)} and moderately increases crop yield and slightly increases upkeep costs.`);
+
+					upgrade.append(note);
+					frag.append(upgrade);
+				} else {
+					const desc = document.createElement("div");
+
+					desc.append(`${V.farmyardNameCaps} is using genetically modified seeds, significantly increasing the amount of crops it produces and moderately increasing upkeep costs.`);
+
+					frag.append(desc);
+
+					if (!farmyardUpgrades.machinery) {
+						const
+							upgrade = document.createElement("div"),
+							note = document.createElement("span");
+
+						upgrade.classList.add("indent");
+						note.classList.add("note");
+
+						upgrade.append(App.UI.DOM.passageLink("Upgrade the machinery", "Farmyard", () => {
+							cashX(forceNeg(machineryCost));
+							farmyardUpgrades.machinery = 1;
+						}));
+
+						note.append(` Costs ${cashFormat(machineryCost)} and moderately increases crop yield and slightly increases upkeep costs.`);
+
+						upgrade.append(note);
+						frag.append(upgrade);
+					} else {
+						const desc = document.createElement("div");
+
+						desc.append(`The machinery in ${V.farmyardName} has been upgraded, and is more efficient, significantly increasing crop yields and significantly decreasing upkeep costs.`);
+
+						frag.append(desc);
+					}
+				}
+			}
+		}
+	}
+
+	return frag;
 };
 
 App.Facilities.Farmyard.animalHousing = function () {
diff --git a/src/facilities/farmyard/farmyard.tw b/src/facilities/farmyard/farmyard.tw
index 436ce5e8a08..b05f981da85 100644
--- a/src/facilities/farmyard/farmyard.tw
+++ b/src/facilities/farmyard/farmyard.tw
@@ -227,56 +227,7 @@
 </span>
 
 <span id="upgrades">
-<<if $farmyardUpgrades.pump == 0>>
-	[[Upgrade the water pump|Farmyard][cashX(forceNeg(Math.trunc(5000*$upgradeMultiplierArcology)), "farmyard"), $farmyardUpgrades.pump = 1]]
-	<span class="note">
-		Costs <<print cashFormat(Math.trunc(5000*$upgradeMultiplierArcology))>> and slightly increases crop yield.
-	</span>
-	<br>
-<<else>>
-	The water pump in $farmyardName is a more efficient model, slightly improving the amount of crops $farmyardName produces.
-	<br>
-	<<if $farmyardUpgrades.fertilizer == 0>>
-		[[Use a higher-quality fertilizer|Farmyard][cashX(forceNeg(Math.trunc(10000*$upgradeMultiplierArcology)), "farmyard"), $farmyardUpgrades.fertilizer = 1]]
-		<span class="note">
-			Costs <<print cashFormat(Math.trunc(10000*$upgradeMultiplierArcology))>> moderately increases crop yield and slightly increases upkeep costs.
-		</span>
-		<br>
-	<<else>>
-		$farmyardNameCaps is using a higher-quality fertilizer, moderately increasing the amount of crops it produces and raising slightly raising upkeep costs.
-		<br>
-		<<if $farmyardUpgrades.hydroponics == 0>>
-			[[Purchase a hydroponics system|Farmyard][cashX(forceNeg(Math.trunc(10000*$upgradeMultiplierArcology)), "farmyard"), $farmyardUpgrades.hydroponics = 1]]
-			<span class="note">
-				Costs <<print cashFormat(Math.trunc(10000*$upgradeMultiplierArcology))>> and moderately decreases upkeep costs.
-			</span>
-			<br>
-		<<else>>
-			$farmyardNameCaps is outfitted with an advanced hydroponics system, reducing the amount of water your crops consume and thus moderately reducing upkeep costs.
-			<br>
-			<<if $farmyardUpgrades.seeds == 0>>
-				[[Purchase genetically modified seeds|Farmyard][cashX(forceNeg(Math.trunc(20000*$upgradeMultiplierArcology)), "farmyard"),$farmyardUpgrades.seeds = 1]]
-				<span class="note">
-					Costs <<print cashFormat(Math.trunc(20000*$upgradeMultiplierArcology))>> and significantly increases crop yield and moderately increases upkeep costs.
-				</span>
-				<br>
-			<<else>>
-				$farmyardNameCaps is using genetically modified seeds, significantly increasing the amount of crops it produces and moderately increasing upkeep costs.
-				<br>
-				<<if $farmyardUpgrades.machinery == 0>>
-					[[Upgrade the machinery|Farmyard][cashX(forceNeg(Math.trunc(50000*$upgradeMultiplierArcology)), "farmyard"), $farmyardUpgrades.machinery = 1]]
-					<span class="note">
-						Costs <<print cashFormat(Math.trunc(50000*$upgradeMultiplierArcology))>> significantly increases crop yield and significantly decreases upkeep costs.
-					</span>
-					<br>
-				<<else>>
-					The machinery in $farmyardName has been upgraded, and is more efficient, significantly increasing crop yields and significantly decreasing upkeep costs.
-					<br>
-				<</if>>
-			<</if>>
-		<</if>>
-	<</if>>
-<</if>>
+<<includeDOM App.Facilities.Farmyard.upgrades()>>
 <br>
 </span>
 
-- 
GitLab