Skip to content
Snippets Groups Projects
Commit 39c2642e authored by Pregmodder's avatar Pregmodder
Browse files

Merge branch 'fs-pulldown' into 'pregmod-master'

Fs pulldown

See merge request pregmodfan/fc-pregmod!8436
parents 31bddcc4 e16f0af1
No related branches found
No related tags found
No related merge requests found
/** Replaces <<SetFacilityDecoration>> widget /** Replaces <<SetFacilityDecoration>> widget
* @param {string} variable - global property name for the facility decoration (no $ etc)
* @returns {DocumentFragment} * @returns {DocumentFragment}
*/ */
App.UI.facilityRedecoration = function(variable) { App.UI.facilityRedecoration = function() {
const frag = new DocumentFragment(); const el = new DocumentFragment();
const activeFacilities = new Map([]);
const options = new App.UI.OptionsGroup();
const arc = V.arcologies[0]; const arc = V.arcologies[0];
for (const FS of FutureSocieties.activeFSes(arc)) {
if (arc[FS] > 20) { FutureSocieties.DecorationCleanup();
const decorationName = FutureSocieties.decorationName(FS);
if (decorationName && V[variable] !== decorationName) { const applicableFS = FutureSocieties.activeFSes(arc).filter(name => (arc[name] > 20));
const link = App.UI.DOM.link(`${decorationName} Redecoration`, () => { const decorationNames = Array.from(applicableFS, FS => FutureSocieties.decorationName(FS));
V[variable] = decorationName;
cashX(-5000, "capEx"); if (V.brothel > 0) {
App.UI.reload(); activeFacilities.set(V.brothelName, "brothelDecoration");
}); }
App.UI.DOM.appendNewElement("div", frag, link, "indent");
if (V.club > 0) {
activeFacilities.set(V.clubName, "clubDecoration");
}
if (V.dairy > 0) {
activeFacilities.set(V.dairyName, "dairyDecoration");
}
if (V.farmyard > 0) {
activeFacilities.set(V.farmyardName, "farmyardDecoration");
}
if (V.spa > 0) {
activeFacilities.set(V.spaName, "spaDecoration");
}
if (V.nursery > 0) {
activeFacilities.set(V.nurseryName, "nurseryDecoration");
}
if (V.clinic > 0) {
activeFacilities.set(V.clinicName, "clinicDecoration");
}
if (V.schoolroom > 0) {
activeFacilities.set(V.schoolroomName, "schoolroomDecoration");
}
if (V.cellblock > 0) {
activeFacilities.set(V.cellblockName, "cellblockDecoration");
}
if (V.servantsQuarters > 0) {
activeFacilities.set(V.servantsQuartersName, "servantsQuartersDecoration");
}
if (V.arcade > 0) {
activeFacilities.set(V.arcadeName, "arcadeDecoration");
}
if (V.masterSuite > 0) {
activeFacilities.set(V.masterSuiteName, "masterSuiteDecoration");
}
options.addOption(`Change style for all facilities`)
.addCustomDOM(modifyAll());
for (const [name, decoration] of activeFacilities) {
options.addOption(`The decoration style of ${name} is`)
.addCustomDOM(createPulldown(decoration));
}
el.append(options.render());
return el;
function createPulldown(variable) {
const select = document.createElement("select");
select.classList.add("rajs-list");
// Standard decorations
const choice = App.UI.DOM.appendNewElement("option", select, "Standard");
choice.value = "standard";
if (V[variable] === "standard") {
choice.selected = true;
}
// FS decorations
for (const decorationName of decorationNames) {
const choice = App.UI.DOM.makeElement("option", decorationName);
if (V[variable] === decorationName) {
choice.selected = true;
} }
select.append(choice);
} }
select.onchange = () => {
const O = select.options[select.selectedIndex];
if (O.value !== "standard") {
cashX(-5000, "capEx");
}
V[variable] = O.value;
App.UI.reload();
};
return select;
} }
if (V[variable] !== "standard") {
const link = App.UI.DOM.link(`Remove all decorations`, () => { function modifyAll() {
V[variable] = "standard"; const select = document.createElement("select");
select.classList.add("rajs-list");
// Standard decorations
const standard = App.UI.DOM.appendNewElement("option", select, "Standard");
standard.value = "standard";
// FS decorations
for (const decorationName of decorationNames) {
App.UI.DOM.appendNewElement("option", select, decorationName);
}
// Round Robin
App.UI.DOM.appendNewElement("option", select, "Distribute Evenly");
select.onchange = () => {
const O = select.options[select.selectedIndex];
if (O.value === "Distribute Evenly") { // Cycles through the list of available FS decorations, and distributes them to facilities round robin style.
let i = 0;
for (const decoration of activeFacilities.values()) {
cashX(-5000, "capEx");
V[decoration] = decorationNames[i];
i++;
if (i >= decorationNames.length) {
i = 0;
}
}
} else {
for (const decoration of activeFacilities.values()) {
if (O.value !== "standard") {
cashX(-5000, "capEx");
}
V[decoration] = O.value;
}
}
App.UI.reload(); App.UI.reload();
}); };
App.UI.DOM.appendNewElement("div", frag, link, "indent"); select.selectedIndex = -1;
return select;
} }
return frag;
}; };
/** /**
......
...@@ -124,6 +124,17 @@ App.UI.OptionsGroup = (function() { ...@@ -124,6 +124,17 @@ App.UI.OptionsGroup = (function() {
return this; return this;
} }
/**
* @param {Node} node
* @returns {Option}
*/
addCustomDOM(node) {
this.valuePairs.push({
value: node, mode: "DOM"
});
return this;
}
/* modify last added option */ /* modify last added option */
/** /**
...@@ -193,6 +204,10 @@ App.UI.OptionsGroup = (function() { ...@@ -193,6 +204,10 @@ App.UI.OptionsGroup = (function() {
/* insert custom SC markup and go to next element */ /* insert custom SC markup and go to next element */
$(buttonGroup).wiki(value.value); $(buttonGroup).wiki(value.value);
continue; continue;
} else if (value.mode === "DOM") {
/* insert DOM and go to next element */
buttonGroup.append(value.value);
continue;
} }
const button = document.createElement("button"); const button = document.createElement("button");
button.append(value.name); button.append(value.name);
......
...@@ -1719,64 +1719,4 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc ...@@ -1719,64 +1719,4 @@ You are spending <<print cashFormat($FSSpending)>> each week to support your soc
<h3>Facility Redecoration</h3> <h3>Facility Redecoration</h3>
<<run FutureSocieties.DecorationCleanup()>> <<includeDOM App.UI.facilityRedecoration()>>
<<if $brothel > 0>>
<div><<= capFirstChar($brothelName)>> is decorated in $brothelDecoration style.</div>
<<includeDOM App.UI.facilityRedecoration("brothelDecoration")>>
<</if>>
<<if $club > 0>>
<div><<= capFirstChar($clubName)>> is decorated in $clubDecoration style.</div>
<<includeDOM App.UI.facilityRedecoration("clubDecoration")>>
<</if>>
<<if $dairy > 0>>
<div><<= capFirstChar($dairyName)>> is decorated in $dairyDecoration style.</div>
<<includeDOM App.UI.facilityRedecoration("dairyDecoration")>>
<</if>>
<<if $farmyard > 0>>
<div><<= capFirstChar($farmyardName)>> is decorated in $farmyardDecoration style.</div>
<<includeDOM App.UI.facilityRedecoration("farmyardDecoration")>>
<</if>>
<<if $spa > 0>>
<div><<= capFirstChar($spaName)>> is decorated in $spaDecoration style.</div>
<<includeDOM App.UI.facilityRedecoration("spaDecoration")>>
<</if>>
<<if $nursery > 0>>
<div><<= capFirstChar($nurseryName)>> is decorated in $nurseryDecoration style.</div>
<<includeDOM App.UI.facilityRedecoration("nurseryDecoration")>>
<</if>>
<<if $clinic > 0>>
<div><<= capFirstChar($clinicName)>> is decorated in $clinicDecoration style.</div>
<<includeDOM App.UI.facilityRedecoration("clinicDecoration")>>
<</if>>
<<if $schoolroom > 0>>
<div><<= capFirstChar($schoolroomName)>> is decorated in $schoolroomDecoration style.</div>
<<includeDOM App.UI.facilityRedecoration("schoolroomDecoration")>>
<</if>>
<<if $cellblock > 0>>
<div><<= capFirstChar($cellblockName)>> is decorated in $cellblockDecoration style.</div>
<<includeDOM App.UI.facilityRedecoration("cellblockDecoration")>>
<</if>>
<<if $servantsQuarters > 0>>
<div><<= capFirstChar($servantsQuartersName)>> is decorated in $servantsQuartersDecoration style.</div>
<<includeDOM App.UI.facilityRedecoration("servantsQuartersDecoration")>>
<</if>>
<<if $arcade > 0>>
<div><<= capFirstChar($arcadeName)>> is decorated in $arcadeDecoration style.</div>
<<includeDOM App.UI.facilityRedecoration("arcadeDecoration")>>
<</if>>
<<if $masterSuite > 0>>
<div><<= capFirstChar($masterSuiteName)>> is decorated in $masterSuiteDecoration style.</div>
<<includeDOM App.UI.facilityRedecoration("masterSuiteDecoration")>>
<</if>>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment