54 if (!jsonObj.contains(
"mapId")) {
55 LOG_ERROR(
"Map JSON missing required field: mapId");
59 std::string mapId = jsonObj[
"mapId"].get<std::string>();
62 std::string name = jsonObj.value(
"name", mapId);
63 float scrollSpeed = jsonObj.value(
"scrollSpeed", 0.0f);
64 std::string background = jsonObj.value(
"background",
"");
65 std::string parallaxBackground = jsonObj.value(
"parallaxBackground",
"");
66 float parallaxSpeedFactor = jsonObj.value(
"parallaxSpeedFactor", 0.5f);
67 std::string spawnScript = jsonObj.value(
"spawnScript",
"");
68 float duration = jsonObj.value(
"duration", 0.0f);
69 std::string nextMap = jsonObj.value(
"nextMap",
"");
72 ecs::MapData mapData(mapId, name, scrollSpeed, background, spawnScript, duration, nextMap,
73 parallaxBackground, parallaxSpeedFactor);
75 LOG_INFO(
"✓ Parsed map: '", name,
"' (", mapId,
")");
76 LOG_DEBUG(
" - Scroll speed: ", scrollSpeed,
" px/s");
77 LOG_DEBUG(
" - Duration: ", duration > 0.0f ? std::to_string(duration) +
"s" :
"infinite");
78 if (!parallaxBackground.empty()) {
79 LOG_DEBUG(
" - Parallax background: ", parallaxBackground,
80 " (speed factor: ", parallaxSpeedFactor,
")");
82 if (!nextMap.empty()) {
88 }
catch (
const nlohmann::json::exception &e) {
89 LOG_ERROR(
"Error parsing map JSON: ", e.what());
91 }
catch (
const std::exception &e) {
92 LOG_ERROR(
"Unexpected error parsing map: ", e.what());