Fikset (kanskje) json-formatet for Mapcrafter.
All checks were successful
Build maps / build-mapcrafter (push) Successful in 34s
Build maps / build-bluemap (push) Successful in 34s

This commit is contained in:
David Kaasen
2026-01-24 05:19:04 +01:00
parent 040294f2e1
commit 3fae06f53f

View File

@@ -1,5 +1,6 @@
import json
from pathlib import Path
import re
from lib_marker import Area, Point, Track
from marker_sets import WORLDS
@@ -19,30 +20,45 @@ def generate_mapcrafter_output(output_dir: Path):
ensure_ascii=False,
)
# Fjern "[" "]" rundt teksten.
exported_markers_json = re.sub(
r'^\s*\[\s*(.*\})\s*\]\s*$',
r'\1',
exported_markers_json,
flags=re.DOTALL)
template = template.replace('"@EXPORTED_MARKERS@"', exported_markers_json)
with (output_dir / "markers.js").open("w", encoding="utf-8") as f:
f.write(template)
def get_list_entry(lst, name):
for dings in lst:
if 'id' in dings and dings['id'] == name:
return dings
return None
def convert_data_to_mapcrafter_structure() -> dict:
result = {}
def convert_data_to_mapcrafter_structure() -> list:
result = []
for world_name, world_marker_sets in WORLDS.items():
for marker_set in world_marker_sets:
# https://mapcrafter.readthedocs.io/en/latest/markers.html#manually-specifying-markers
if marker_set.name not in result:
result[marker_set.name] = {
"id": marker_set.name.lower().replace(" ", "-"),
id = marker_set.name.lower().replace(" ", "-")
result_entry = get_list_entry(result, id)
if not result_entry:
result_entry = {
"id": id,
"name": marker_set.name,
"showDefault": marker_set.show_by_default,
"markers": {},
}
result.append(result_entry)
result[marker_set.name]["markers"][world_name] = []
result_entry["markers"][world_name] = []
for marker in marker_set.markers:
if isinstance(marker, Point):
result[marker_set.name]["markers"][world_name].append(
result_entry["markers"][world_name].append(
{"pos": [marker.x, marker.y, marker.z], "title": marker.name}
)