refactor: replace fmg.modules with local vars

This commit is contained in:
Azgaar 2022-07-09 00:40:12 +03:00
parent 80bf0ef688
commit a97e7f44f6
31 changed files with 141 additions and 95 deletions

View file

@ -9,6 +9,8 @@ import {openURL} from "utils/linkUtils";
import {rn} from "utils/numberUtils"; import {rn} from "utils/numberUtils";
import {getArea, getAreaUnit, si} from "utils/unitUtils"; import {getArea, getAreaUnit, si} from "utils/unitUtils";
let isLoaded = false;
export function open() { export function open() {
closeDialogs("#biomesEditor, .stable"); closeDialogs("#biomesEditor, .stable");
if (!layerIsOn("toggleBiomes")) toggleBiomes(); if (!layerIsOn("toggleBiomes")) toggleBiomes();
@ -21,8 +23,8 @@ export function open() {
const animate = d3.transition().duration(2000).ease(d3.easeSinIn); const animate = d3.transition().duration(2000).ease(d3.easeSinIn);
refreshBiomesEditor(); refreshBiomesEditor();
if (fmg.modules.editBiomes) return; if (isLoaded) return;
fmg.modules.editBiomes = true; isLoaded = true;
$("#biomesEditor").dialog({ $("#biomesEditor").dialog({
title: "Biomes Editor", title: "Biomes Editor",

View file

@ -1,6 +1,7 @@
import * as d3 from "d3"; import * as d3 from "d3";
import {closeDialogs} from "dialogs/utils"; import {closeDialogs} from "dialogs/utils";
import {openDialog} from "dialogs";
import {layerIsOn} from "layers"; import {layerIsOn} from "layers";
import {prompt} from "scripts/prompt"; import {prompt} from "scripts/prompt";
import {clearMainTip, tip} from "scripts/tooltips"; import {clearMainTip, tip} from "scripts/tooltips";
@ -459,9 +460,9 @@ export function open({id} = {}) {
} }
function openEmblemEdit() { function openEmblemEdit() {
const id = +elSelected.attr("data-id"), const id = +elSelected.attr("data-id");
burg = pack.burgs[id]; const burg = pack.burgs[id];
editEmblem("burg", "burgCOA" + id, burg); openDialog("emblemEditor", null, {type: "burg", id: "burgCOA" + id, el: burg});
} }
function toggleMFCGMap() { function toggleMFCGMap() {

View file

@ -6,10 +6,7 @@ import {openURL} from "utils/linkUtils";
import {rn} from "utils/numberUtils"; import {rn} from "utils/numberUtils";
import {parseTransform} from "utils/stringUtils"; import {parseTransform} from "utils/stringUtils";
export function editEmblem(type, id, el) { export function open({type, id, el}) {
if (customization) return;
if (!id && d3.event) defineEmblemData(d3.event);
emblems.selectAll("use").call(d3.drag().on("drag", dragEmblem)).classed("draggable", true); emblems.selectAll("use").call(d3.drag().on("drag", dragEmblem)).classed("draggable", true);
const emblemStates = document.getElementById("emblemStates"); const emblemStates = document.getElementById("emblemStates");
@ -49,20 +46,6 @@ export function editEmblem(type, id, el) {
document.getElementById("emblemsGallery").onclick = downloadGallery; document.getElementById("emblemsGallery").onclick = downloadGallery;
document.getElementById("emblemsFocus").onclick = showArea; document.getElementById("emblemsFocus").onclick = showArea;
function defineEmblemData(e) {
const parent = e.target.parentNode;
const [g, t] =
parent.id === "burgEmblems"
? [pack.burgs, "burg"]
: parent.id === "provinceEmblems"
? [pack.provinces, "province"]
: [pack.states, "state"];
const i = +e.target.dataset.i;
type = t;
id = type + "COA" + i;
el = g[i];
}
function updateElementSelectors(type, id, el) { function updateElementSelectors(type, id, el) {
let state = 0, let state = 0,
province = 0, province = 0,

View file

@ -18,6 +18,8 @@ import {aleaPRNG} from "scripts/aleaPRNG";
import {undraw} from "scripts/generation"; import {undraw} from "scripts/generation";
import {closeDialogs} from "dialogs/utils"; import {closeDialogs} from "dialogs/utils";
let isLoaded = false;
export function editHeightmap(options) { export function editHeightmap(options) {
const {mode, tool} = options || {}; const {mode, tool} = options || {};
restartHistory(); restartHistory();
@ -26,8 +28,8 @@ export function editHeightmap(options) {
if (!mode) showModeDialog(); if (!mode) showModeDialog();
else enterHeightmapEditMode(mode); else enterHeightmapEditMode(mode);
if (fmg.modules.editHeightmap) return; if (isLoaded) return;
fmg.modules.editHeightmap = true; isLoaded = true;
// add listeners // add listeners
byId("paintBrushes").on("click", openBrushesPanel); byId("paintBrushes").on("click", openBrushesPanel);
@ -555,6 +557,8 @@ export function editHeightmap(options) {
updateHistory(); updateHistory();
} }
let isBrushesPanelLoaded = false;
function openBrushesPanel() { function openBrushesPanel() {
if ($("#brushesPanel").is(":visible")) return; if ($("#brushesPanel").is(":visible")) return;
$("#brushesPanel") $("#brushesPanel")
@ -565,8 +569,8 @@ export function editHeightmap(options) {
}) })
.on("dialogclose", exitBrushMode); .on("dialogclose", exitBrushMode);
if (fmg.modules.openBrushesPanel) return; if (isBrushesPanelLoaded) return;
fmg.modules.openBrushesPanel = true; isBrushesPanelLoaded = true;
// add listeners // add listeners
byId("brushesButtons").on("click", e => toggleBrushMode(e)); byId("brushesButtons").on("click", e => toggleBrushMode(e));
@ -725,6 +729,8 @@ export function editHeightmap(options) {
} }
} }
let isTemplateEditorLoaded = false;
function openTemplateEditor() { function openTemplateEditor() {
if ($("#templateEditor").is(":visible")) return; if ($("#templateEditor").is(":visible")) return;
const $body = byId("templateBody"); const $body = byId("templateBody");
@ -737,8 +743,8 @@ export function editHeightmap(options) {
position: {my: "right top", at: "right-10 top+10", of: "svg"} position: {my: "right top", at: "right-10 top+10", of: "svg"}
}); });
if (fmg.modules.openTemplateEditor) return; if (isTemplateEditorLoaded) return;
fmg.modules.openTemplateEditor = true; isTemplateEditorLoaded = true;
$("#templateBody").sortable({ $("#templateBody").sortable({
items: "> div", items: "> div",
@ -1054,6 +1060,8 @@ export function editHeightmap(options) {
} }
} }
let isImageConverterLoaded = false;
function openImageConverter() { function openImageConverter() {
if ($("#imageConverter").is(":visible")) return; if ($("#imageConverter").is(":visible")) return;
imageToLoad.click(); imageToLoad.click();
@ -1084,8 +1092,8 @@ export function editHeightmap(options) {
viewbox.select("#heights").selectAll("*").remove(); viewbox.select("#heights").selectAll("*").remove();
updateHistory(); updateHistory();
if (fmg.modules.openImageConverter) return; if (isImageConverterLoaded) return;
fmg.modules.openImageConverter = true; isImageConverterLoaded = true;
// add color pallete // add color pallete
void (function createColorPallete() { void (function createColorPallete() {

View file

@ -1,6 +1,7 @@
import * as d3 from "d3"; import * as d3 from "d3";
import {closeDialogs} from "dialogs/utils"; import {closeDialogs} from "dialogs/utils";
import {openDialog} from "dialogs";
import {restoreDefaultEvents} from "scripts/events"; import {restoreDefaultEvents} from "scripts/events";
import {clearMainTip, showMainTip, tip} from "scripts/tooltips"; import {clearMainTip, showMainTip, tip} from "scripts/tooltips";
import {getMixedColor, getRandomColor} from "utils/colorUtils"; import {getMixedColor, getRandomColor} from "utils/colorUtils";
@ -161,7 +162,8 @@ function addListeners() {
const stateId = +$element.parentNode?.dataset?.id; const stateId = +$element.parentNode?.dataset?.id;
if ($element.tagName === "FILL-BOX") stateChangeFill($element); if ($element.tagName === "FILL-BOX") stateChangeFill($element);
else if (classList.contains("name")) editStateName(stateId); else if (classList.contains("name")) editStateName(stateId);
else if (classList.contains("coaIcon")) editEmblem("state", "stateCOA" + stateId, pack.states[stateId]); else if (classList.contains("coaIcon"))
openDialog("emblemEditor", null, {type: "state", id: "stateCOA" + stateId, el: pack.state[stateId]});
else if (classList.contains("icon-star-empty")) stateCapitalZoomIn(stateId); else if (classList.contains("icon-star-empty")) stateCapitalZoomIn(stateId);
else if (classList.contains("statePopulation")) changePopulation(stateId); else if (classList.contains("statePopulation")) changePopulation(stateId);
else if (classList.contains("icon-pin")) toggleFog(stateId, classList); else if (classList.contains("icon-pin")) toggleFog(stateId, classList);
@ -405,6 +407,8 @@ function stateChangeFill(el) {
openPicker(currentFill, callback); openPicker(currentFill, callback);
} }
let isLoaded = false;
function editStateName(state) { function editStateName(state) {
const $stateNameEditorCustomForm = byId("stateNameEditorCustomForm"); const $stateNameEditorCustomForm = byId("stateNameEditorCustomForm");
const $stateNameEditorSelectForm = byId("stateNameEditorSelectForm"); const $stateNameEditorSelectForm = byId("stateNameEditorSelectForm");
@ -438,8 +442,8 @@ function editStateName(state) {
position: {my: "center", at: "center", of: "svg"} position: {my: "center", at: "center", of: "svg"}
}); });
if (fmg.modules.editStateName) return; if (isLoaded) return;
fmg.modules.editStateName = true; isLoaded = true;
// add listeners // add listeners
byId("stateNameEditorShortCulture").on("click", regenerateShortNameCuture); byId("stateNameEditorShortCulture").on("click", regenerateShortNameCuture);

View file

@ -7,12 +7,14 @@ import {prompt} from "scripts/prompt";
import {closeDialogs} from "dialogs/utils"; import {closeDialogs} from "dialogs/utils";
import {fitScaleBar} from "modules/measurers"; import {fitScaleBar} from "modules/measurers";
let isLoaded = false;
export function open() { export function open() {
closeDialogs("#unitsEditor, .stable"); closeDialogs("#unitsEditor, .stable");
$("#unitsEditor").dialog(); $("#unitsEditor").dialog();
if (fmg.modules.editUnits) return; if (isLoaded) return;
fmg.modules.editUnits = true; isLoaded = true;
$("#unitsEditor").dialog({ $("#unitsEditor").dialog({
title: "Units Editor", title: "Units Editor",

View file

@ -6,6 +6,8 @@ const dialogsMap = {
coastlineEditor: "coastline-editor", coastlineEditor: "coastline-editor",
culturesEditor: "cultures-editor", culturesEditor: "cultures-editor",
diplomacyEditor: "diplomacy-editor", diplomacyEditor: "diplomacy-editor",
emblemEditor: "emblem-editor",
heightmapEditor: "heightmap-editor",
heightmapSelection: "heightmap-selection", heightmapSelection: "heightmap-selection",
hierarchyTree: "hierarchy-tree", hierarchyTree: "hierarchy-tree",
religionsEditor: "religions-editor", religionsEditor: "religions-editor",

View file

@ -14,10 +14,6 @@ import {addGlobalListeners} from "./scripts/listeners";
import {checkForUpdates} from "./scripts/updater"; import {checkForUpdates} from "./scripts/updater";
import {getInputNumber} from "utils/nodeUtils"; import {getInputNumber} from "utils/nodeUtils";
window.fmg = {
modules: {}
};
// default options // default options
options = { options = {
pinNotes: false, pinNotes: false,

View file

@ -9,6 +9,8 @@ import {capitalize} from "utils/stringUtils";
import {getAdjective, list} from "utils/languageUtils"; import {getAdjective, list} from "utils/languageUtils";
import {closeDialogs} from "dialogs/utils"; import {closeDialogs} from "dialogs/utils";
let isLoaded = false;
export class Battle { export class Battle {
constructor(attacker, defender) { constructor(attacker, defender) {
if (customization) return; if (customization) return;
@ -42,8 +44,8 @@ export class Battle {
close: () => Battle.prototype.context.cancelResults() close: () => Battle.prototype.context.cancelResults()
}); });
if (fmg.modules.Battle) return; if (isLoaded) return;
fmg.modules.Battle = true; isLoaded = true;
// add listeners // add listeners
document.getElementById("battleType").addEventListener("click", ev => this.toggleChange(ev)); document.getElementById("battleType").addEventListener("click", ev => this.toggleChange(ev));

View file

@ -421,6 +421,5 @@ function showElevationProfile(data, routeLen, isRiver) {
document.getElementById("epCurve").removeEventListener("change", draw); document.getElementById("epCurve").removeEventListener("change", draw);
document.getElementById("epSave").removeEventListener("click", downloadCSV); document.getElementById("epSave").removeEventListener("click", downloadCSV);
document.getElementById("elevationGraph").innerHTML = ""; document.getElementById("elevationGraph").innerHTML = "";
fmg.modules.elevation = false;
} }
} }

View file

@ -7,6 +7,8 @@ import {ra} from "utils/probabilityUtils";
import {parseTransform} from "utils/stringUtils"; import {parseTransform} from "utils/stringUtils";
import {closeDialogs} from "dialogs/utils"; import {closeDialogs} from "dialogs/utils";
let isLoaded = false;
export function editIce() { export function editIce() {
if (customization) return; if (customization) return;
closeDialogs(".stable"); closeDialogs(".stable");
@ -26,8 +28,8 @@ export function editIce() {
close: closeEditor close: closeEditor
}); });
if (fmg.modules.editIce) return; if (isLoaded) return;
fmg.modules.editIce = true; isLoaded = true;
// add listeners // add listeners
document.getElementById("iceEditStyle").addEventListener("click", () => editStyle("ice")); document.getElementById("iceEditStyle").addEventListener("click", () => editStyle("ice"));

View file

@ -3,6 +3,8 @@ import {tip, showMainTip} from "scripts/tooltips";
import {round, parseTransform} from "utils/stringUtils"; import {round, parseTransform} from "utils/stringUtils";
import {closeDialogs} from "dialogs/utils"; import {closeDialogs} from "dialogs/utils";
let isLoaded = false;
export function editLabel() { export function editLabel() {
if (customization) return; if (customization) return;
closeDialogs(); closeDialogs();
@ -26,8 +28,8 @@ export function editLabel() {
selectLabelGroup(text); selectLabelGroup(text);
updateValues(textPath); updateValues(textPath);
if (fmg.modules.editLabel) return; if (isLoaded) return;
fmg.modules.editLabel = true; isLoaded = true;
// add listeners // add listeners
document.getElementById("labelGroupShow").addEventListener("click", showGroupSection); document.getElementById("labelGroupShow").addEventListener("click", showGroupSection);

View file

@ -8,6 +8,8 @@ import {rand} from "utils/probabilityUtils";
import {round} from "utils/stringUtils"; import {round} from "utils/stringUtils";
import {getArea, getAreaUnit, getHeight, si} from "utils/unitUtils"; import {getArea, getAreaUnit, getHeight, si} from "utils/unitUtils";
let isLoaded = false;
export function editLake() { export function editLake() {
if (customization) return; if (customization) return;
closeDialogs(".stable"); closeDialogs(".stable");
@ -28,8 +30,8 @@ export function editLake() {
drawLakeVertices(); drawLakeVertices();
viewbox.on("touchmove mousemove", null); viewbox.on("touchmove mousemove", null);
if (fmg.modules.editLake) return; if (isLoaded) return;
fmg.modules.editLake = true; isLoaded = true;
// add listeners // add listeners
document.getElementById("lakeName").addEventListener("input", changeName); document.getElementById("lakeName").addEventListener("input", changeName);

View file

@ -7,6 +7,8 @@ import {capitalize} from "utils/stringUtils";
import {si} from "utils/unitUtils"; import {si} from "utils/unitUtils";
import {closeDialogs} from "dialogs/utils"; import {closeDialogs} from "dialogs/utils";
let isLoaded = false;
export function overviewMilitary() { export function overviewMilitary() {
if (customization) return; if (customization) return;
closeDialogs("#militaryOverview, .stable"); closeDialogs("#militaryOverview, .stable");
@ -18,8 +20,9 @@ export function overviewMilitary() {
addLines(); addLines();
$("#militaryOverview").dialog(); $("#militaryOverview").dialog();
if (fmg.modules.overviewMilitary) return; if (isLoaded) return;
fmg.modules.overviewMilitary = true; isLoaded = true;
updateHeaders(); updateHeaders();
$("#militaryOverview").dialog({ $("#militaryOverview").dialog({
@ -243,6 +246,8 @@ export function overviewMilitary() {
} }
} }
let isCustomizeLoaded = false;
function militaryCustomize() { function militaryCustomize() {
const types = ["melee", "ranged", "mounted", "machinery", "naval", "armored", "aviation", "magical"]; const types = ["melee", "ranged", "mounted", "machinery", "naval", "armored", "aviation", "magical"];
const tableBody = document.getElementById("militaryOptions").querySelector("tbody"); const tableBody = document.getElementById("militaryOptions").querySelector("tbody");
@ -282,8 +287,8 @@ export function overviewMilitary() {
} }
}); });
if (fmg.modules.overviewMilitaryCustomize) return; if (isCustomizeLoaded) return;
fmg.modules.overviewMilitaryCustomize = true; isCustomizeLoaded = true;
tableBody.addEventListener("click", event => { tableBody.addEventListener("click", event => {
const el = event.target; const el = event.target;

View file

@ -6,13 +6,15 @@ import {openURL} from "utils/linkUtils";
import {rn} from "utils/numberUtils"; import {rn} from "utils/numberUtils";
import {closeDialogs} from "dialogs/utils"; import {closeDialogs} from "dialogs/utils";
let isLoaded = false;
export function editNamesbase() { export function editNamesbase() {
if (customization) return; if (customization) return;
closeDialogs("#namesbaseEditor, .stable"); closeDialogs("#namesbaseEditor, .stable");
$("#namesbaseEditor").dialog(); $("#namesbaseEditor").dialog();
if (fmg.modules.editNamesbase) return; if (isLoaded) return;
fmg.modules.editNamesbase = true; isLoaded = true;
// add listeners // add listeners
document.getElementById("namesbaseSelect").addEventListener("change", updateInputs); document.getElementById("namesbaseSelect").addEventListener("change", updateInputs);

View file

@ -1,5 +1,7 @@
import {tip} from "scripts/tooltips"; import {tip} from "scripts/tooltips";
let isLoaded = false;
export function editNotes(id, name) { export function editNotes(id, name) {
// elements // elements
const notesLegend = document.getElementById("notesLegend"); const notesLegend = document.getElementById("notesLegend");
@ -49,8 +51,8 @@ export function editNotes(id, name) {
}); });
$("[aria-describedby='notesEditor']").css("top", "10vh"); $("[aria-describedby='notesEditor']").css("top", "10vh");
if (modules.editNotes) return; if (isLoaded) return;
modules.editNotes = true; isLoaded = true;
// add listeners // add listeners
document.getElementById("notesSelect").addEventListener("change", changeElement); document.getElementById("notesSelect").addEventListener("change", changeElement);

View file

@ -974,6 +974,8 @@ function resize3d() {
ThreeD.redraw(); ThreeD.redraw();
} }
let isLoaded = false;
function toggle3dOptions() { function toggle3dOptions() {
if (options3dUpdate.offsetParent) { if (options3dUpdate.offsetParent) {
$("#options3d").dialog("close"); $("#options3d").dialog("close");
@ -988,8 +990,8 @@ function toggle3dOptions() {
updateValues(); updateValues();
if (fmg.modules.options3d) return; if (isLoaded) return;
fmg.modules.options3d = true; isLoaded = true;
document.getElementById("options3dUpdate").addEventListener("click", ThreeD.update); document.getElementById("options3dUpdate").addEventListener("click", ThreeD.update);
document.getElementById("options3dSave").addEventListener("click", ThreeD.saveScreenshot); document.getElementById("options3dSave").addEventListener("click", ThreeD.saveScreenshot);

View file

@ -1,6 +1,7 @@
import * as d3 from "d3"; import * as d3 from "d3";
import {closeDialogs} from "dialogs/utils"; import {closeDialogs} from "dialogs/utils";
import {openDialog} from "dialogs";
import {turnLayerButtonOff} from "layers"; import {turnLayerButtonOff} from "layers";
import {restoreDefaultEvents} from "scripts/events"; import {restoreDefaultEvents} from "scripts/events";
import {clearMainTip, showMainTip, tip} from "scripts/tooltips"; import {clearMainTip, showMainTip, tip} from "scripts/tooltips";
@ -13,6 +14,8 @@ import {byId} from "utils/shorthands";
import {parseTransform} from "utils/stringUtils"; import {parseTransform} from "utils/stringUtils";
import {getArea, getAreaUnit, si} from "utils/unitUtils"; import {getArea, getAreaUnit, si} from "utils/unitUtils";
let isLoaded = false;
export function editProvinces() { export function editProvinces() {
if (customization) return; if (customization) return;
closeDialogs("#provincesEditor, .stable"); closeDialogs("#provincesEditor, .stable");
@ -25,8 +28,8 @@ export function editProvinces() {
const body = byId("provincesBodySection"); const body = byId("provincesBodySection");
refreshProvincesEditor(); refreshProvincesEditor();
if (fmg.modules.editProvinces) return; if (isLoaded) return;
fmg.modules.editProvinces = true; isLoaded = true;
$("#provincesEditor").dialog({ $("#provincesEditor").dialog({
title: "Provinces Editor", title: "Provinces Editor",
@ -61,7 +64,8 @@ export function editProvinces() {
if (el.tagName === "FILL-BOX") changeFill(el); if (el.tagName === "FILL-BOX") changeFill(el);
else if (cl.contains("name")) editProvinceName(p); else if (cl.contains("name")) editProvinceName(p);
else if (cl.contains("coaIcon")) editEmblem("province", "provinceCOA" + p, pack.provinces[p]); else if (cl.contains("coaIcon"))
openDialog("emblemEditor", null, {type: "province", id: "provinceCOA" + p, el: pack.provinces[p]});
else if (cl.contains("icon-star-empty")) capitalZoomIn(p); else if (cl.contains("icon-star-empty")) capitalZoomIn(p);
else if (cl.contains("icon-flag-empty")) triggerIndependencePromps(p); else if (cl.contains("icon-flag-empty")) triggerIndependencePromps(p);
else if (cl.contains("culturePopulation")) changePopulation(p); else if (cl.contains("culturePopulation")) changePopulation(p);
@ -506,6 +510,8 @@ export function editProvinces() {
}); });
} }
let isNameEditorLoaded = false;
function editProvinceName(province) { function editProvinceName(province) {
const p = pack.provinces[province]; const p = pack.provinces[province];
byId("provinceNameEditor").dataset.province = province; byId("provinceNameEditor").dataset.province = province;
@ -528,8 +534,8 @@ export function editProvinces() {
position: {my: "center", at: "center", of: "svg"} position: {my: "center", at: "center", of: "svg"}
}); });
if (fmg.modules.editProvinceName) return; if (isNameEditorLoaded) return;
fmg.modules.editProvinceName = true; isNameEditorLoaded = true;
// add listeners // add listeners
byId("provinceNameEditorShortCulture").addEventListener("click", regenerateShortNameCuture); byId("provinceNameEditorShortCulture").addEventListener("click", regenerateShortNameCuture);

View file

@ -8,6 +8,8 @@ import {rn} from "utils/numberUtils";
import {capitalize} from "utils/stringUtils"; import {capitalize} from "utils/stringUtils";
import {closeDialogs} from "dialogs/utils"; import {closeDialogs} from "dialogs/utils";
let isLoaded = false;
export function editRegiment(selector) { export function editRegiment(selector) {
if (customization) return; if (customization) return;
closeDialogs(".stable"); closeDialogs(".stable");
@ -28,8 +30,8 @@ export function editRegiment(selector) {
position: {my: "left top", at: "left+10 top+10", of: "#map"} position: {my: "left top", at: "left+10 top+10", of: "#map"}
}); });
if (fmg.modules.editRegiment) return; if (isLoaded) return;
fmg.modules.editRegiment = true; isLoaded = true;
// add listeners // add listeners
document.getElementById("regimentNameRestore").addEventListener("click", restoreName); document.getElementById("regimentNameRestore").addEventListener("click", restoreName);

View file

@ -8,6 +8,8 @@ import {capitalize} from "utils/stringUtils";
import {si} from "utils/unitUtils"; import {si} from "utils/unitUtils";
import {closeDialogs} from "dialogs/utils"; import {closeDialogs} from "dialogs/utils";
let isLoaded = false;
export function overviewRegiments(state) { export function overviewRegiments(state) {
if (customization) return; if (customization) return;
closeDialogs(".stable"); closeDialogs(".stable");
@ -18,8 +20,9 @@ export function overviewRegiments(state) {
addLines(); addLines();
$("#regimentsOverview").dialog(); $("#regimentsOverview").dialog();
if (fmg.modules.overviewRegiments) return; if (isLoaded) return;
fmg.modules.overviewRegiments = true; isLoaded = true;
updateHeaders(); updateHeaders();
$("#regimentsOverview").dialog({ $("#regimentsOverview").dialog({

View file

@ -6,6 +6,8 @@ import {tip, showMainTip, clearMainTip} from "scripts/tooltips";
import {rn} from "utils/numberUtils"; import {rn} from "utils/numberUtils";
import {closeDialogs} from "dialogs/utils"; import {closeDialogs} from "dialogs/utils";
let isLoaded = false;
export function editReliefIcon() { export function editReliefIcon() {
if (customization) return; if (customization) return;
closeDialogs(".stable"); closeDialogs(".stable");
@ -26,8 +28,8 @@ export function editReliefIcon() {
close: closeReliefEditor close: closeReliefEditor
}); });
if (fmg.modules.editReliefIcon) return; if (isLoaded) return;
fmg.modules.editReliefIcon = true; isLoaded = true;
// add listeners // add listeners
document.getElementById("reliefIndividual").addEventListener("click", enterIndividualMode); document.getElementById("reliefIndividual").addEventListener("click", enterIndividualMode);

View file

@ -7,6 +7,8 @@ import {tip, clearMainTip} from "scripts/tooltips";
import {rn} from "utils/numberUtils"; import {rn} from "utils/numberUtils";
import {closeDialogs} from "dialogs/utils"; import {closeDialogs} from "dialogs/utils";
let isLoaded = false;
export function createRiver() { export function createRiver() {
if (customization) return; if (customization) return;
closeDialogs(); closeDialogs();
@ -29,8 +31,8 @@ export function createRiver() {
close: closeRiverCreator close: closeRiverCreator
}); });
if (fmg.modules.createRiver) return; if (isLoaded) return;
fmg.modules.createRiver = true; isLoaded = true;
// add listeners // add listeners
document.getElementById("riverCreatorComplete").addEventListener("click", addRiver); document.getElementById("riverCreatorComplete").addEventListener("click", addRiver);

View file

@ -7,6 +7,8 @@ import {rn} from "utils/numberUtils";
import {rand} from "utils/probabilityUtils"; import {rand} from "utils/probabilityUtils";
import {closeDialogs} from "dialogs/utils"; import {closeDialogs} from "dialogs/utils";
let isLoaded = false;
export function editRiver(id) { export function editRiver(id) {
if (customization) return; if (customization) return;
if (elSelected && id === elSelected.attr("id")) return; if (elSelected && id === elSelected.attr("id")) return;
@ -40,8 +42,8 @@ export function editRiver(id) {
close: closeRiverEditor close: closeRiverEditor
}); });
if (fmg.modules.editRiver) return; if (isLoaded) return;
fmg.modules.editRiver = true; isLoaded = true;
// add listeners // add listeners
document.getElementById("riverCreateSelectingCells").addEventListener("click", createRiver); document.getElementById("riverCreateSelectingCells").addEventListener("click", createRiver);
@ -173,7 +175,7 @@ export function editRiver(id) {
elSelected.attr("d", path); elSelected.attr("d", path);
updateRiverLength(river); updateRiverLength(river);
if (fmg.modules.elevation) showEPForRiver(elSelected.node()); // TODO: check visibility showEPForRiver(elSelected.node());
} }
function addControlPoint() { function addControlPoint() {
@ -237,7 +239,6 @@ export function editRiver(id) {
} }
function showElevationProfile() { function showElevationProfile() {
fmg.modules.elevation = true;
showEPForRiver(elSelected.node()); showEPForRiver(elSelected.node());
} }

View file

@ -3,6 +3,8 @@ import * as d3 from "d3";
import {rn} from "utils/numberUtils"; import {rn} from "utils/numberUtils";
import {closeDialogs} from "dialogs/utils"; import {closeDialogs} from "dialogs/utils";
let isLoaded = false;
export function overviewRivers() { export function overviewRivers() {
if (customization) return; if (customization) return;
closeDialogs("#riversOverview, .stable"); closeDialogs("#riversOverview, .stable");
@ -12,8 +14,8 @@ export function overviewRivers() {
riversOverviewAddLines(); riversOverviewAddLines();
$("#riversOverview").dialog(); $("#riversOverview").dialog();
if (fmg.modules.overviewRivers) return; if (isLoaded) return;
fmg.modules.overviewRivers = true; isLoaded = true;
$("#riversOverview").dialog({ $("#riversOverview").dialog({
title: "Rivers Overview", title: "Rivers Overview",

View file

@ -7,6 +7,8 @@ import {getNextId} from "utils/nodeUtils";
import {round} from "utils/stringUtils"; import {round} from "utils/stringUtils";
import {closeDialogs} from "dialogs/utils"; import {closeDialogs} from "dialogs/utils";
let isLoaded = false;
export function editRoute(onClick) { export function editRoute(onClick) {
if (customization) return; if (customization) return;
if (!onClick && elSelected && d3.event.target.id === elSelected.attr("id")) return; if (!onClick && elSelected && d3.event.target.id === elSelected.attr("id")) return;
@ -29,8 +31,8 @@ export function editRoute(onClick) {
viewbox.on("touchmove mousemove", showEditorTips); viewbox.on("touchmove mousemove", showEditorTips);
if (onClick) toggleRouteCreationMode(); if (onClick) toggleRouteCreationMode();
if (fmg.modules.editRoute) return; if (isLoaded) return;
fmg.modules.editRoute = true; isLoaded = true;
// add listeners // add listeners
document.getElementById("routeGroupsShow").addEventListener("click", showGroupSection); document.getElementById("routeGroupsShow").addEventListener("click", showGroupSection);
@ -106,11 +108,10 @@ export function editRoute(onClick) {
const l = elSelected.node().getTotalLength(); const l = elSelected.node().getTotalLength();
routeLength.innerHTML = rn(l * distanceScaleInput.value) + " " + distanceUnitInput.value; routeLength.innerHTML = rn(l * distanceScaleInput.value) + " " + distanceUnitInput.value;
if (fmg.modules.elevation) showEPForRoute(elSelected.node()); // TODO: check visibility showEPForRoute(elSelected.node());
} }
function showElevationProfile() { function showElevationProfile() {
fmg.modules.elevation = true;
showEPForRoute(elSelected.node()); showEPForRoute(elSelected.node());
} }

View file

@ -131,6 +131,8 @@ function applyStyleWithUiRefresh(style) {
setPresetRemoveButtonVisibiliy(); setPresetRemoveButtonVisibiliy();
} }
let isLoaded = false;
function addStylePreset() { function addStylePreset() {
$("#styleSaver").dialog({title: "Style Saver", width: "26em", position: {my: "center", at: "center", of: "svg"}}); $("#styleSaver").dialog({title: "Style Saver", width: "26em", position: {my: "center", at: "center", of: "svg"}});
@ -139,8 +141,8 @@ function addStylePreset() {
styleSaverJSON.value = JSON.stringify(collectStyleData(), null, 2); styleSaverJSON.value = JSON.stringify(collectStyleData(), null, 2);
checkName(); checkName();
if (fmg.modules.saveStyle) return; if (isLoaded) return;
fmg.modules.saveStyle = true; isLoaded = true;
// add listeners // add listeners
document.getElementById("styleSaverName").addEventListener("input", checkName); document.getElementById("styleSaverName").addEventListener("input", checkName);

View file

@ -126,7 +126,7 @@ async function openEmblemEditor() {
} }
await COArenderer.trigger(id, el.coa); await COArenderer.trigger(id, el.coa);
editEmblem(type, id, el); openDialog("emblemEditor", null, {type, id, el});
} }
function regenerateRivers() { function regenerateRivers() {

View file

@ -4,6 +4,8 @@ import {tip} from "scripts/tooltips";
import {rn} from "utils/numberUtils"; import {rn} from "utils/numberUtils";
import {round, parseTransform} from "utils/stringUtils"; import {round, parseTransform} from "utils/stringUtils";
let isLoaded = false;
export function editWorld() { export function editWorld() {
if (customization) return; if (customization) return;
$("#worldConfigurator").dialog({ $("#worldConfigurator").dialog({
@ -40,8 +42,8 @@ export function editWorld() {
updateGlobeTemperature(); updateGlobeTemperature();
updateGlobePosition(); updateGlobePosition();
if (fmg.modules.editWorld) return; if (isLoaded) return;
fmg.modules.editWorld = true; isLoaded = true;
document.getElementById("worldControls").addEventListener("input", e => updateWorld(e.target)); document.getElementById("worldControls").addEventListener("input", e => updateWorld(e.target));
globe.select("#globeWindArrows").on("click", changeWind); globe.select("#globeWindArrows").on("click", changeWind);

View file

@ -9,6 +9,8 @@ import {getNextId} from "utils/nodeUtils";
import {rn} from "utils/numberUtils"; import {rn} from "utils/numberUtils";
import {getArea, getAreaUnit, si} from "utils/unitUtils"; import {getArea, getAreaUnit, si} from "utils/unitUtils";
let isLoaded = false;
export function editZones() { export function editZones() {
closeDialogs(); closeDialogs();
if (!layerIsOn("toggleZones")) toggleZones(); if (!layerIsOn("toggleZones")) toggleZones();
@ -17,8 +19,8 @@ export function editZones() {
updateFilters(); updateFilters();
zonesEditorAddLines(); zonesEditorAddLines();
if (fmg.modules.editZones) return; if (isLoaded) return;
fmg.modules.editZones = true; isLoaded = true;
$("#zonesEditor").dialog({ $("#zonesEditor").dialog({
title: "Zones Editor", title: "Zones Editor",

View file

@ -30,7 +30,7 @@ function clicked() {
const p = d3.mouse(this); const p = d3.mouse(this);
const i = findCell(p[0], p[1]); const i = findCell(p[0], p[1]);
if (grand.id === "emblems") editEmblem(); if (grand.id === "emblems") openDialog("emblemEditor", null, defineEmblemData(+el.dataset.i, parent));
else if (parent.id === "rivers") editRiver(el.id); else if (parent.id === "rivers") editRiver(el.id);
else if (grand.id === "routes") editRoute(); else if (grand.id === "routes") editRoute();
else if (el.tagName === "tspan" && grand.parentNode.parentNode.id === "labels") editLabel(); else if (el.tagName === "tspan" && grand.parentNode.parentNode.id === "labels") editLabel();
@ -45,6 +45,16 @@ function clicked() {
} else if (grand.id === "lakes") editLake(); } else if (grand.id === "lakes") editLake();
} }
function defineEmblemData(i, parent) {
const [g, type] =
parent.id === "burgEmblems"
? [pack.burgs, "burg"]
: parent.id === "provinceEmblems"
? [pack.provinces, "province"]
: [pack.states, "state"];
return {type, id: type + "COA" + i, el: g[i]};
}
const onMouseMove = debounce(handleMouseMove, 100); const onMouseMove = debounce(handleMouseMove, 100);
function handleMouseMove() { function handleMouseMove() {
const point = d3.mouse(this); const point = d3.mouse(this);

View file

@ -5,11 +5,6 @@ interface Navigator {
} }
interface Window { interface Window {
fmg: {
modules: {
[key: string]: boolean;
};
};
mapCoordinates: IMapCoordinates; mapCoordinates: IMapCoordinates;
// untyped IIFE modules // untyped IIFE modules
$: typeof $; $: typeof $;