mirror of
https://github.com/Azgaar/Fantasy-Map-Generator.git
synced 2025-12-17 09:41:24 +01:00
markers - add on click
This commit is contained in:
parent
43561df98b
commit
2587a1643b
2 changed files with 19 additions and 31 deletions
|
|
@ -212,6 +212,7 @@ function editMarker() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function toggleAddMarker() {
|
function toggleAddMarker() {
|
||||||
|
markerAdd.classList.toggle("pressed");
|
||||||
addMarker.click();
|
addMarker.click();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -235,8 +236,8 @@ function editMarker() {
|
||||||
listeners.forEach(removeListener => removeListener());
|
listeners.forEach(removeListener => removeListener());
|
||||||
|
|
||||||
unselect();
|
unselect();
|
||||||
if (addMarker.classList.contains("pressed")) addMarker.classList.remove("pressed");
|
addMarker.classList.remove("pressed");
|
||||||
if (markerAdd.classList.contains("pressed")) markerAdd.classList.remove("pressed");
|
markerAdd.classList.remove("pressed");
|
||||||
restoreDefaultEvents();
|
restoreDefaultEvents();
|
||||||
clearMainTip();
|
clearMainTip();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -688,7 +688,7 @@ function addRouteOnClick() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function toggleAddMarker() {
|
function toggleAddMarker() {
|
||||||
const pressed = document.getElementById("addMarker").classList.contains("pressed");
|
const pressed = document.getElementById("addMarker")?.classList.contains("pressed");
|
||||||
if (pressed) {
|
if (pressed) {
|
||||||
unpressClickToAddButton();
|
unpressClickToAddButton();
|
||||||
return;
|
return;
|
||||||
|
|
@ -696,46 +696,33 @@ function toggleAddMarker() {
|
||||||
|
|
||||||
addFeature.querySelectorAll("button.pressed").forEach(b => b.classList.remove("pressed"));
|
addFeature.querySelectorAll("button.pressed").forEach(b => b.classList.remove("pressed"));
|
||||||
addMarker.classList.add("pressed");
|
addMarker.classList.add("pressed");
|
||||||
closeDialogs(".stable");
|
|
||||||
viewbox.style("cursor", "crosshair").on("click", addMarkerOnClick);
|
viewbox.style("cursor", "crosshair").on("click", addMarkerOnClick);
|
||||||
tip("Click on map to add a marker. Hold Shift to add multiple", true);
|
tip("Click on map to add a marker. Hold Shift to add multiple", true);
|
||||||
if (!layerIsOn("toggleMarkers")) toggleMarkers();
|
if (!layerIsOn("toggleMarkers")) toggleMarkers();
|
||||||
}
|
}
|
||||||
|
|
||||||
function addMarkerOnClick() {
|
function addMarkerOnClick() {
|
||||||
// TODO: rework for new markers system
|
const {markers} = pack;
|
||||||
const point = d3.mouse(this);
|
const point = d3.mouse(this);
|
||||||
const x = rn(point[0], 2);
|
const x = rn(point[0], 2);
|
||||||
const y = rn(point[1], 2);
|
const y = rn(point[1], 2);
|
||||||
const id = getNextId("marker");
|
const i = last(markers).i + 1;
|
||||||
|
|
||||||
const selected = markerSelectGroup.value;
|
const isMarkerSelected = elSelected?.node()?.parentElement?.id === "markers";
|
||||||
const valid =
|
const selectedMarker = isMarkerSelected ? markers.find(marker => marker.i === +elSelected.attr("id").slice(6)) : null;
|
||||||
selected &&
|
const baseMarker = selectedMarker || {icon: "❓"};
|
||||||
d3
|
const marker = {...baseMarker, i, x, y};
|
||||||
.select("#defs-markers")
|
|
||||||
.select("#" + selected)
|
|
||||||
.size();
|
|
||||||
const symbol = valid ? "#" + selected : "#marker0";
|
|
||||||
const added = markers.select("[data-id='" + symbol + "']").size();
|
|
||||||
let desired = valid && added ? markers.select("[data-id='" + symbol + "']").attr("data-size") : 1;
|
|
||||||
if (isNaN(desired)) desired = 1;
|
|
||||||
const size = desired * 5 + 25 / scale;
|
|
||||||
|
|
||||||
markers
|
markers.push(marker);
|
||||||
.append("use")
|
const markersElement = document.getElementById("markers");
|
||||||
.attr("id", id)
|
const rescale = +markersElement.getAttribute("rescale");
|
||||||
.attr("xlink:href", symbol)
|
markersElement.insertAdjacentHTML("beforeend", drawMarker(marker, rescale));
|
||||||
.attr("data-id", symbol)
|
|
||||||
.attr("data-x", x)
|
|
||||||
.attr("data-y", y)
|
|
||||||
.attr("x", x - size / 2)
|
|
||||||
.attr("y", y - size)
|
|
||||||
.attr("data-size", desired)
|
|
||||||
.attr("width", size)
|
|
||||||
.attr("height", size);
|
|
||||||
|
|
||||||
if (d3.event.shiftKey === false) unpressClickToAddButton();
|
if (d3.event.shiftKey === false) {
|
||||||
|
document.getElementById("markerAdd").classList.remove("pressed");
|
||||||
|
unpressClickToAddButton();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function viewCellDetails() {
|
function viewCellDetails() {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue