From 29a21532fb53cdc543286037fc3b26c3d5929b43 Mon Sep 17 00:00:00 2001
From: lowercasedonkey <lowercasedonkey@gmail.com>
Date: Tue, 16 Feb 2021 02:06:41 -0500
Subject: [PATCH] first pass on filter races

---
 src/Corporation/manageCorporation.js             |  3 +--
 src/events/intro/customizeSlaveTrade.js          | 14 +++++++-------
 src/events/intro/pcAppearance.js                 |  4 ++--
 src/facilities/surgery/surgeryPassageExotic.js   |  4 ++--
 src/js/rulesAssistantOptions.js                  |  4 ++--
 src/markets/specificMarkets/customSlaveMarket.js |  4 ++--
 src/markets/specificMarkets/huskSlave.js         | 14 +++++++-------
 7 files changed, 23 insertions(+), 24 deletions(-)

diff --git a/src/Corporation/manageCorporation.js b/src/Corporation/manageCorporation.js
index 427c1ec2774..9735544ef96 100644
--- a/src/Corporation/manageCorporation.js
+++ b/src/Corporation/manageCorporation.js
@@ -1,8 +1,7 @@
 App.Corporate.corpRaces = function() {
 	const el = new DocumentFragment();
 	App.UI.DOM.appendNewElement("div", el, `The corporation enslaves people of the following race${V.corp.SpecRaces.length === 1 ? ``:`s`}:`);
-	for (const race of App.Data.misc.filterRacesLowercase) {
-		const capRace = App.Data.misc.filterRaces[App.Data.misc.filterRacesLowercase.indexOf(race)];
+	for (const [race, capRace] of App.Data.misc.filterRaces) {
 		const r = [];
 		if (V.corp.SpecRaces.includes(race)) {
 			r.push(capRace);
diff --git a/src/events/intro/customizeSlaveTrade.js b/src/events/intro/customizeSlaveTrade.js
index e6a5083c791..36f486b5ae8 100644
--- a/src/events/intro/customizeSlaveTrade.js
+++ b/src/events/intro/customizeSlaveTrade.js
@@ -50,20 +50,20 @@ App.Intro.CustomSlaveTrade = function() {
 		div = document.createElement("div");
 		App.UI.DOM.appendNewElement("span", div, `Filter by Race: `);
 		array = [];
-		for (const race of setup.filterRaces) {
-			if (baseControlsFilter === uncapFirstChar(race).replace(/[ -]/g, '')) {
+		for (const [race, raceCap] of setup.filterRaces) {
+			if (baseControlsFilter === race) {
 				array.push(
 					App.UI.DOM.disabledLink(
-						race,
+						raceCap,
 						["currently selected race"]
 					)
 				);
 			} else {
 				array.push(
 					App.UI.DOM.link(
-						race,
+						raceCap,
 						() => {
-							baseControlsFilter = uncapFirstChar(race).replace(/[ -]/g, '');
+							baseControlsFilter = race;
 							refresh();
 						}
 					)
@@ -166,10 +166,10 @@ App.Intro.CustomSlaveTrade = function() {
 			App.UI.DOM.appendNewElement("div", p, `By dominant race/ethnicity (hover over the name to see the nationalities affected):`);
 			list = document.createElement("UL");
 			list.classList.add("customize-slave-trade-ul");
-			for (const race of setup.filterRaces) {
+			for (const race of setup.filterRaces.keys()) {
 				const racialNationalities = setup.baseNationalities.filter(function(n) {
 					let races = setup.raceSelector[n] || setup.raceSelector[''];
-					return races[race.toLowerCase()] * 3.5 > hashSum(races);
+					return races[race] * 3.5 > hashSum(races);
 				});
 
 				if (racialNationalities.length > 0) {
diff --git a/src/events/intro/pcAppearance.js b/src/events/intro/pcAppearance.js
index 5d40d545c24..c09881efa53 100644
--- a/src/events/intro/pcAppearance.js
+++ b/src/events/intro/pcAppearance.js
@@ -6,11 +6,11 @@ App.UI.Player.appearance = function(options) {
 		.addComment("For best result capitalize it.").pulldown();
 
 	options.addOption("Your race is", "race", V.PC).showTextBox()
-		.addValueList(Array.from(setup.filterRaces, (k => [k, k.toLowerCase()])));
+		.addValueList(Array.from(App.Data.filterRaces, ((k, v) => [v, k])));
 
 	if (V.cheatMode) {
 		options.addOption("Your race is", "origRace", V.PC).showTextBox()
-			.addValueList(Array.from(setup.filterRaces, (k => [k, k.toLowerCase()])));
+			.addValueList(Array.from(App.Data.filterRaces, ((k, v) => [v, k])));
 	}
 
 	options.addOption("Your skin tone is", "skin", V.PC).showTextBox()
diff --git a/src/facilities/surgery/surgeryPassageExotic.js b/src/facilities/surgery/surgeryPassageExotic.js
index d21a052f57e..4a4156e48be 100644
--- a/src/facilities/surgery/surgeryPassageExotic.js
+++ b/src/facilities/surgery/surgeryPassageExotic.js
@@ -34,13 +34,13 @@ App.UI.surgeryPassageExotic = function(slave, cheat = false) {
 			if (slave.indentureRestrictions > 1) {
 				App.UI.DOM.appendNewElement("div", el, `${His} indenture forbids elective surgery`, ["choices", "note"]);
 			} else {
-				for (const race of App.Data.misc.filterRacesLowercase) {
+				for (const [race, raceCap] of App.Data.misc.filterRacesLowercase) {
 					if (slave.race === race) {
 						continue;
 					}
 					linkArray.push(
 						makeLink(
-							App.Data.misc.filterRaces[App.Data.misc.filterRacesLowercase.indexOf(race)],
+							raceCap,
 							"race",
 							() => {
 								slave.race = race;
diff --git a/src/js/rulesAssistantOptions.js b/src/js/rulesAssistantOptions.js
index 631b199c498..132c5a6bb4b 100644
--- a/src/js/rulesAssistantOptions.js
+++ b/src/js/rulesAssistantOptions.js
@@ -2454,8 +2454,8 @@ App.RA.options = (function() {
 			if (V.pregnancyMonitoringUpgrade === 1 && V.geneticMappingUpgrade >= 1) {
 				pairs.push(["boys", "male"]);
 				pairs.push(["girls", "female"]);
-				for (let i = 0; i < App.Data.misc.filterRaces.length; ++i) {
-					pairs.push([App.Data.misc.filterRaces[i], "race:" + App.Data.misc.filterRacesLowercase[i]]);
+				for (const [race, raceCap] of setup.filterRaces) {
+					pairs.push([raceCap, "race:" + race]);
 				}
 			}
 			super("Pregnancy termination", pairs);
diff --git a/src/markets/specificMarkets/customSlaveMarket.js b/src/markets/specificMarkets/customSlaveMarket.js
index 5838770da2f..d21524a14a9 100644
--- a/src/markets/specificMarkets/customSlaveMarket.js
+++ b/src/markets/specificMarkets/customSlaveMarket.js
@@ -301,8 +301,8 @@ App.Markets["Custom Slave"] = function() {
 		const choices = new Map([
 			["ethnicity is unimportant", "Ethnicity is unimportant"],
 		]);
-		for (const race of App.Data.misc.filterRaces) {
-			choices.set(race.toLowerCase(), race);
+		for (const [race, raceCap] of App.Data.misc.filterRaces) {
+			choices.set(race, raceCap);
 		}
 
 		createDescription(el, description, slaveProperty);
diff --git a/src/markets/specificMarkets/huskSlave.js b/src/markets/specificMarkets/huskSlave.js
index ff4e664200f..ee9a9d18b79 100644
--- a/src/markets/specificMarkets/huskSlave.js
+++ b/src/markets/specificMarkets/huskSlave.js
@@ -98,22 +98,22 @@ App.Markets["Husk Slave"] = function() {
 		);
 
 		const linkArray = [];
-		const raceUpper = App.Data.misc.filterRaces.concat(["Not Important"]);
-		const raceLower = App.Data.misc.filterRacesLowercase.concat(["not important"]);
-		for (let i = 0; i < raceUpper.length; i++) {
-			if (V.huskSlave.race === raceLower[i]) {
+		const race = new Map(App.Data.misc.filterRaces);
+		race.set("Not Important", "not important");
+		for (const [race, raceCap] of setup.filterRaces) {
+			if (V.huskSlave.race === race) {
 				linkArray.push(
 					App.UI.DOM.disabledLink(
-						raceUpper[i],
+						raceCap,
 						["current selection"]
 					)
 				);
 			} else {
 				linkArray.push(
 					App.UI.DOM.link(
-						raceUpper[i],
+						raceCap,
 						() => {
-							V.huskSlave.race = raceLower[i];
+							V.huskSlave.race = race;
 							refresh();
 						}
 					)
-- 
GitLab