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

View file

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

View file

@ -6,10 +6,7 @@ import {openURL} from "utils/linkUtils";
import {rn} from "utils/numberUtils";
import {parseTransform} from "utils/stringUtils";
export function editEmblem(type, id, el) {
if (customization) return;
if (!id && d3.event) defineEmblemData(d3.event);
export function open({type, id, el}) {
emblems.selectAll("use").call(d3.drag().on("drag", dragEmblem)).classed("draggable", true);
const emblemStates = document.getElementById("emblemStates");
@ -49,20 +46,6 @@ export function editEmblem(type, id, el) {
document.getElementById("emblemsGallery").onclick = downloadGallery;
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) {
let state = 0,
province = 0,

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -9,6 +9,8 @@ import {capitalize} from "utils/stringUtils";
import {getAdjective, list} from "utils/languageUtils";
import {closeDialogs} from "dialogs/utils";
let isLoaded = false;
export class Battle {
constructor(attacker, defender) {
if (customization) return;
@ -42,8 +44,8 @@ export class Battle {
close: () => Battle.prototype.context.cancelResults()
});
if (fmg.modules.Battle) return;
fmg.modules.Battle = true;
if (isLoaded) return;
isLoaded = true;
// add listeners
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("epSave").removeEventListener("click", downloadCSV);
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 {closeDialogs} from "dialogs/utils";
let isLoaded = false;
export function editIce() {
if (customization) return;
closeDialogs(".stable");
@ -26,8 +28,8 @@ export function editIce() {
close: closeEditor
});
if (fmg.modules.editIce) return;
fmg.modules.editIce = true;
if (isLoaded) return;
isLoaded = true;
// add listeners
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 {closeDialogs} from "dialogs/utils";
let isLoaded = false;
export function editLabel() {
if (customization) return;
closeDialogs();
@ -26,8 +28,8 @@ export function editLabel() {
selectLabelGroup(text);
updateValues(textPath);
if (fmg.modules.editLabel) return;
fmg.modules.editLabel = true;
if (isLoaded) return;
isLoaded = true;
// add listeners
document.getElementById("labelGroupShow").addEventListener("click", showGroupSection);

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -7,6 +7,8 @@ import {getNextId} from "utils/nodeUtils";
import {round} from "utils/stringUtils";
import {closeDialogs} from "dialogs/utils";
let isLoaded = false;
export function editRoute(onClick) {
if (customization) 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);
if (onClick) toggleRouteCreationMode();
if (fmg.modules.editRoute) return;
fmg.modules.editRoute = true;
if (isLoaded) return;
isLoaded = true;
// add listeners
document.getElementById("routeGroupsShow").addEventListener("click", showGroupSection);
@ -106,11 +108,10 @@ export function editRoute(onClick) {
const l = elSelected.node().getTotalLength();
routeLength.innerHTML = rn(l * distanceScaleInput.value) + " " + distanceUnitInput.value;
if (fmg.modules.elevation) showEPForRoute(elSelected.node());
// TODO: check visibility showEPForRoute(elSelected.node());
}
function showElevationProfile() {
fmg.modules.elevation = true;
showEPForRoute(elSelected.node());
}

View file

@ -131,6 +131,8 @@ function applyStyleWithUiRefresh(style) {
setPresetRemoveButtonVisibiliy();
}
let isLoaded = false;
function addStylePreset() {
$("#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);
checkName();
if (fmg.modules.saveStyle) return;
fmg.modules.saveStyle = true;
if (isLoaded) return;
isLoaded = true;
// add listeners
document.getElementById("styleSaverName").addEventListener("input", checkName);

View file

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

View file

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

View file

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

View file

@ -30,7 +30,7 @@ function clicked() {
const p = d3.mouse(this);
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 (grand.id === "routes") editRoute();
else if (el.tagName === "tspan" && grand.parentNode.parentNode.id === "labels") editLabel();
@ -45,6 +45,16 @@ function clicked() {
} 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);
function handleMouseMove() {
const point = d3.mouse(this);

View file

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