diff --git a/src/facilities/surgery/analyzePregnancy.js b/src/facilities/surgery/analyzePregnancy.js index fb33e286902ab8899c7bfebac5d1fbc0e4960f36..022c9ebb2dddbe52551cc501e4549204db76cb4b 100644 --- a/src/facilities/surgery/analyzePregnancy.js +++ b/src/facilities/surgery/analyzePregnancy.js @@ -14,79 +14,86 @@ globalThis.analyzePregnancies = function(mother, cheat) { function scanFetus(i) { const el = new DocumentFragment(); const fetus = mother.womb[i]; - let linkArray = []; + const genes = fetus.genetics; + let option; + const options = new App.UI.OptionsGroup(); if (fetus.age >= 2) { - App.UI.DOM.appendNewElement("div", el, `Ova: ${fetus.genetics.name}`); - App.UI.DOM.appendNewElement("div", el, `Age: ${Math.trunc(fetus.age * 1000) / 1000}`); + options.addOption(`Ova: ${genes.name}`, "name", genes).showTextBox(); + options.addOption(`Age: ${Math.trunc(fetus.age * 1000) / 1000}`, "age", fetus).showTextBox(); if (V.geneticMappingUpgrade >= 1) { - App.UI.DOM.appendNewElement("div", el, `Gender: ${fetus.genetics.gender}`); - App.UI.DOM.appendNewElement("div", el, `Father ID: ${fetus.genetics.father}`); - App.UI.DOM.appendNewElement("div", el, `Father Name: ${(fetus.genetics.fatherName) ? fetus.genetics.fatherName : `name not registered`}`); + options.addOption(`Gender: ${genes.gender}`, "age", fetus).showTextBox(); + options.addOption(`Father ID: ${genes.father}`, "father", genes).showTextBox(); + options.addOption(`Father Name: ${(genes.fatherName) ? genes.fatherName : `name not registered`}`, "father", genes); + options.addOption(`Mother ID: ${genes.mother}`, "mother", genes).showTextBox(); + options.addOption(`Mother Name: ${(genes.motherName) ? genes.motherName : `name not registered`}`, "motherName", genes); + options.addOption(`Nationality: ${genes.nationality}`, "nationality", genes).showTextBox(); + options.addOption(`Race: ${capFirstChar(genes.race)}`, "race", genes).showTextBox(); + options.addOption(`Skin tone: ${capFirstChar(genes.skin)}`, "skin", genes).showTextBox(); + options.addOption(`Intelligence index: ${genes.intelligence} out of 100`, "intelligence", genes).showTextBox(); + options.addOption(`Face index: ${genes.face} out of 100`, "face", genes).showTextBox(); + options.addOption(`Eye Color: ${capFirstChar(genes.eyeColor)}`, "eyeColor", genes).showTextBox(); + options.addOption(`Hair Color: ${capFirstChar(genes.hColor)}`, "hColor", genes).showTextBox(); - App.UI.DOM.appendNewElement("div", el, `Mother ID: ${fetus.genetics.mother}`); - App.UI.DOM.appendNewElement("div", el, `Mother Name: ${(fetus.genetics.motherName) ? fetus.genetics.motherName : `name not registered`}`); - App.UI.DOM.appendNewElement("div", el, `Nationality: ${fetus.genetics.nationality}`); - App.UI.DOM.appendNewElement("div", el, `Race: ${capFirstChar(fetus.genetics.race)}`); - App.UI.DOM.appendNewElement("div", el, `Skin tone: ${capFirstChar(fetus.genetics.skin)}`); - App.UI.DOM.appendNewElement("div", el, `Intelligence index: ${fetus.genetics.intelligence} out of 100`); - App.UI.DOM.appendNewElement("div", el, `Face index: ${fetus.genetics.face} out of 100`); - App.UI.DOM.appendNewElement("div", el, `Eye Color: ${capFirstChar(fetus.genetics.eyeColor)}`); - App.UI.DOM.appendNewElement("div", el, `Hair Color: ${capFirstChar(fetus.genetics.hColor)}`); - - if (fetus.genetics.underArmHStyle === "hairless" && fetus.genetics.pubicHStyle === "hairless") { - App.UI.DOM.appendNewElement("div", el, `Body hair: None`); - } else if (fetus.genetics.underArmHStyle === "hairless") { - App.UI.DOM.appendNewElement("div", el, `Body hair: Lacks underarm hair`); - } else if (fetus.genetics.pubicHStyle === "hairless") { - App.UI.DOM.appendNewElement("div", el, `Body hair: Lacks pubic hair`); + if (genes.underArmHStyle === "hairless" && genes.pubicHStyle === "hairless") { + options.addOption(`Body hair: None`); + } else if (genes.underArmHStyle === "hairless") { + options.addOption(`Body hair: Lacks underarm hair`); + } else if (genes.pubicHStyle === "hairless") { + options.addOption(`Body hair: Lacks pubic hair`); } - if (fetus.genetics.markings === "freckles" || fetus.genetics.markings === "heavily freckled") { - App.UI.DOM.appendNewElement("div", el, `Markings: ${capFirstChar(fetus.genetics.markings)}`); + if (genes.markings === "freckles" || genes.markings === "heavily freckled") { + options.addOption(`Markings: ${capFirstChar(genes.markings)}`, "markings", genes).showTextBox(); } + el.append(options.render()); el.append(fetusAbnormalities()); } else { if (fetus.age > 13) { - App.UI.DOM.appendNewElement("div", el, `Gender: ${fetus.genetics.gender}`); + App.UI.DOM.appendNewElement("div", el, `Gender: ${genes.gender}`); } if (fetus.age > 5) { - App.UI.DOM.appendNewElement("div", el, `Father ID: ${fetus.genetics.father}`); - App.UI.DOM.appendNewElement("div", el, `Father Name: ${fetus.genetics.fatherName}`); - App.UI.DOM.appendNewElement("div", el, `Mother ID: ${fetus.genetics.mother}`); - App.UI.DOM.appendNewElement("div", el, `Mother Name: ${fetus.genetics.motherName}`); + App.UI.DOM.appendNewElement("div", el, `Father ID: ${genes.father}`); + App.UI.DOM.appendNewElement("div", el, `Father Name: ${genes.fatherName}`); + App.UI.DOM.appendNewElement("div", el, `Mother ID: ${genes.mother}`); + App.UI.DOM.appendNewElement("div", el, `Mother Name: ${genes.motherName}`); } } if (V.incubator.capacity > 0 || V.nursery > 0) { App.UI.DOM.appendNewElement("div", el, `Reserved: ${fetus.reserve}`); } - App.UI.DOM.appendNewElement("div", el, `Rename: `) - .append(App.UI.DOM.makeTextBox( - fetus.genetics.name, - (v) => fetus.genetics.name = v - )); if (fetus.age < 4 && (V.arcologies[0].FSRestart === "unset" || V.eugenicsFullControl === 1 || mother.breedingMark === 0 || V.propOutcome === 0 || (fetus.fatherID !== -1 && fetus.fatherID !== -6))) { - linkArray.push(App.UI.DOM.link( - "Terminate ovum", - () => { - WombRemoveFetus(mother, i); - if (mother.preg === 0) { - mother.pregWeek = -1; - } - } - )); + option = options.addOption(``) + .customButton( + "Terminate ovum", + () => { + WombRemoveFetus(mother, i); + if (mother.preg === 0) { + mother.pregWeek = -1; + } + }, + passage() + ) + .customButton( + "Terminate ovum", + () => { + WombRemoveFetus(mother, i); + if (mother.preg === 0) { + mother.pregWeek = -1; + } + }, + passage() + ); if (V.surgeryUpgrade === 1) { - linkArray.push(App.UI.DOM.link( + option.customButton( "Transplant ovum", () => { V.donatrix = mother; V.wombIndex = i; V.nextLink = "Analyze Pregnancy"; }, - [], "Ova Transplant Workaround" - )); + ); } - App.UI.DOM.appendNewElement("div", el, App.UI.DOM.generateLinksStrip(linkArray)); } if (V.incubator.capacity > 0) { if (fetus.reserve === "incubator") { @@ -135,32 +142,30 @@ globalThis.analyzePregnancies = function(mother, cheat) { } } } else { - linkArray = []; App.UI.DOM.appendNewElement("div", el, `Unidentified ova found, no detailed data available.`); App.UI.DOM.appendNewElement("div", el, `Age: too early for scan.`); - linkArray.push(App.UI.DOM.link( - `Terminate ovum`, - () => { - WombRemoveFetus(mother, i); - if (mother.preg === 0) { - mother.pregWeek = -1; - } - }, - [], - passage() - )); + option = options.addOption(``) + .customButton( + `Terminate ovum`, + () => { + WombRemoveFetus(mother, i); + if (mother.preg === 0) { + mother.pregWeek = -1; + } + }, + passage() + ); if (V.surgeryUpgrade === 1) { - linkArray.push(App.UI.DOM.link( + option.customButton( `Transplant ovum`, () => { V.donatrix = mother; V.wombIndex = i; V.nextLink = "Analyze Pregnancy"; }, - [], `Ova Transplant Workaround` - )); + ); } } return el; @@ -169,13 +174,13 @@ globalThis.analyzePregnancies = function(mother, cheat) { const div = App.UI.DOM.makeElement("div", null); const abnormalitySpans = []; - for (const gene in fetus.genetics.geneticQuirks) { + for (const gene in genes.geneticQuirks) { const geneObj = App.Data.genes.get(gene); const quirkName = (geneObj && geneObj.abbreviation) ? geneObj.abbreviation : gene; const quirkColor = (geneObj && geneObj.goodTrait) ? "green" : "red"; - if (fetus.genetics.geneticQuirks[gene] === 2 || typeof fetus.genetics.geneticQuirks[gene] === "string") { // String check is for heterochromia + if (genes.geneticQuirks[gene] === 2 || typeof genes.geneticQuirks[gene] === "string") { // String check is for heterochromia abnormalitySpans.push(App.UI.DOM.makeElement("span", quirkName, quirkColor)); - } else if (fetus.genetics.geneticQuirks[gene] === 1 && V.geneticMappingUpgrade >= 2) { + } else if (genes.geneticQuirks[gene] === 1 && V.geneticMappingUpgrade >= 2) { abnormalitySpans.push(App.UI.DOM.makeElement("span", quirkName, "yellow")); } }