From 1269d562059d2129a22023489c08c351bb8f8708 Mon Sep 17 00:00:00 2001
From: Vasileios Pasialiokis <whiterocket@outlook.com>
Date: Mon, 16 Jul 2018 15:16:44 +0300
Subject: [PATCH] add custom label support to RA

---
 src/js/DefaultRules.tw                      |  8 ++++++++
 src/js/rulesAssistant.tw                    |  1 +
 src/js/rulesAssistantOptions.tw             | 19 +++++++++++++++++++
 src/uncategorized/BackwardsCompatibility.tw |  6 +++---
 4 files changed, 31 insertions(+), 3 deletions(-)

diff --git a/src/js/DefaultRules.tw b/src/js/DefaultRules.tw
index 2b7898375cc..a456dac92a1 100644
--- a/src/js/DefaultRules.tw
+++ b/src/js/DefaultRules.tw
@@ -53,6 +53,7 @@ window.DefaultRules = (function() {
 		ProcessSmartPiercings(slave, rule);
 		ProcessTattoos(slave, rule);
 		ProcessPorn(slave, rule);
+		ProcessLabel(slave, rule);
 		return r;
 	}
 
@@ -2183,6 +2184,13 @@ window.DefaultRules = (function() {
 			}
 		}
 	}
+	
+	function ProcessLabel(slave, rule) {
+		if (rule.label !== "no default setting" && slave.customLabel !== rule.label) {
+			slave.customLabel = rule.label;
+			r += `<br>${slave.slaveName}'s label has been set to ${rule.label}`;
+		}
+	}
 
 	return DefaultRules;
 })();
diff --git a/src/js/rulesAssistant.tw b/src/js/rulesAssistant.tw
index 8ade85b9a42..2116d3a4d48 100644
--- a/src/js/rulesAssistant.tw
+++ b/src/js/rulesAssistant.tw
@@ -289,6 +289,7 @@ window.emptyDefaultRule = function emptyDefaultRule() {
 			pregSpeed: "no default setting",
 			bellyImplantVol: -1,
 			teeth: "no default setting",
+			label: "no default setting",
 		}
 	};
 	return rule;
diff --git a/src/js/rulesAssistantOptions.tw b/src/js/rulesAssistantOptions.tw
index dd4a98aa105..e42f161bc1d 100644
--- a/src/js/rulesAssistantOptions.tw
+++ b/src/js/rulesAssistantOptions.tw
@@ -890,6 +890,7 @@ window.rulesAssistantOptions = (function() {
 			this.appendChild(new AutosurgerySection());
 			this.appendChild(new RegimenSection());
 			this.appendChild(new BehaviourSection());
+			this.appendChild(new OtherSection());
 		}
 
 		render() {
@@ -960,6 +961,13 @@ window.rulesAssistantOptions = (function() {
 				this.appendChild(new PornList());
 		}
 	}
+	
+	class OtherSection extends Section {
+		constructor() {
+			super("Other Settings");
+			this.appendChild(new LabelList());
+		}
+	}
 
 	class CosmeticSection extends Section {
 		constructor() {
@@ -3132,5 +3140,16 @@ window.rulesAssistantOptions = (function() {
 		}
 	}
 	
+	class LabelList extends List {
+		constructor() {
+			const items = [
+				["no default setting"],
+			];
+			super("Custom label", items, true);
+			this.setValue(current_rule.set.label);
+			this.onchange = (value) => current_rule.set.label = value;
+		}
+	}
+	
 	return rulesAssistantOptions;
 })();
diff --git a/src/uncategorized/BackwardsCompatibility.tw b/src/uncategorized/BackwardsCompatibility.tw
index 87c736cf6b9..22778d4a108 100644
--- a/src/uncategorized/BackwardsCompatibility.tw
+++ b/src/uncategorized/BackwardsCompatibility.tw
@@ -2946,6 +2946,6 @@ Done!
 	else x.set.preg = false;
 })>>
 
-<<run $defaultRules.filter(x => !([1, 0, "no default setting"].includes(x.set.haircuts))).forEach(x => {
-	x.set.haircuts = "no default setting";
-})>>
+<<run $defaultRules.filter(x => x.set.haircuts === undefined).forEach(x => { x.set.haircuts = "no default setting"; })>>
+
+<<run $defaultRules.filter(x => x.set.label === undefined).forEach(x => { x.set.label = "no default setting"; }>>
-- 
GitLab