Fikset (kanskje) json-formatet for Mapcrafter.
This commit is contained in:
@@ -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}
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user