From 7fac933066f2bdd0a69f7d7336e372fb5c4f885f Mon Sep 17 00:00:00 2001 From: Axel Meyer Date: Thu, 21 May 2026 16:02:55 +0200 Subject: [PATCH] Upgrade spine-prototype demo to multi-layer schema-v2 map Surface + wall layers with entity slot between them. Uses maps.draw_map_pre_entities and maps.draw_map_post_entities so character sprites render between surface and wall layers. Co-Authored-By: Claude Opus 4.7 (1M context) --- init.lua | 3 ++- maps/demo.map.json | 65 ++++++++++++++++++++++++++++++++-------------- 2 files changed, 47 insertions(+), 21 deletions(-) diff --git a/init.lua b/init.lua index b70df31..f635808 100644 --- a/init.lua +++ b/init.lua @@ -126,7 +126,7 @@ end function render(ctx) engine.render.clear_color(engine.render.rgb(20, 20, 30)) camera.begin() - r_lib.draw_map() + maps.draw_map_pre_entities() -- draw sign on top of map engine.render.draw_rect(sign.x - 6, sign.y - 6, 12, 12, engine.render.rgb(SIGN_R, SIGN_G, SIGN_B)) @@ -142,6 +142,7 @@ function render(ctx) engine.render.rgb(PLAYER_R, PLAYER_G, PLAYER_B)) -- P.3.6: highlights over selected entities (world-space) selection.render_highlights() + maps.draw_map_post_entities() camera.finish() -- P.3.6: drag-box overlay (screen-space, after camera.finish) selection.render_drag_box() diff --git a/maps/demo.map.json b/maps/demo.map.json index af8d150..cf66645 100644 --- a/maps/demo.map.json +++ b/maps/demo.map.json @@ -1,23 +1,48 @@ { + "schema_version": 2, "id": "demo", - "tilemap": "demo_tilemap", - "size": {"w": 16, "h": 16}, - "tiles": [ - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, - 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2, - 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2, - 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2, - 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2, - 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2, - 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2, - 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2, - 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2, - 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2, - 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2, - 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2, - 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2, - 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2, - 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2, - 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 - ] + "size": { "w": 16, "h": 16 }, + "atlases": ["demo_tilemap"], + "layers": { + "surface": { + "tiles": [ + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16, + 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16 + ] + }, + "wall": { + "tiles": [ + 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32, + 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,32, + 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,32, + 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,32, + 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,32, + 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,32, + 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,32, + 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,32, + 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,32, + 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,32, + 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,32, + 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,32, + 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,32, + 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,32, + 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,32, + 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 + ] + } + } }