From c3c9a68778f9bf12d9de361c746ff0e5714d90ba Mon Sep 17 00:00:00 2001
From: Vas <whiterocket@outlook.com>
Date: Fri, 4 May 2018 16:23:16 +0300
Subject: [PATCH] cosmetics work

---
 src/js/rulesAssistantOptions.tw | 245 ++++++++++++++++++++++++++++++--
 1 file changed, 231 insertions(+), 14 deletions(-)

diff --git a/src/js/rulesAssistantOptions.tw b/src/js/rulesAssistantOptions.tw
index 3cc4a7258c0..bd73fd258a6 100644
--- a/src/js/rulesAssistantOptions.tw
+++ b/src/js/rulesAssistantOptions.tw
@@ -7,7 +7,7 @@
 
 window.rulesAssistantOptions = (function() {
 	"use strict"
-	
+
 	let V
 	let r = ""
 
@@ -213,7 +213,7 @@ window.rulesAssistantOptions = (function() {
 			this.selectedItem = null
 			this.value = this.element.querySelector(".rajs-value")
 		}
-		
+
 		render(prefix, textinput) {
 			const elem = document.createElement("div")
 			const label = document.createElement("span")
@@ -239,7 +239,7 @@ window.rulesAssistantOptions = (function() {
 			if (this.selectedItem) this.selectedItem.deselect()
 			this.propagateChange()
 		}
-		
+
 		selectItem(item) {
 			if (this.selectedItem) this.selectedItem.deselect()
 			this.selectedItem = item
@@ -307,7 +307,7 @@ window.rulesAssistantOptions = (function() {
 			this.data = data !== undefined ? data : this.setvalue !== undefined ? this.setvalue : displayvalue
 			this.selected = false
 		}
-		
+
 		render(displayvalue) {
 			const elem = document.createElement("span")
 			elem.classList.add("rajs-listitem")
@@ -338,7 +338,7 @@ window.rulesAssistantOptions = (function() {
 			elem.innerText = label + ":"
 			return elem
 		}
-		
+
 		appendChild(child) {
 			super.appendChild(child)
 			child.parent = this.parent
@@ -363,13 +363,14 @@ window.rulesAssistantOptions = (function() {
 	class OptionsItem extends Element {
 		constructor(label, onclick) {
 			super(label)
+			this.label = label
 			this.onclick = onclick
 		}
 		render(label, onclick) {
 			const elem = document.createElement("span")
 			elem.classList.add("rajs-listitem")
 			elem.innerHTML = label
-			elem.onclick = () => { return this.onclick() }
+			elem.onclick = () => { return this.onclick(this) }
 			return elem
 		}
 	}
@@ -403,7 +404,7 @@ window.rulesAssistantOptions = (function() {
 		render(label, selected) {
 			const container = document.createElement("div")
 			container.classList.add("rajs-listitem")
-			
+
 			const labelel = document.createElement("span")
 			labelel.innerHTML = label
 
@@ -579,7 +580,7 @@ window.rulesAssistantOptions = (function() {
 			["Never", "Always", "Custom"].forEach(i => this.fnlist.appendChild(i))
 			["Devotion", "Trust", "Health", "Sex drive", "Weight", "Age", "Body Age", "Visible Age", "Muscles", "Lactation", "Pregnancy", "Pregnancy Multiples", "Belly Implant", "Belly Size"].forEach(i => this.fnlist.appendChild(i, this.getAttribute(i)))
 			this.fnlist.onchange = () => this.fnchanged
-			
+
 			switch(V.currentRule.condition.function) {
 				case "Never":
 				case "Always":
@@ -939,7 +940,7 @@ window.rulesAssistantOptions = (function() {
 			]
 			nclothes.forEach(pair => nice.appendChild(new ListItem(...pair)))
 			fsnclothes.forEach(pair => { if (isItemAccessible(pair[1])) nice.appendChild(new ListItem(...pair))})
-			
+
 			harsh = new ListSubSection()
 			this.appendChild(harsh)
 
@@ -1183,7 +1184,7 @@ window.rulesAssistantOptions = (function() {
 				["None", () => this.none()]
 			]
 			pairs.forEach(pair => this.appendChild(new OptionsItem(...pair)))
-			
+
 			this.breasts = new BreastGrowthList()
 			this.butts = new ButtGrowthList()
 			this.lips = new LipGrowthList()
@@ -1587,7 +1588,7 @@ window.rulesAssistantOptions = (function() {
 				["Chastity", "chastity"],
 				["Situational", "situational"]
 			].forEach(pair => this.appendChild(new ListItem(...pair)))
-			this.selecTValue(V.currentRule.set.standardPunishment)
+			this.selectValue(V.currentRule.set.standardPunishment)
 			this.onchange = (label, value) => V.currentRule.set.standardPunishment = value
 		}
 	}
@@ -1670,6 +1671,8 @@ window.rulesAssistantOptions = (function() {
 			].forEach(pair => this.appendChild(new ListItem(...pair)))
 			this.selectValue(V.currentRule.set.clitSettingXX)
 			this.onchange = (label, value) => V.currentRule.set.clitSettingXX = value
+		}
+	}
 
 	class SmartEnergyList extends List {
 		constructor() {
@@ -1728,10 +1731,224 @@ window.rulesAssistantOptions = (function() {
 				["4000", "4000", 4000],
 				["5000", "5000", 5000]
 			].forEach(pair => this.appendChild(new ListItem(...pair)))
-			this.selectValue(V.currentRule.set)
-			this.onchange = (label,value) => V.currentRule.set = value
+			this.selectValue(V.currentRule.set.pornFameSpending)
+			this.onchange = (label,value) => V.currentRule.set.pornFameSpending = value
+		}
+	}
+
+	class CosmeticSection extends List {
+		constructor() {
+			this.appendChild(EyewearList)
+			this.appendChild(LensesList)
+			this.appendChild(MakeupList)
+			this.appendChild(NailsList)
+			this.appendChild(HairLengthList)
+			this.appendChild(HairColourList)
+			this.appendChild(HairStyleList)
+			this.appendChild(PubicHairColourList)
+			this.appendChild(PubicHairStyleList)
+			this.appendChild(ArmpitHairColourList)
+			this.appendChild(ArmpitHairStyleList)
+		}
+	}
+
+	class EyewearList extends List {
+		constructor() {
+			super("Eyewear")
+			[
+				["no default setting"],
+				["correct with contacts"],
+				["universal glasses"],
+				["blur with glasses"],
+				["blur with contacts"],
+			].forEach(pair => this.appendChild(new ListItem(...pair)))
+			this.selectValue(V.currentRule.set.eyewear)
+			this.onchange = (label, value) => V.currentRule.set.eyewear = value
+		}
+	}
+
+	class LensesList extends Element {
+		constructor() {
+			super(V.currentRule.set.eyeColor)
+			this.appendChild(new OptionsItem("No default Setting", () => this.setValue("no default setting")))
+			this.colourlist = new LensesColourList()
+			this.shapelist = new LensesShapeList()
+			this.appendChild(this.colourlist)
+			this.appendChild(this.shapelist)
+		}
+
+		render(color) {
+			const elem = document.createElement("div")
+			elem.innerHTML = "Eye coloring: "
+			this.label = document.createElement("strong")
+			this.label.innerText = coloring
+			elem.appendChild(this.label)
+		}
+
+		combine() {
+			const lst = []
+			if (this.colourlist.value !== "no default setting")
+				lst.appendChild(this.colourlist.value)
+			if (this.shapelist.value !== "no default setting")
+				list.appendChild(this.shapelist.value)
+			if (lst.length === 0) return "no default value"
+			else return lst.join(" ")
+		}
+
+		set_value() {
+			const tmp = this.combine()
+			this.label.innerText = tmp
+			V.currentRule.set.eyeColor = tmp
+		}
+	}
+
+	class LensesColourList extends Options {
+		constructor() {
+			super("Color:")
+			[
+				["no default setting"]
+				["blue"],
+				["black"],
+				["brown"],
+				["green"],
+				["turquoise"],
+				["sky-blue"],
+				["hazel"],
+				["pale-grey"],
+				["white"],
+				["pink"],
+				["amber"],
+				["red"]
+			].forEach(i => this.appendChild(new OptionsItem(i, item => {
+				this.value = item.label
+				this.parent.set_value()
+			})))
+		}
+	}
+
+	class LensesShapeList extends Options {
+		constructor() {
+			super("Shape:")
+			[
+				["no default setting"],
+				["catlike"],
+				["serpent-like"],
+				["devilish"],
+				["demonic"],
+				["hypnotic"],
+				["heart-shaped"],
+				["wide-eyed"],
+				["almond-shaped"],
+				["bright"],
+				["teary"],
+				["vacant"],
+			].forEach(i => this.appendChild(new OptionsItem(i, item => {
+				this.value = item.label
+				this.parent.set_value()
+			})))
+		}
+	}
+
+	class MakeupList extends List {
+		constructor() {
+			super("Makeup")
+			[
+				["no default setting"],
+				["makeup-free", "makeup-free", 0],
+				["nice", "nice", 1],
+				["gorgeous", "gorgeous", 2],
+				["color-coordinate with hair", "color-coordinate with hair", 3],
+				["slutty", "slutty", 4]
+			].forEach(pair => this.appendChild(new ListItem(...pair)))
+			this.selectValue(V.currentRule.set.makeup)
+			this.onchange = (label, value) => V.currentRule.set.makeup = value
+		}
+	}
+
+	class NailsList extends List {
+		constructor() {
+			super("Nails")
+			[
+				[],
+			].forEach(pair => this.appendChild(new ListItem(...pair)))
+			this.selectValue(V.currentRule.set.nails)
+			this.onchange = (label, value) => V.currentRule.set.nails = value
 		}
 	}
 
-	return rulesAssistantOptions
+	class HairLengthList extends List {
+		constructor() {
+			super("Nails")
+			[
+				[],
+			].forEach(pair => this.appendChild(new ListItem(...pair)))
+			this.selectValue(V.currentRule.set.nails)
+			this.onchange = (label, value) => V.currentRule.set.nails = value
+		}
+	}
+	class HairColourList extends List {
+		constructor() {
+			super("Nails")
+			[
+				[],
+			].forEach(pair => this.appendChild(new ListItem(...pair)))
+			this.selectValue(V.currentRule.set.nails)
+			this.onchange = (label, value) => V.currentRule.set.nails = value
+		}
+	}
+
+	class HairStyleList extends List {
+		constructor() {
+			super("Nails")
+			[
+				[],
+			].forEach(pair => this.appendChild(new ListItem(...pair)))
+			this.selectValue(V.currentRule.set.nails)
+			this.onchange = (label, value) => V.currentRule.set.nails = value
+		}
+	}
+
+	class PubicHairColourList extends List {
+		constructor() {
+			super("Nails")
+			[
+				[],
+			].forEach(pair => this.appendChild(new ListItem(...pair)))
+			this.selectValue(V.currentRule.set.nails)
+			this.onchange = (label, value) => V.currentRule.set.nails = value
+		}
+	}
+
+	class PubicHairStyleList extends List {
+		constructor() {
+			super("Nails")
+			[
+				[],
+			].forEach(pair => this.appendChild(new ListItem(...pair)))
+			this.selectValue(V.currentRule.set.nails)
+			this.onchange = (label, value) => V.currentRule.set.nails = value
+		}
+	}
+
+	class ArmpitHairColourList extends List {
+		constructor() {
+			super("Nails")
+			[
+				[],
+			].forEach(pair => this.appendChild(new ListItem(...pair)))
+			this.selectValue(V.currentRule.set.nails)
+			this.onchange = (label, value) => V.currentRule.set.nails = value
+		}
+	}
+
+	class ArmpitHairStyleList extends List {
+		constructor() {
+			super("Nails")
+			[
+				[],
+			].forEach(pair => this.appendChild(new ListItem(...pair)))
+			this.selectValue(V.currentRule.set.nails)
+			this.onchange = (label, value) => V.currentRule.set.nails = value
+		}
+	}
 })()
-- 
GitLab