From e12bb78720b7567b434d12ec963809bdc91d756c Mon Sep 17 00:00:00 2001 From: lowercasedonkey <lowercasedonkey@gmail.com> Date: Mon, 12 Oct 2020 23:48:51 -0400 Subject: [PATCH] handle choices a little more locally --- src/interaction/siRules.js | 98 ++++++++++++++++++++++------------ src/interaction/siUtilities.js | 11 +--- 2 files changed, 64 insertions(+), 45 deletions(-) diff --git a/src/interaction/siRules.js b/src/interaction/siRules.js index 7a7a5b77210..091da886cfb 100644 --- a/src/interaction/siRules.js +++ b/src/interaction/siRules.js @@ -331,58 +331,86 @@ App.UI.SlaveInteract.rules = function(slave) { function smartSettings(slave) { let el = document.createElement('div'); - - const {His} = getPronouns(slave); - const bodyPart = []; - const BDSM = []; - const gender = []; - const level = []; const usingBulletVibe = slave.vaginalAccessory === "smart bullet vibrator" || slave.dickAccessory === "smart bullet vibrator"; if (slave.clitPiercing === 3 || usingBulletVibe) { + const level = new Map(); + const bodyPart = new Map(); + const BDSM = new Map(); + const gender = new Map(); + // Level - level.push({text: `No sex`, updateSlave: {clitSetting: `none`}}); - level.push({text: `All sex`, updateSlave: {clitSetting: `all`}}); + level.set(`No sex`, `none`); + level.set(`All sex`, `all`); // Body part - bodyPart.push({text: `Vanilla`, updateSlave: {clitSetting: `vanilla`}}); - bodyPart.push({text: `Oral`, updateSlave: {clitSetting: `oral`}}); - bodyPart.push({text: `Anal`, updateSlave: {clitSetting: `anal`}}); - bodyPart.push({text: `Boobs`, updateSlave: {clitSetting: `boobs`}}); + bodyPart.set(`Vanilla`, `vanilla`); + bodyPart.set(`Oral`, `oral`); + bodyPart.set(`Anal`, `anal`); + bodyPart.set(`Boobs`, `boobs`); if (V.seePreg !== 0) { - bodyPart.push({text: `Preg`, updateSlave: {clitSetting: `pregnancy`}}); + bodyPart.set(`Preg`, `pregnancy`); } // BDSM - BDSM.push({text: `Sub`, updateSlave: {clitSetting: `submissive`}}); - BDSM.push({text: `Dom`, updateSlave: {clitSetting: `dom`}}); - BDSM.push({text: `Masochism`, updateSlave: {clitSetting: `masochist`}}); - BDSM.push({text: `Sadism`, updateSlave: {clitSetting: `sadist`}}); - BDSM.push({text: `Humiliation`, updateSlave: {clitSetting: `humiliation`}}); + BDSM.set(`Sub`, `submissive`); + BDSM.set(`Dom`, `dom`); + BDSM.set(`Masochism`, `masochist`); + BDSM.set(`Sadism`, `sadist`); + BDSM.set(`Humiliation`, `humiliation`); // Gender - gender.push({text: `Men`, updateSlave: {clitSetting: `men`}}); - gender.push({text: `Women`, updateSlave: {clitSetting: `women`}}); - gender.push({text: `Anti-men`, updateSlave: {clitSetting: `anti-men`}}); - gender.push({text: `Anti-women`, updateSlave: {clitSetting: `anti-women`}}); - } - - let label = null; - if (slave.clitPiercing === 3) { - label = `${His} smart ${slave.dick < 1 ? "clit" : "frenulum"} piercing `; - label += (usingBulletVibe) ? `and smart bullet vibrator are set to: ` : `is set to: `; - } - if (label) { + gender.set(`Men`, `men`); + gender.set(`Women`, `women`); + gender.set(`Anti-men`, `anti-men`); + gender.set(`Anti-women`, `anti-women`); + let label = null; + if (slave.clitPiercing === 3) { + label = `Smart ${slave.dick < 1 ? "clit" : "frenulum"} piercing `; + label += (usingBulletVibe) ? `and smart bullet vibrator setting: ` : `setting: `; + } else if (usingBulletVibe) { + label = `Smart bullet vibrator setting: `; + } let title = App.UI.DOM.appendNewElement('div', el, label); let selected = App.UI.DOM.appendNewElement('span', title, `${slave.clitSetting}. `); selected.style.fontWeight = "bold"; - } - App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Level", level, slave, refresh); - App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Body part", bodyPart, slave, refresh); - App.UI.SlaveInteract.appendLabeledChoiceRow(el, "BDSM", BDSM, slave, refresh); - App.UI.SlaveInteract.appendLabeledChoiceRow(el, "Gender", gender, slave, refresh); + choices("Level", level); + choices("Body part", bodyPart); + choices("Body part", BDSM); + choices("Gender", gender); + } return el; + + function choices(title, map) { + const row = document.createElement("div"); + row.classList.add("choices"); + row.append(`${title}: `); + + const linkArray = []; + for (const [text, value] of map) { + if (slave.clitSetting === value) { + linkArray.push( + App.UI.DOM.disabledLink( + text, + ["Currently selected"] + ) + ); + } else { + linkArray.push( + App.UI.DOM.link( + text, + () => { + slave.clitSetting = value; + refresh(); + } + ) + ); + } + } + row.append(App.UI.DOM.generateLinksStrip(linkArray)); + el.append(row); + } } function refresh() { jQuery("#si-rules").empty().append(rulesContent()); diff --git a/src/interaction/siUtilities.js b/src/interaction/siUtilities.js index ef2ea4748f6..017d7ff0e79 100644 --- a/src/interaction/siUtilities.js +++ b/src/interaction/siUtilities.js @@ -75,16 +75,7 @@ App.UI.SlaveInteract.generateRows = function(array, slave, category, accessCheck } if (accessCheck === false || unlocked) { // is it just text? - let updateKeys; - let value; - if (!jQuery.isEmptyObject(array[i].updateSlave)) { - updateKeys = Object.keys(array[i].updateSlave); // ["clitsettings", ...] - value = array[i].updateSlave[updateKeys[0]]; - } - - if (updateKeys && slave[updateKeys[0]] === value) { - link = App.UI.DOM.disabledLink(array[i].text, ["Currently selected"]); - } else if (array[i].disabled) { + if (array[i].disabled) { link = App.UI.DOM.disabledLink(array[i].text, [array[i].disabled]); } else if (typeof unlocked === 'string') { link = App.UI.DOM.disabledLink(array[i].text, [unlocked]); -- GitLab