diff --git a/index.html b/index.html
index 6bd64841..7299926c 100644
--- a/index.html
+++ b/index.html
@@ -2044,7 +2044,7 @@
-
+
@@ -2102,7 +2102,7 @@
+ lines += `
`;
}
@@ -112,7 +118,6 @@ function overviewBurgs() {
body.querySelectorAll("div > span.icon-star-empty").forEach(el => el.addEventListener("click", toggleCapitalStatus));
body.querySelectorAll("div > span.icon-anchor").forEach(el => el.addEventListener("click", togglePortStatus));
body.querySelectorAll("div > span.locks").forEach(el => el.addEventListener("click", toggleBurgLockStatus));
- body.querySelectorAll("div > span.locks").forEach(el => el.addEventListener("mouseover", showBurgOLockTip));
body.querySelectorAll("div > span.icon-pencil").forEach(el => el.addEventListener("click", openBurgEditor));
body.querySelectorAll("div > span.icon-trash-empty").forEach(el => el.addEventListener("click", triggerBurgRemove));
@@ -202,11 +207,6 @@ function overviewBurgs() {
}
}
- function showBurgOLockTip() {
- const burg = +this.parentNode.dataset.id;
- showBurgLockTip(burg);
- }
-
function openBurgEditor() {
const burg = +this.parentNode.dataset.id;
editBurg(burg);
@@ -413,7 +413,14 @@ function overviewBurgs() {
if (this.value === "provinces") return d.province;
};
- const base = this.value === "states" ? getStatesData() : this.value === "cultures" ? getCulturesData() : this.value === "parent" ? getParentData() : getProvincesData();
+ const base =
+ this.value === "states"
+ ? getStatesData()
+ : this.value === "cultures"
+ ? getCulturesData()
+ : this.value === "parent"
+ ? getParentData()
+ : getProvincesData();
burgs.forEach(b => (b.id = b.i + base.length - 1));
const data = base.concat(burgs);
@@ -447,7 +454,10 @@ function overviewBurgs() {
}
function downloadBurgsData() {
- let data = "Id,Burg,Province,Province Full Name,State,State Full Name,Culture,Religion,Population,Longitude,Latitude,Elevation (" + heightUnit.value + "),Capital,Port,Citadel,Walls,Plaza,Temple,Shanty Town\n"; // headers
+ let data =
+ "Id,Burg,Province,Province Full Name,State,State Full Name,Culture,Religion,Population,Longitude,Latitude,Elevation (" +
+ heightUnit.value +
+ "),Capital,Port,Citadel,Walls,Plaza,Temple,Shanty Town\n"; // headers
const valid = pack.burgs.filter(b => b.i && !b.removed); // all valid burgs
valid.forEach(b => {
diff --git a/modules/ui/editors.js b/modules/ui/editors.js
index 774ecc3d..6f6e8214 100644
--- a/modules/ui/editors.js
+++ b/modules/ui/editors.js
@@ -265,15 +265,6 @@ function toggleBurgLock(burg) {
b.lock = b.lock ? 0 : 1;
}
-function showBurgLockTip(burg) {
- const b = pack.burgs[burg];
- if (b.lock) {
- tip("Click to Unlock burg and allow it to be change by regeneration tools");
- } else {
- tip("Click to Lock burg and prevent changes by regeneration tools");
- }
-}
-
// draw legend box
function drawLegend(name, data) {
legend.selectAll("*").remove(); // fully redraw every time
diff --git a/modules/ui/general.js b/modules/ui/general.js
index dad91fc8..51d0ae1e 100644
--- a/modules/ui/general.js
+++ b/modules/ui/general.js
@@ -56,6 +56,15 @@ function showDataTip(e) {
tip(dataTip);
}
+function showElementLockTip(event) {
+ const locked = event?.target?.classList?.contains("icon-lock");
+ if (locked) {
+ tip("Click to unlock the element and allow it to be changed by regeneration tools");
+ } else {
+ tip("Click to lock the element and prevent changes to it by regeneration tools");
+ }
+}
+
const moved = debounce(mouseMove, 100);
function mouseMove() {
const point = d3.mouse(this);
@@ -101,7 +110,8 @@ function showMapTooltip(point, e, i, g) {
if (group === "emblems" && e.target.tagName === "use") {
const parent = e.target.parentNode;
- const [g, type] = parent.id === "burgEmblems" ? [pack.burgs, "burg"] : parent.id === "provinceEmblems" ? [pack.provinces, "province"] : [pack.states, "state"];
+ const [g, type] =
+ parent.id === "burgEmblems" ? [pack.burgs, "burg"] : parent.id === "provinceEmblems" ? [pack.provinces, "province"] : [pack.states, "state"];
const i = +e.target.dataset.i;
if (event.shiftKey) highlightEmblemElement(type, g[i]);
@@ -328,7 +338,20 @@ function highlightEmblemElement(type, el) {
if (type === "burg") {
const {x, y} = el;
- debug.append("circle").attr("cx", x).attr("cy", y).attr("r", 0).attr("fill", "none").attr("stroke", "#d0240f").attr("stroke-width", 1).attr("opacity", 1).transition(animation).attr("r", 20).attr("opacity", 0.1).attr("stroke-width", 0).remove();
+ debug
+ .append("circle")
+ .attr("cx", x)
+ .attr("cy", y)
+ .attr("r", 0)
+ .attr("fill", "none")
+ .attr("stroke", "#d0240f")
+ .attr("stroke-width", 1)
+ .attr("opacity", 1)
+ .transition(animation)
+ .attr("r", 20)
+ .attr("opacity", 0.1)
+ .attr("stroke-width", 0)
+ .remove();
return;
}
diff --git a/modules/ui/markers-editor.js b/modules/ui/markers-editor.js
index 2e6f3f93..3f13b117 100644
--- a/modules/ui/markers-editor.js
+++ b/modules/ui/markers-editor.js
@@ -22,6 +22,7 @@ function editMarker() {
const markerStroke = document.getElementById("markerStroke");
const markerNotes = document.getElementById("markerNotes");
+ const markerLock = document.getElementById("markerLock");
const addMarker = document.getElementById("addMarker");
const markerAdd = document.getElementById("markerAdd");
const markerRemove = document.getElementById("markerRemove");
@@ -47,6 +48,7 @@ function editMarker() {
listen(markerFill, "input", changePinFill),
listen(markerStroke, "input", changePinStroke),
listen(markerNotes, "click", editMarkerLegend),
+ listen(markerLock, "click", toggleMarkerLock),
listen(markerAdd, "click", toggleAddMarker),
listen(markerRemove, "click", confirmMarkerDeletion)
];
@@ -80,7 +82,7 @@ function editMarker() {
}
function updateInputs() {
- const {icon, type = "", size = 30, dx = 50, dy = 50, px = 12, stroke = "#000000", fill = "#ffffff", pin = "bubble"} = marker;
+ const {icon, type = "", size = 30, dx = 50, dy = 50, px = 12, stroke = "#000000", fill = "#ffffff", pin = "bubble", lock} = marker;
markerType.value = type;
markerIcon.value = icon;
@@ -91,6 +93,8 @@ function editMarker() {
markerPin.value = pin;
markerFill.value = fill;
markerStroke.value = stroke;
+
+ markerLock.className = lock ? "icon-lock" : "icon-lock-open";
}
function changeMarkerType() {
@@ -201,6 +205,12 @@ function editMarker() {
editNotes(id, id);
}
+ function toggleMarkerLock() {
+ marker.lock = !marker.lock;
+ markerLock.classList.toggle("icon-lock-open");
+ markerLock.classList.toggle("icon-lock");
+ }
+
function toggleAddMarker() {
addMarker.click();
}
diff --git a/modules/ui/tools.js b/modules/ui/tools.js
index cdd17ad5..893d85db 100644
--- a/modules/ui/tools.js
+++ b/modules/ui/tools.js
@@ -417,22 +417,21 @@ function regenerateIce() {
}
function regenerateMarkers(event) {
- // TODO: rework for new markers system
if (isCtrlClick(event)) prompt("Please provide markers number multiplier", {default: 1, step: 0.01, min: 0, max: 100}, v => addNumberOfMarkers(v));
- else addNumberOfMarkers(gauss(1, 0.5, 0.3, 5, 2));
+ else addNumberOfMarkers();
- function addNumberOfMarkers(number) {
- // remove existing markers and assigned notes
- markers
- .selectAll("use")
- .each(function () {
- const index = notes.findIndex(n => n.id === this.id);
- if (index != -1) notes.splice(index, 1);
- })
- .remove();
+ function addNumberOfMarkers(multiplier) {
+ pack.markers = pack.markers.filter(marker => {
+ if (marker.lock) return true;
+ document.getElementById(`marker${marker.i}`)?.remove();
+ const index = notes.findIndex(note => note.id === marker.id);
+ if (index != -1) notes.splice(index, 1);
+ return false;
+ });
- Markers.generate(number);
- if (!layerIsOn("toggleMarkers")) toggleMarkers();
+ Markers.regenerate(multiplier);
+ turnButtonOn("toggleMarkers");
+ drawMarkers();
}
}