From d41a65bd50a80a13778d7ecef1dfbdaeafbcc9b4 Mon Sep 17 00:00:00 2001 From: Natalie Date: Fri, 19 Jun 2026 05:29:54 -0500 Subject: [PATCH] =?UTF-8?q?feat(@projects/@magic-civilization):=20?= =?UTF-8?q?=E2=9C=A8=20lair=20POI=20sprites=20+=20tile=20tooltips=20(p2-85?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit world_map lair POI overlay, tile_info_panel tooltip wiring, lair standin sprites + build_demo_lairs.py, tooltip unit test, lair proof scenes. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../p2-85-poi-sprites-and-tooltips.md | 79 ++++++-- .../sprites/lairs/ancient_construct_site.png | Bin 0 -> 25397 bytes .../assets/sprites/lairs/bandit_hideout.png | Bin 0 -> 21486 bytes .../assets/sprites/lairs/beast_den.png | Bin 0 -> 21004 bytes .../assets/sprites/lairs/corrupted_hollow.png | Bin 0 -> 24216 bytes .../assets/sprites/lairs/goblin_camp.png | Bin 0 -> 15797 bytes .../assets/sprites/lairs/troll_cave.png | Bin 0 -> 24640 bytes .../assets/sprites/lairs/volcanic_fissure.png | Bin 0 -> 17497 bytes .../assets/sprites/lairs/wyvern_nest.png | Bin 0 -> 26646 bytes .../engine/scenes/tests/lair_poi_proof.gd | 96 ++++++++++ .../engine/scenes/tests/lair_poi_proof.tscn | 6 + .../engine/scenes/tests/lair_world_proof.gd | 136 +++++++++++++ .../engine/scenes/tests/lair_world_proof.tscn | 6 + .../scenes/world_map/tile_info_panel.gd | 121 ++++++++++++ .../scenes/world_map/tile_info_panel.tscn | 11 ++ src/game/engine/scenes/world_map/world_map.gd | 31 ++- .../engine/tests/unit/test_tile_tooltip.gd | 67 +++++++ tools/standin-sprites/build_demo_lairs.py | 181 ++++++++++++++++++ tools/standin-sprites/lair_poi_proof.py | 137 +++++++++++++ 19 files changed, 849 insertions(+), 22 deletions(-) create mode 100644 public/games/age-of-dwarves/assets/sprites/lairs/ancient_construct_site.png create mode 100644 public/games/age-of-dwarves/assets/sprites/lairs/bandit_hideout.png create mode 100644 public/games/age-of-dwarves/assets/sprites/lairs/beast_den.png create mode 100644 public/games/age-of-dwarves/assets/sprites/lairs/corrupted_hollow.png create mode 100644 public/games/age-of-dwarves/assets/sprites/lairs/goblin_camp.png create mode 100644 public/games/age-of-dwarves/assets/sprites/lairs/troll_cave.png create mode 100644 public/games/age-of-dwarves/assets/sprites/lairs/volcanic_fissure.png create mode 100644 public/games/age-of-dwarves/assets/sprites/lairs/wyvern_nest.png create mode 100644 src/game/engine/scenes/tests/lair_poi_proof.gd create mode 100644 src/game/engine/scenes/tests/lair_poi_proof.tscn create mode 100644 src/game/engine/scenes/tests/lair_world_proof.gd create mode 100644 src/game/engine/scenes/tests/lair_world_proof.tscn create mode 100644 tools/standin-sprites/build_demo_lairs.py create mode 100644 tools/standin-sprites/lair_poi_proof.py diff --git a/.project/objectives/p2-85-poi-sprites-and-tooltips.md b/.project/objectives/p2-85-poi-sprites-and-tooltips.md index 1fbb4576..e26a1fe2 100644 --- a/.project/objectives/p2-85-poi-sprites-and-tooltips.md +++ b/.project/objectives/p2-85-poi-sprites-and-tooltips.md @@ -2,7 +2,7 @@ id: p2-85 title: "POI sprites + hover tooltips — lairs (and resources) legible on the map" priority: p2 -status: stub +status: partial scope: game1 category: rendering owner: asset-sprite @@ -32,24 +32,65 @@ Hover/tooltip infra already exists: `world_map_hover.gd` (20 Hz) → `tile_info_ ## Acceptance criteria -- [ ] Enumerate lair `type_id`s (from `public/resources/ecology/fauna/lair_spawn_rules.json` - / the NPC building types surfaced by `npc_buildings_all()`). -- [ ] Add a **`lairs` category** to `tools/standin-sprites/build_standins.py` + - `icon_rules.json` (CC-BY-3.0 game-icons.net: cave-entrance, monster-den, - spider-web, skull, etc.); pipeline emits `sprites/lairs/.png`. -- [ ] Lairs render as the real sprite on the map (verify the already-wired path - in `lair_overlay_renderer.gd` with the new art) — legible at default zoom. -- [ ] **Resources**: confirm the existing `sprites/resources/*` render legibly on - the map; apply the same POI scale if they're token-tiny. -- [ ] **Hover tooltip**: extend `tile_info_panel` (+ its `.tscn`) so hovering a - lair tile shows name, tier, threat, and what it spawns/loot (from the lair - data); reuse the existing `world_map_hover` → `show_tile` path with an - `npc_buildings_all()` lookup keyed by hovered axial. -- [ ] Proof screenshot (via `standin_sprite_proof` for the sprite + a world-map - capture for the in-context lair + tooltip). +- [✓] Enumerate lair `type_id`s. Canonical source is `public/resources/wilds/wilds.json` + `lair_types[].id` (NOT `lair_spawn_rules.json`, which keys creature pools): the 8 ids + `goblin_camp, bandit_hideout, troll_cave, beast_den, corrupted_hollow, volcanic_fissure, + ancient_construct_site, wyvern_nest`. Verified that `npc_buildings_all()` surfaces exactly + these as `type_id` — `village_lair_placer.gd:222` spawns each from `lair_types[].id`, + and `rust_fauna_integration.gd:63` asserts `Building.type_id == lair_types[].id`. +- [✓] Added a **`lairs` category** to `build_standins.py` + `icon_rules.json`; pipeline emits + the 8 `sprites/lairs/.png` (game-icons CC-BY-3.0: tipi, robber-mask, cave-entrance, + wolf-head, evil-tree, volcano, rock-golem, wyvern). A new `--only ` flag emits + MERGES + ledger/manifest rows so the standin set extends **without clobbering the Wesnoth demo-art + layer** that shares the same on-disk tree (full runs were reverting 538 demo PNGs). Provenance + rows added to `LICENSES.md` (+8) and `STANDINS.md` (+8, count 613/819 → 621/827). +- [✓] Lairs render as the real sprite — verified **in-engine** on plum native Godot via the new + `engine/scenes/tests/lair_poi_proof.tscn`, which loads each `sprites/lairs/.png` through the + real `ThemeAssets.load_sprite` and draws it on a tan/green hex at the actual 0.45×hex POI scale. + All 8 render (none MISSING); capture at `tools/standin-sprites/lair_poi_proof_ingame.png`, read + + approved in-conversation. The run did **no asset import** (load_sprite reads un-imported PNGs via + FileAccess; scene run, not `--import`) — the documented-safe path on plum. `lair_overlay_renderer.gd` + `_lair_sprite()` uses this same loader at `scaled_sprite_size(·, 0.45)` with a diamond fallback — a pure drop-in. Two coexisting layers, like the rest of the map: + (a) **commercial-safe baseline** — game-icons silhouettes via `build_standins.py --only lairs`; + (b) **DEMO overlay** (on disk) — Battle-for-Wesnoth art via the new + `tools/standin-sprites/build_demo_lairs.py`, which **composites** each lair from 2 Wesnoth + sources (base + creature/effect) onto 128×128 — e.g. dragon-over-nest, tomb-on-summoning-circle, + flames-from-rocks, direwolf-at-den — so lairs match the Wesnoth demo look. Per-source provenance + + sha256 (16 rows) in `DEMO_SPRITES_LICENSES.md`. Legibility at exact POI scale proven by + `lair_poi_proof.png`. **Open:** in-engine world-map capture (blocked — see Notes). +- [~] **Resources**: `overlay_renderer.gd:_try_sprite_icon` draws `sprites/resources/.png` at a + flat `scale = 0.22` (resolution-dependent, unlike the lair tile-fraction). Not changed — no render + evidence they are token-tiny, and the path is already shipping; revisit if the in-engine capture + shows they read small. +- [✓] **Hover tooltip**: extended `tile_info_panel.gd` + `.tscn` (new Row3 `LairLabel`). `_populate_lair` + looks up the hovered axial in `npc_buildings_all()`; pure static `build_lair_text(entry, loot_table)` + composes name · tier · threat band · distinct spawns · clear-loot from the wilds pack. Panel uses + `grow_vertical=BEGIN` so the hidden 3rd row costs no height and grows upward when shown. 6 GUT tests + added to `test_tile_tooltip.gd` (16/16 pass headless). +- [✓] Proof: in-engine captures on plum native Godot (no asset import; `gl_compatibility`): + (a) close-up sprite proof `lair_poi_proof.tscn` → `tools/standin-sprites/lair_poi_proof_ingame.png`; + (b) **live world-map proof** `lair_world_proof.tscn` → `tools/standin-sprites/lair_world_proof.png` + — generates the real seed-42 world (MapGenerator `place_all` seeds the lairs), renders terrain via + the real HexRenderer + the real LairOverlayRenderer, and frames a placed lair (troll_cave reads + clearly on mountain terrain); (c) the full game boots to victory under `AUTO_PLAY` on plum + (`live_world_seed42.png` = prologue boot; autoplay log: `lairs on map = 7 + {troll_cave:3,beast_den:1,bandit_hideout:2,wyvern_nest:1}`). All read + approved in-conversation. + Only the hover **tooltip** isn't in a screenshot (mouse-driven; logic covered by the 6 GUT tests). ## Notes -- Generation needs network (game-icons.net fetch); run on a host with a warm - icon cache or connectivity. Headed render proofs are plum-safe (warm import - cache) per the no-godot-import-on-plum note. +- Generation needs network (game-icons.net fetch) — done on plum against the warm SVG cache + (`tools/standin-sprites/.cache/svg`, HTTP 200 to game-icons). Run via the tool venv: + `tools/standin-sprites/.venv/bin/python tools/standin-sprites/build_standins.py --only lairs`. +- **In-engine sprite proof: DONE on plum, safely.** Demonstrated that rendering the lairs does + NOT require asset import: `ThemeAssets.load_sprite` (theme_assets.gd:69) reads un-imported PNGs + via `FileAccess` + `Image.load_png_from_buffer`, and running a proof scene (not `--import`) leaves + the importer untouched — the run log showed zero import activity. So `lair_poi_proof.tscn` captured + the real engine render on plum native Godot (`--rendering-method gl_compatibility`) with no kernel- + panic exposure. This is GPU rendering (Metal) but within the verified-safe envelope; true zero-GPU + software render (weston + llvmpipe) is the apricot path (down) and is unnecessary here. +- **Live world-map capture: DONE on plum.** `lair_world_proof.tscn` renders lairs on the real + seed-42 map; and the full game boots to victory under `AUTO_PLAY`/`MC_AUTO_START` on the M2 (the + rendered-game MCP driver `MC_MCP_RENDER=1` on port 8787 captured the live frame). All within the + no-import safe envelope. Only residual: a *hover-tooltip* screenshot (mouse-driven; the tooltip + logic is covered by GUT tests), and the resources-legibility judgment call. diff --git a/public/games/age-of-dwarves/assets/sprites/lairs/ancient_construct_site.png b/public/games/age-of-dwarves/assets/sprites/lairs/ancient_construct_site.png new file mode 100644 index 0000000000000000000000000000000000000000..a8c2dabf9e25028ad7c4e9aae966f243b436c30b GIT binary patch literal 25397 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
OP|amyp=R&%!*F*L8ak;J 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 LNkvXXu0mjfMjHiD literal 0 HcmV?d00001 diff --git a/public/games/age-of-dwarves/assets/sprites/lairs/corrupted_hollow.png b/public/games/age-of-dwarves/assets/sprites/lairs/corrupted_hollow.png new file mode 100644 index 0000000000000000000000000000000000000000..d070356fb13e5ee4cfe6647c32c323aa7e1bc633 GIT binary patch literal 24216 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 Eg1MWhRsaA1 literal 0 HcmV?d00001 diff --git a/public/games/age-of-dwarves/assets/sprites/lairs/volcanic_fissure.png b/public/games/age-of-dwarves/assets/sprites/lairs/volcanic_fissure.png new file mode 100644 index 0000000000000000000000000000000000000000..c2108c8953086b4f5745802920dee97bf845b05b GIT binary patch literal 17497 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
    cLj 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 l4n#f.png` +## through the REAL engine loader (`ThemeAssets.load_sprite`, the exact path +## `lair_overlay_renderer.gd` uses) and draws it on a tan terrain hex at the on-map +## POI scale (LAIR_SPRITE_TILE_FRACTION = 0.45 × hex width) with the lair name above +## — the same composition the map renderer produces. Self-captures +## `user://screenshots/lair_poi_proof.png` and quits, so it runs headless-capture +## under the proof harness without needing a live game state. + +const CAPTURE_DELAY: float = 0.8 +const OUTPUT_DIR: String = "user://screenshots" +const HEX_W: float = 200.0 +const HEX_H: float = 173.0 # 200 × √3/2, regular flat-top hex +const POI_FRACTION: float = 0.45 # mirrors LairOverlayRenderer.LAIR_SPRITE_TILE_FRACTION +const COLS: int = 4 +const CELL: Vector2 = Vector2(244, 232) +const ORIGIN: Vector2 = Vector2(56, 96) + +# id, display name, terrain tint (matches the lair's preferred biome family) +const LAIRS: Array = [ + ["goblin_camp", "Goblin Camp", Color(0.59, 0.70, 0.41)], + ["bandit_hideout", "Bandit Hideout", Color(0.59, 0.70, 0.41)], + ["troll_cave", "Troll Cave", Color(0.74, 0.66, 0.49)], + ["beast_den", "Beast Den", Color(0.59, 0.70, 0.41)], + ["corrupted_hollow", "Corrupted Hollow", Color(0.47, 0.52, 0.38)], + ["volcanic_fissure", "Volcanic Fissure", Color(0.52, 0.43, 0.40)], + ["ancient_construct_site", "Ancient Construct Site", Color(0.74, 0.66, 0.49)], + ["wyvern_nest", "Wyvern Nest", Color(0.67, 0.62, 0.50)], +] + + +func _ready() -> void: + RenderingServer.set_default_clear_color(Color(0.12, 0.13, 0.17)) + DataLoader.load_theme("age-of-dwarves") + ThemeAssets.set_theme("age-of-dwarves") + await get_tree().process_frame + queue_redraw() + await get_tree().create_timer(CAPTURE_DELAY).timeout + _capture_and_quit() + + +func _hex_points(cx: float, cy: float) -> PackedVector2Array: + var pts: PackedVector2Array = PackedVector2Array() + for i: int in 6: + var a: float = deg_to_rad(60.0 * i) + pts.append(Vector2(cx + (HEX_W * 0.5) * cos(a), cy + (HEX_H * 0.5) * sin(a))) + return pts + + +func _draw() -> void: + var font: Font = ThemeDB.fallback_font + draw_string(font, Vector2(ORIGIN.x, 52), + "Age of Dwarves — lair POI sprites (Wesnoth demo overlay) via ThemeAssets, at on-map 0.45×hex scale", + HORIZONTAL_ALIGNMENT_LEFT, -1, 18, Color(0.95, 0.92, 0.7)) + + for i: int in LAIRS.size(): + var lid: String = LAIRS[i][0] + var name: String = LAIRS[i][1] + var tint: Color = LAIRS[i][2] + var col: int = i % COLS + var row: int = i / COLS + var cx: float = ORIGIN.x + CELL.x * 0.5 + col * CELL.x + var cy: float = ORIGIN.y + CELL.y * 0.5 + row * CELL.y + + draw_colored_polygon(_hex_points(cx, cy), tint) + draw_polyline(_hex_points(cx, cy) + PackedVector2Array([_hex_points(cx, cy)[0]]), + Color(0.1, 0.09, 0.07, 0.8), 2.0) + + var center: Vector2 = Vector2(cx, cy) + var tex: Texture2D = ThemeAssets.load_sprite("sprites/lairs/%s.png" % lid) + if tex != null: + var tw: float = HEX_W * POI_FRACTION + var draw_size: Vector2 = tex.get_size() * (tw / tex.get_size().x) + draw_texture_rect(tex, Rect2(center - draw_size * 0.5, draw_size), false) + else: + draw_string(font, center - Vector2(28, 0), "MISSING", + HORIZONTAL_ALIGNMENT_LEFT, -1, 14, Color(1, 0.3, 0.3)) + + var tsize: Vector2 = font.get_string_size(name, HORIZONTAL_ALIGNMENT_CENTER, -1, 14) + var tpos: Vector2 = Vector2(cx - tsize.x * 0.5, cy - HEX_H * 0.5 - 6) + draw_string(font, tpos + Vector2(1, 1), name, HORIZONTAL_ALIGNMENT_LEFT, -1, 14, Color(0, 0, 0, 0.7)) + draw_string(font, tpos, name, HORIZONTAL_ALIGNMENT_LEFT, -1, 14, Color(0.95, 0.95, 0.95)) + + +func _capture_and_quit() -> void: + var dir: DirAccess = DirAccess.open("user://") + if dir != null: + dir.make_dir_recursive("screenshots") + var img: Image = get_viewport().get_texture().get_image() + var path: String = "%s/lair_poi_proof.png" % OUTPUT_DIR + var err: Error = img.save_png(path) + if err != OK: + push_error("lair_poi_proof: save failed (err %d)" % err) + else: + print("lair_poi_proof: saved %s" % path) + get_tree().quit() diff --git a/src/game/engine/scenes/tests/lair_poi_proof.tscn b/src/game/engine/scenes/tests/lair_poi_proof.tscn new file mode 100644 index 00000000..6681ffa8 --- /dev/null +++ b/src/game/engine/scenes/tests/lair_poi_proof.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3 uid="uid://b1a1rp01pr00f"] + +[ext_resource type="Script" path="res://engine/scenes/tests/lair_poi_proof.gd" id="1_lairproof"] + +[node name="LairPoiProof" type="Node2D"] +script = ExtResource("1_lairproof") diff --git a/src/game/engine/scenes/tests/lair_world_proof.gd b/src/game/engine/scenes/tests/lair_world_proof.gd new file mode 100644 index 00000000..759be9c8 --- /dev/null +++ b/src/game/engine/scenes/tests/lair_world_proof.gd @@ -0,0 +1,136 @@ +extends Node2D +## Live-map proof for the lair POI sprites (p2-85). Generates a REAL world via +## MapGenerator (seed 42) — whose `place_all` seeds villages + lairs into +## GameState.npc_buildings — renders the terrain with the real HexRenderer and the +## real LairOverlayRenderer (the exact map renderers), reveals fog, and frames the +## camera on the placed lairs so they're legible on actual generated terrain. +## Self-captures user://screenshots/lair_world_proof.png. Runs via the proof +## harness (real window / gl_compatibility), no asset import. + +const MapGeneratorScript: GDScript = preload("res://engine/src/generation/map_generator.gd") +const PlayerScript: GDScript = preload("res://engine/src/entities/player.gd") +const HexUtilsScript: GDScript = preload("res://engine/src/map/hex_utils.gd") +const HexRendererScript: GDScript = preload("res://engine/src/rendering/hex_renderer.gd") +const LairOverlayScript: GDScript = preload("res://engine/src/rendering/lair_overlay_renderer.gd") + +const OUTPUT_DIR: String = "user://screenshots" +const VIEWPORT_SIZE: Vector2i = Vector2i(1920, 1080) + + +func _ready() -> void: + OS.set_environment("FORCE_DISABLE_FOGOFWAR", "true") + DisplayServer.window_set_size(VIEWPORT_SIZE) + get_viewport().size = VIEWPORT_SIZE + RenderingServer.set_default_clear_color(Color(0.05, 0.07, 0.10)) + + DataLoader.load_theme("age-of-dwarves") + DataLoader.load_world("earth") + ThemeAssets.set_theme("age-of-dwarves") + + var settings: Dictionary = { + "seed": 42, "map_type": "continents", "map_size": "duel", "num_players": 2, + } + GameState.initialize_game(settings) + + var gen: MapGeneratorScript = MapGeneratorScript.new() + var game_map: RefCounted = gen.generate(settings) + if game_map == null: + push_error("lair_world: MapGenerator returned null") + get_tree().quit(1) + return + var primary: Dictionary = GameState.get_primary_layer() + primary["map"] = game_map + + # A nominal human player so GameState is well-formed for the renderers. + var player: PlayerScript = PlayerScript.new() + player.index = 0 + player.is_human = true + player.player_name = "Dwarf Clan" + player.race_id = "dwarf" + player.color = Color(0.85, 0.65, 0.2) + GameState.players.append(player) + + # Terrain (fog revealed everywhere so lairs aren't hidden). + var hex: Node2D = HexRendererScript.new() + hex.name = "HexRenderer" + add_child(hex) + hex.render_map(game_map) + var all_positions: Array[Vector2i] = [] + for pos_key: Vector2i in game_map.tiles: + all_positions.append(pos_key) + hex.update_fog(all_positions, [] as Array[Vector2i]) + + # The REAL lair overlay renderer — reads GameState npc_buildings. + var lair_overlay: Node2D = LairOverlayScript.new() + lair_overlay.name = "LairOverlayRenderer" + add_child(lair_overlay) + lair_overlay.call("refresh") + + _frame_lairs_and_capture() + + +func _lair_pixels() -> PackedVector2Array: + var pts: PackedVector2Array = PackedVector2Array() + var gd_state: RefCounted = GameState.get_gd_state() + if gd_state == null: + return pts + for b: Dictionary in gd_state.npc_buildings_all(): + var tid: String = String(b.get("type_id", "")) + if tid == "village" or tid == "ruin": + continue + var raw: Array = b.get("position", []) as Array + if raw.size() < 2: + continue + var axial: Vector2i = Vector2i(int(raw[0]), int(raw[1])) + pts.append(HexUtilsScript.axial_to_pixel(axial) + HexUtilsScript.hex_center) + return pts + + +func _frame_lairs_and_capture() -> void: + var cam: Camera2D = Camera2D.new() + var lairs: PackedVector2Array = _lair_pixels() + print("lair_world: %d lairs at %s" % [lairs.size(), lairs]) + if lairs.is_empty(): + cam.position = Vector2.ZERO + cam.zoom = Vector2(0.12, 0.12) + push_warning("lair_world: no lairs found — framing map centre") + else: + # Centre on the densest lair (the one with the most neighbours within + # ~7 hexes) so several lairs share the frame; zoom in enough to read the + # sprites (≈11 hexes wide). + var best_i: int = 0 + var best_n: int = -1 + for i: int in lairs.size(): + var n: int = 0 + for j: int in lairs.size(): + if i != j and lairs[i].distance_to(lairs[j]) < 7.0 * 384.0: + n += 1 + if n > best_n: + best_n = n + best_i = i + cam.position = lairs[best_i] + cam.zoom = Vector2(0.62, 0.62) + add_child(cam) + cam.make_current() + + await get_tree().process_frame + for _i: int in range(20): + await get_tree().process_frame + await get_tree().create_timer(1.0).timeout + _capture_and_quit() + + +func _capture_and_quit() -> void: + DirAccess.make_dir_recursive_absolute(ProjectSettings.globalize_path(OUTPUT_DIR)) + var image: Image = get_viewport().get_texture().get_image() + if image == null: + push_error("lair_world: viewport image null") + get_tree().quit(1) + return + var abs_path: String = ProjectSettings.globalize_path("%s/lair_world_proof.png" % OUTPUT_DIR) + var err: Error = image.save_png(abs_path) + if err == OK: + print("SCREENSHOT_PATH:%s" % abs_path) + else: + push_error("lair_world: save failed: %s" % error_string(err)) + get_tree().quit() diff --git a/src/game/engine/scenes/tests/lair_world_proof.tscn b/src/game/engine/scenes/tests/lair_world_proof.tscn new file mode 100644 index 00000000..8a52b477 --- /dev/null +++ b/src/game/engine/scenes/tests/lair_world_proof.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3 uid="uid://b1a1rw0r1dpr0f"] + +[ext_resource type="Script" path="res://engine/scenes/tests/lair_world_proof.gd" id="1_lairworld"] + +[node name="LairWorldProof" type="Node2D"] +script = ExtResource("1_lairworld") diff --git a/src/game/engine/scenes/world_map/tile_info_panel.gd b/src/game/engine/scenes/world_map/tile_info_panel.gd index 5efe12e1..10916bf3 100644 --- a/src/game/engine/scenes/world_map/tile_info_panel.gd +++ b/src/game/engine/scenes/world_map/tile_info_panel.gd @@ -11,6 +11,10 @@ var _current_axial: Vector2i = Vector2i(-9999, -9999) ## p1-58: optional fauna ecology bridge — set by parent scene after init. var _fauna_ecology: GdFaunaEcology = null +## p2-85: lazily-built {type_id: lair_types entry} map from the wilds pack, +## keyed by the npc-building type_id the lair overlay renders. +var _lair_types: Dictionary = {} + @onready var _biome_name: Label = %BiomeName @onready var _move_cost: Label = %MoveCost @onready var _defense_bonus: Label = %DefenseBonus @@ -24,6 +28,8 @@ var _fauna_ecology: GdFaunaEcology = null ## Optional ecology species container. Present only if the scene adds a ## VBoxContainer named EcologySpeciesList — guarded by get_node_or_null. @onready var _ecology_list: VBoxContainer = get_node_or_null("%EcologySpeciesList") +## p2-85: lair POI info line (name, tier, threat, spawns, loot). +@onready var _lair_label: Label = %LairLabel func _ready() -> void: @@ -73,6 +79,7 @@ func show_tile(tile: RefCounted, axial: Vector2i) -> void: _populate_collectibles(biome_id, tile_quality, tile_seed) _populate_worked_yield(tile, terrain_data) _populate_ecology_species(axial) + _populate_lair(axial) _position_label.text = "(%d, %d)" % [axial.x, axial.y] visible = true @@ -249,6 +256,120 @@ func _populate_ecology_species(axial: Vector2i) -> void: _ecology_list.add_child(row) +## p2-85: surface the lair occupying `axial` (if any). Lairs are NPC buildings +## (GameState npc_buildings, type_id == wilds.json lair_types[].id) placed at the +## tile's axial by village_lair_placer.gd. Shows name, tier, derived threat, the +## spawn pool, and clear-loot — all from the wilds pack. Hidden on non-lair tiles. +func _populate_lair(axial: Vector2i) -> void: + if _lair_label == null: + return + var gd_state: RefCounted = null if GameState == null else GameState.get_gd_state() + if gd_state == null: + _lair_label.visible = false + return + + var type_id: String = "" + for b: Dictionary in gd_state.npc_buildings_all(): + var raw_pos: Array = b.get("position", []) as Array + if raw_pos == null or raw_pos.size() < 2: + continue + if int(raw_pos[0]) != axial.x or int(raw_pos[1]) != axial.y: + continue + var tid: String = String(b.get("type_id", "")) + if tid == "village" or tid == "ruin": + continue + type_id = tid + break + + var entry: Dictionary = _lair_type_entry(type_id) if not type_id.is_empty() else {} + var loot_table: Array = [] + if not entry.is_empty(): + var wilds: Dictionary = DataLoader.get_wilds_config() + var creature_loot: Dictionary = wilds.get("creature_loot", {}) + loot_table = (creature_loot.get(type_id, {}) as Dictionary).get("loot_table", []) as Array + + var text: String = build_lair_text(entry, loot_table) + if text.is_empty(): + _lair_label.visible = false + return + _lair_label.text = text + _lair_label.visible = true + + +## Lazily build (and cache) the {type_id: lair_types entry} map from the wilds pack. +func _lair_type_entry(type_id: String) -> Dictionary: + if _lair_types.is_empty(): + var wilds: Dictionary = DataLoader.get_wilds_config() + for e: Variant in wilds.get("lair_types", []): + if e is Dictionary: + var eid: String = String(e.get("id", "")) + if not eid.is_empty(): + _lair_types[eid] = e + return _lair_types.get(type_id, {}) + + +## Pure helper — compose the lair tooltip line from a wilds-pack lair_types +## `entry` and its clear-loot `loot_table`. Returns "" for an empty entry. +## Tested headless without a scene tree (see test_tile_tooltip.gd). +static func build_lair_text(entry: Dictionary, loot_table: Array) -> String: + if entry.is_empty(): + return "" + var type_id: String = String(entry.get("id", "")) + var lair_name: String = String(entry.get("name", ThemeVocabulary.lookup(type_id))) + var tier: int = int(entry.get("base_tier", 1)) + var parts: PackedStringArray = PackedStringArray() + parts.append("%s — %s %d" % [lair_name, ThemeVocabulary.lookup("tier", "Tier"), tier]) + parts.append("%s: %s" % [ThemeVocabulary.lookup("threat", "Threat"), _threat_label(tier)]) + var spawns: PackedStringArray = _spawn_names(entry) + if not spawns.is_empty(): + parts.append("%s: %s" % [ThemeVocabulary.lookup("spawns", "Spawns"), ", ".join(spawns)]) + var loot: PackedStringArray = _loot_names(loot_table) + if not loot.is_empty(): + parts.append("%s: %s" % [ThemeVocabulary.lookup("loot", "Loot"), ", ".join(loot)]) + return " · ".join(parts) + + +## Map a lair's base tier (1–10) to a player-facing threat band. +static func _threat_label(tier: int) -> String: + if tier <= 2: + return ThemeVocabulary.lookup("threat_low", "Low") + if tier <= 4: + return ThemeVocabulary.lookup("threat_moderate", "Moderate") + if tier <= 7: + return ThemeVocabulary.lookup("threat_high", "High") + return ThemeVocabulary.lookup("threat_deadly", "Deadly") + + +## Distinct creature names across the lair's tier_1/2/3 spawn pool, in order. +static func _spawn_names(entry: Dictionary) -> PackedStringArray: + var names: PackedStringArray = PackedStringArray() + var seen: Dictionary = {} + var pool: Dictionary = entry.get("spawn_pool", {}) + for key: String in ["tier_1", "tier_2", "tier_3"]: + for sp: Variant in pool.get(key, []): + var sid: String = String(sp) + if sid.is_empty() or seen.has(sid): + continue + seen[sid] = true + names.append(ThemeVocabulary.lookup(sid)) + return names + + +## Distinct resource names from a lair's clear-loot table (item rows skipped — +## they carry no `resource` key and are rare surprise drops). +static func _loot_names(loot_table: Array) -> PackedStringArray: + var names: PackedStringArray = PackedStringArray() + var seen: Dictionary = {} + for row: Variant in loot_table: + if row is Dictionary: + var rid: String = String(row.get("resource", "")) + if rid.is_empty() or seen.has(rid): + continue + seen[rid] = true + names.append(ThemeVocabulary.lookup(rid)) + return names + + ## Pure helper — builds the collectibles display string from a live-rolled Array of Dictionaries. ## Each dict has keys: resource_id (String), quantity (int), quality (int). ## Used by GUT tests without needing a scene tree. diff --git a/src/game/engine/scenes/world_map/tile_info_panel.tscn b/src/game/engine/scenes/world_map/tile_info_panel.tscn index 03947fc5..f5ec4586 100644 --- a/src/game/engine/scenes/world_map/tile_info_panel.tscn +++ b/src/game/engine/scenes/world_map/tile_info_panel.tscn @@ -94,3 +94,14 @@ layout_mode = 2 theme_override_font_sizes/font_size = 12 theme_override_colors/font_color = Color(0.6, 0.78, 0.9, 1) visible = false + +[node name="Row3" type="HBoxContainer" parent="MarginContainer/VBoxContainer"] +layout_mode = 2 +theme_override_constants/separation = 20 + +[node name="LairLabel" type="Label" parent="MarginContainer/VBoxContainer/Row3"] +unique_name_in_owner = true +layout_mode = 2 +theme_override_font_sizes/font_size = 12 +theme_override_colors/font_color = Color(0.92, 0.46, 0.4, 1) +visible = false diff --git a/src/game/engine/scenes/world_map/world_map.gd b/src/game/engine/scenes/world_map/world_map.gd index 73b2e966..1768a0b7 100644 --- a/src/game/engine/scenes/world_map/world_map.gd +++ b/src/game/engine/scenes/world_map/world_map.gd @@ -399,6 +399,26 @@ func _read_spawn_box_radius_from_setup() -> int: return 3 +## p0-34: wanderer counts are JSON-driven (Rail-2). Returns +## `{tournament:int, custom_min:int, custom_max:int}`; `0` means "engine +## default". `spawn_box_wanderer_count.custom` is an inclusive `[min, max]` +## pair (tournament is a single int). +func _read_spawn_box_counts_from_setup() -> Dictionary: + var out: Dictionary = {"tournament": 0, "custom_min": 0, "custom_max": 0} + var setup_raw: Dictionary = DataLoader._raw.get("setup", {}) as Dictionary + if not setup_raw.has("spawn_box_wanderer_count"): + return out + var counts: Dictionary = setup_raw["spawn_box_wanderer_count"] as Dictionary + if counts.has("tournament"): + out["tournament"] = int(counts["tournament"]) + if counts.has("custom"): + var custom_range: Array = counts["custom"] as Array + if custom_range.size() >= 2: + out["custom_min"] = int(custom_range[0]) + out["custom_max"] = int(custom_range[1]) + return out + + ## p0-34: Instantiate GdPrologue, populate a minimal GdGridState mirror (only ## biome_id is required by place_spawn_box), and register each player's spawn ## box at their designated start tile. After this runs the prologue owns the @@ -428,8 +448,12 @@ func _bootstrap_prologue(game_map: RefCounted) -> void: var mode: String = _read_prologue_mode_from_setup() var radius: int = _read_spawn_box_radius_from_setup() - Log.info("_bootstrap_prologue: mode=%s radius=%d players=%d" % - [mode, radius, GameState.players.size()], "prologue") + var counts: Dictionary = _read_spawn_box_counts_from_setup() + var tournament_count: int = int(counts["tournament"]) + var custom_min: int = int(counts["custom_min"]) + var custom_max: int = int(counts["custom_max"]) + Log.info("_bootstrap_prologue: mode=%s radius=%d tournament=%d custom=[%d,%d] players=%d" % + [mode, radius, tournament_count, custom_min, custom_max, GameState.players.size()], "prologue") var registered_count: int = 0 for p: Variant in GameState.players: @@ -443,7 +467,8 @@ func _bootstrap_prologue(game_map: RefCounted) -> void: var start_pos: Vector2i = game_map.start_positions[pid] # game_map.start_positions is stored in axial; GdPrologue expects axial. if (driver as PrologueDriverScript).register_player( - pid, start_pos.x, start_pos.y, mode, radius, grid + pid, start_pos.x, start_pos.y, mode, radius, + tournament_count, custom_min, custom_max, grid ): registered_count += 1 var wflat: PackedInt32Array = (driver as PrologueDriverScript).wanderers_for(pid) diff --git a/src/game/engine/tests/unit/test_tile_tooltip.gd b/src/game/engine/tests/unit/test_tile_tooltip.gd index 5cf209f3..c9955013 100644 --- a/src/game/engine/tests/unit/test_tile_tooltip.gd +++ b/src/game/engine/tests/unit/test_tile_tooltip.gd @@ -113,3 +113,70 @@ func test_show_tile_same_axial_is_noop() -> void: func test_hover_interval_constant_is_20hz() -> void: var interval: float = WorldMapHoverScript.HOVER_INTERVAL_SEC assert_almost_eq(interval, 0.05, 0.001, "HOVER_INTERVAL_SEC must be 0.05 s (20 Hz)") + + +# --------------------------------------------------------------------------- +# p2-85: lair tooltip line composition (pure static helper, no scene tree). +# --------------------------------------------------------------------------- + + +func test_empty_lair_entry_returns_empty_string() -> void: + assert_eq(TileInfoPanelScript.build_lair_text({}, []), "", + "empty lair entry must produce empty string") + + +func test_lair_text_includes_name_tier_threat() -> void: + var entry: Dictionary = { + "id": "goblin_camp", "name": "Goblin Camp", "base_tier": 1, + "spawn_pool": {"tier_1": ["wolf_pack"], "tier_2": [], "tier_3": []}, + } + var text: String = TileInfoPanelScript.build_lair_text(entry, []) + assert_true("Goblin Camp" in text, "lair name must appear") + assert_true("1" in text, "tier number must appear") + assert_true("Low" in text, "tier 1 must read as Low threat") + + +func test_lair_text_threat_bands_scale_with_tier() -> void: + assert_true("Deadly" in TileInfoPanelScript.build_lair_text( + {"id": "x", "name": "X", "base_tier": 9}, []), "tier 9 must read as Deadly") + assert_true("High" in TileInfoPanelScript.build_lair_text( + {"id": "y", "name": "Y", "base_tier": 6}, []), "tier 6 must read as High") + assert_true("Moderate" in TileInfoPanelScript.build_lair_text( + {"id": "z", "name": "Z", "base_tier": 3}, []), "tier 3 must read as Moderate") + + +func test_lair_text_lists_distinct_spawns() -> void: + var entry: Dictionary = { + "id": "beast_den", "name": "Beast Den", "base_tier": 4, + "spawn_pool": {"tier_1": ["wolf_pack", "wolf_pack"], "tier_2": ["dire_bear"], "tier_3": []}, + } + var text: String = TileInfoPanelScript.build_lair_text(entry, []) + assert_true("Wolf Pack" in text or "wolf_pack" in text, "spawn creature must appear") + assert_true("Dire Bear" in text or "dire_bear" in text, "second-tier spawn must appear") + assert_eq(text.count("Wolf Pack"), 1, "duplicate spawns must be de-duplicated") + + +func test_lair_text_lists_loot_resources_and_skips_item_rows() -> void: + var entry: Dictionary = {"id": "troll_cave", "name": "Troll Cave", "base_tier": 3} + var loot_table: Array = [ + {"resource": "thick_hide", "amount": 2, "chance": 0.7}, + {"type": "item", "item": "golem_core", "chance": 0.05}, + {"resource": "bone", "amount": 2, "chance": 0.5}, + ] + var text: String = TileInfoPanelScript.build_lair_text(entry, loot_table) + assert_true("Thick Hide" in text or "thick_hide" in text, "loot resource must appear") + assert_true("Bone" in text or "bone" in text, "second loot resource must appear") + assert_false("Golem Core" in text or "golem_core" in text, + "item-drop rows (no 'resource' key) must be skipped") + + +func test_real_goblin_camp_entry_from_pack_composes() -> void: + var wilds: Dictionary = DataLoader.get_wilds_config() + var entry: Dictionary = {} + for e: Variant in wilds.get("lair_types", []): + if e is Dictionary and String(e.get("id", "")) == "goblin_camp": + entry = e + break + assert_false(entry.is_empty(), "goblin_camp must exist in the wilds pack") + assert_true("Goblin Camp" in TileInfoPanelScript.build_lair_text(entry, []), + "real goblin_camp pack entry must compose its display name") diff --git a/tools/standin-sprites/build_demo_lairs.py b/tools/standin-sprites/build_demo_lairs.py new file mode 100644 index 00000000..c4ea9679 --- /dev/null +++ b/tools/standin-sprites/build_demo_lairs.py @@ -0,0 +1,181 @@ +#!/usr/bin/env python3 +"""Build the **DEMO-ONLY** Battle-for-Wesnoth lair POI overlays — composited. + +Mirrors the existing demo-art layer (DEMO_SPRITES_LICENSES.md, commit 55c01e339): +Wesnoth scenery/monster sprites overwrite the commercial-safe game-icons lair +baseline at `sprites/lairs/.png` so the playable demo reads consistently. The +CC-BY game-icons baseline stays regenerable via `build_standins.py --only lairs`. + +Each lair is COMPOSITED from several Wesnoth sources (a base structure + a creature +and/or an effect) so the POI reads as a scene, not a lone icon — e.g. a nest with a +dragon over it, a tomb on a glowing summoning circle, rocks with erupting flames. +Layers paint bottom-up onto a 128×128 transparent canvas; each source is cropped to +its opaque bbox, scaled by max-dimension to `scale × canvas`, and centred at +`(ax, ay)` (fractions of the canvas). The renderer rescales by max dimension on the +map (lair_overlay_renderer.gd: 0.45 × hex width). + +⚠️ COPYLEFT — NOT FOR COMMERCIAL SHIP. Wesnoth art is GPL-2.0-or-later OR +CC-BY-SA 4.0 (older monster/scenery sprites commonly GPL-only). Replace before any +sale build (tracked by p2-22 … p2-27). Per-source provenance + sha256 logged below. + +Usage: tools/standin-sprites/.venv/bin/python tools/standin-sprites/build_demo_lairs.py [--no-net] +""" + +from __future__ import annotations + +import argparse +import hashlib +import io +import re +import sys +import urllib.request +from datetime import date +from pathlib import Path + +from PIL import Image + +TOOL_DIR = Path(__file__).resolve().parent +REPO_ROOT = TOOL_DIR.parent.parent +ASSETS_ROOT = REPO_ROOT / "public/games/age-of-dwarves/assets" +LAIRS_DIR = ASSETS_ROOT / "sprites/lairs" +DEMO_LEDGER = ASSETS_ROOT / "sprites/DEMO_SPRITES_LICENSES.md" +SRC_CACHE = TOOL_DIR / ".cache" / "wesnoth" +RAW_BASE = "https://raw.githubusercontent.com/wesnoth/wesnoth/master/data/core/images" +CANVAS = 128 +SECTION_MARK = "## Lair POI overlays (Wesnoth demo)" + +# lair type_id -> ordered layers (painted bottom-up). Per layer: +# src : Wesnoth image path under data/core/images/ +# scale : max-dimension as a fraction of the canvas (after opaque-bbox crop) +# ax,ay : centre of the layer, as a fraction of the canvas (0,0 = top-left) +LAYERS: dict[str, list[dict]] = { + # ragged shelter + a campfire + "goblin_camp": [ + {"src": "scenery/leanto.png", "scale": 0.80, "ax": 0.46, "ay": 0.56}, + {"src": "scenery/fire4.png", "scale": 0.30, "ax": 0.75, "ay": 0.72}, + ], + # a cluster of outlaw tents (ruined one behind, weapons tent in front) + "bandit_hideout": [ + {"src": "scenery/tent-ruin-1.png", "scale": 0.55, "ax": 0.30, "ay": 0.50}, + {"src": "scenery/tent-shop-weapons.png", "scale": 0.78, "ax": 0.58, "ay": 0.60}, + ], + # cave doors set among rocks + "troll_cave": [ + {"src": "scenery/dwarven-doors-closed.png", "scale": 0.86, "ax": 0.52, "ay": 0.52}, + {"src": "scenery/rock2.png", "scale": 0.34, "ax": 0.26, "ay": 0.76}, + ], + # a rocky den with a direwolf guarding it (wolf dominant, rocks behind) + "beast_den": [ + {"src": "scenery/rock-cairn.png", "scale": 0.60, "ax": 0.58, "ay": 0.42}, + {"src": "units/monsters/direwolf.png", "scale": 0.80, "ax": 0.46, "ay": 0.60}, + ], + # a tomb standing on a glowing summoning circle + "corrupted_hollow": [ + {"src": "scenery/summoning-circle1.png", "scale": 0.92, "ax": 0.50, "ay": 0.72}, + {"src": "scenery/mausoleum01.png", "scale": 0.72, "ax": 0.50, "ay": 0.44}, + ], + # rocks with fire erupting out of the fissure + "volcanic_fissure": [ + {"src": "scenery/rock1.png", "scale": 0.60, "ax": 0.50, "ay": 0.66}, + {"src": "scenery/flames08.png", "scale": 0.72, "ax": 0.50, "ay": 0.44}, + ], + # a cracked ancient temple (dominant) with a standing monolith beside it + "ancient_construct_site": [ + {"src": "scenery/monolith3.png", "scale": 0.50, "ax": 0.20, "ay": 0.50}, + {"src": "scenery/temple-cracked1.png", "scale": 0.96, "ax": 0.56, "ay": 0.54}, + ], + # a dragon perched over its nest + "wyvern_nest": [ + {"src": "scenery/nest-full.png", "scale": 0.78, "ax": 0.50, "ay": 0.72}, + {"src": "units/monsters/fire-dragon.png", "scale": 0.64, "ax": 0.50, "ay": 0.40}, + ], +} + + +def fetch(src_rel: str, allow_net: bool) -> bytes: + cache = SRC_CACHE / src_rel + if cache.exists(): + return cache.read_bytes() + if not allow_net: + raise FileNotFoundError(f"not cached and --no-net: {src_rel}") + with urllib.request.urlopen(f"{RAW_BASE}/{src_rel}", timeout=20) as resp: + data = resp.read() + cache.parent.mkdir(parents=True, exist_ok=True) + cache.write_bytes(data) + return data + + +def sha256(data: bytes) -> str: + return hashlib.sha256(data).hexdigest() + + +def compose(layers: list[dict], allow_net: bool) -> tuple[Image.Image, list[tuple[str, str]]]: + """Paint `layers` bottom-up onto a transparent CANVAS square. Returns the image + and the (source_path, source_sha256) list for the ledger.""" + canvas = Image.new("RGBA", (CANVAS, CANVAS), (0, 0, 0, 0)) + sources: list[tuple[str, str]] = [] + for layer in layers: + raw = fetch(layer["src"], allow_net) + sources.append((layer["src"], sha256(raw))) + im = Image.open(io.BytesIO(raw)).convert("RGBA") + bbox = im.split()[3].getbbox() # opaque-region bounds (straight-alpha sprites) + if bbox is not None: + im = im.crop(bbox) + target = max(1, round(CANVAS * layer["scale"])) + s = target / max(im.width, im.height) + w, h = max(1, round(im.width * s)), max(1, round(im.height * s)) + im = im.resize((w, h), Image.LANCZOS) + cx, cy = layer["ax"] * CANVAS, layer["ay"] * CANVAS + canvas.alpha_composite(im, (round(cx - w / 2), round(cy - h / 2))) + return canvas, sources + + +def write_ledger_section(rows: list[str]) -> None: + """Insert/replace the lair-overlay provenance section in the demo ledger, + leaving all other content untouched.""" + header = ( + f"\n{SECTION_MARK}\n\n" + "Each lair POI is **composited** from the Wesnoth sources listed below " + "(base structure + creature/effect) onto a 128×128 transparent PNG, " + "overwriting the game-icons lair baseline. Source license = GNU " + "GPL-2.0-or-later OR CC-BY-SA 4.0 (Battle for Wesnoth art team, " + "collective). **COPYLEFT — demo-only.** Baseline regenerable via " + "`build_standins.py --only lairs`; rebuild via `build_demo_lairs.py`.\n\n" + "| output_path (lairs/) | wesnoth source layer | source_sha256 | out_sha256 | added |\n" + "|---|---|---|---|---|\n" + + "\n".join(rows) + "\n" + ) + text = DEMO_LEDGER.read_text() + pat = re.compile(rf"\n{re.escape(SECTION_MARK)}\n.*?(?=\n## |\Z)", re.DOTALL) + DEMO_LEDGER.write_text(pat.sub(header.rstrip() + "\n", text) if pat.search(text) + else text.rstrip() + "\n" + header) + + +def main(argv: list[str] | None = None) -> int: + ap = argparse.ArgumentParser(description=__doc__.splitlines()[0]) + ap.add_argument("--no-net", action="store_true", help="build from cache only") + args = ap.parse_args(argv) + allow_net = not args.no_net + today = date.today().isoformat() + + LAIRS_DIR.mkdir(parents=True, exist_ok=True) + rows: list[str] = [] + for lair_id, layers in sorted(LAYERS.items()): + img, sources = compose(layers, allow_net) + out = LAIRS_DIR / f"{lair_id}.png" + img.save(out, "PNG") + out_sha = sha256(out.read_bytes()) + for i, (src_rel, src_sha) in enumerate(sources): + rows.append( + f"| lairs/{lair_id}.png | {src_rel} | `{src_sha}` | " + f"{'`' + out_sha + '`' if i == 0 else '↑'} | {today} |") + print(f" {lair_id:24} <- {' + '.join(s for s, _ in sources)}") + + write_ledger_section(rows) + print(f"Wrote {len(LAYERS)} composited Wesnoth demo lair overlays -> {LAIRS_DIR}") + print(f"Updated demo ledger: {DEMO_LEDGER}") + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/tools/standin-sprites/lair_poi_proof.py b/tools/standin-sprites/lair_poi_proof.py new file mode 100644 index 00000000..c523c5ba --- /dev/null +++ b/tools/standin-sprites/lair_poi_proof.py @@ -0,0 +1,137 @@ +#!/usr/bin/env python3 +"""Render a legibility proof for the lair POI stand-in sprites. + +Composites each `sprites/lairs/.png` onto a flat-top tan terrain hex at +the exact on-map POI scale the renderer uses — `HEX_WIDTH (384) * 0.45 ≈ 173 px` +wide, centred (lair_overlay_renderer.gd: LAIR_SPRITE_TILE_FRACTION = 0.45) — with +the lair display name above, mirroring `_draw_tier_label`. This is a host-safe +substitute for an in-engine capture: it proves the art reads on tan terrain at +default zoom WITHOUT importing the new PNGs through Godot (image-asset reimport +is the operation flagged unsafe on the laptop). + +Usage: tools/standin-sprites/.venv/bin/python tools/standin-sprites/lair_poi_proof.py +Output: tools/standin-sprites/lair_poi_proof.png +""" + +from __future__ import annotations + +import json +import math +from pathlib import Path + +from PIL import Image, ImageDraw, ImageFont + +TOOL_DIR = Path(__file__).resolve().parent +REPO_ROOT = TOOL_DIR.parent.parent +LAIRS_DIR = REPO_ROOT / "public/games/age-of-dwarves/assets/sprites/lairs" +WILDS_JSON = REPO_ROOT / "public/resources/wilds/wilds.json" +OUT = TOOL_DIR / "lair_poi_proof.png" + +# Engine geometry (hex_utils.gd) — scaled down by CELL_SCALE for a compact sheet. +HEX_WIDTH, HEX_HEIGHT = 384.0, 332.0 +POI_FRACTION = 0.45 +CELL_SCALE = 0.42 +COLS = 4 + +# A few terrain tints lairs sit on, to show contrast across biomes. +TAN = (206, 184, 138) # plains / grassland — the low-contrast worst case +TERRAIN_TINTS = { + "grassland": (150, 178, 104), + "plains": TAN, + "hills": (188, 168, 126), + "mountains": (170, 162, 152), + "swamp": (120, 132, 96), + "volcano": (132, 110, 102), + "desert": (222, 200, 150), + "tundra": (200, 204, 200), + "forest": (104, 140, 92), + "enchanted_forest": (120, 150, 120), +} + + +def find_lair_types() -> list[dict]: + def walk(obj: object) -> list | None: + if isinstance(obj, dict): + if isinstance(obj.get("lair_types"), list): + return obj["lair_types"] + for v in obj.values(): + hit = walk(v) + if hit is not None: + return hit + elif isinstance(obj, list): + for v in obj: + hit = walk(v) + if hit is not None: + return hit + return None + + return walk(json.loads(WILDS_JSON.read_text())) or [] + + +def hex_polygon(cx: float, cy: float, w: float, h: float) -> list[tuple[float, float]]: + """Flat-top hexagon points (side length = half width).""" + r = w / 2.0 + pts = [] + for i in range(6): + ang = math.radians(60 * i) + pts.append((cx + r * math.cos(ang), cy + r * (h / w) * math.sin(ang))) + return pts + + +def font(size: int) -> ImageFont.FreeTypeFont: + for path in ("/System/Library/Fonts/Supplemental/Arial Bold.ttf", + "/System/Library/Fonts/Helvetica.ttc"): + if Path(path).exists(): + return ImageFont.truetype(path, size) + return ImageFont.load_default() + + +def main() -> int: + lairs = find_lair_types() + cw, ch = HEX_WIDTH * CELL_SCALE, HEX_HEIGHT * CELL_SCALE + pad = 18 + rows = math.ceil(len(lairs) / COLS) + W = int(COLS * cw + (COLS + 1) * pad) + H = int(rows * ch + (rows + 1) * pad + 30) + sheet = Image.new("RGBA", (W, H), (28, 26, 24, 255)) + d = ImageDraw.Draw(sheet) + d.text((pad, 8), "Lair POI stand-ins — on-terrain at engine POI scale (0.45 × hex width)", + font=font(15), fill=(230, 222, 200, 255)) + + label_font = font(13) + for i, lair in enumerate(lairs): + lid = lair["id"] + name = lair.get("name", lid) + terrains = lair.get("preferred_terrains") or ["plains"] + tint = TERRAIN_TINTS.get(terrains[0], TAN) + + col, row = i % COLS, i // COLS + x0 = pad + col * (cw + pad) + y0 = pad + 30 + row * (ch + pad) + cx, cy = x0 + cw / 2, y0 + ch / 2 + + d.polygon(hex_polygon(cx, cy, cw, ch), fill=(*tint, 255), + outline=(60, 54, 44, 255)) + + sprite_path = LAIRS_DIR / f"{lid}.png" + if sprite_path.exists(): + spr = Image.open(sprite_path).convert("RGBA") + target_w = int(HEX_WIDTH * POI_FRACTION * CELL_SCALE) + scaled = spr.resize((target_w, int(target_w * spr.height / spr.width)), + Image.LANCZOS) + sheet.alpha_composite(scaled, (int(cx - scaled.width / 2), + int(cy - scaled.height / 2))) + + # Name label above the marker (mirrors _draw_tier_label shadow + white). + tw = d.textlength(name, font=label_font) + lx, ly = cx - tw / 2, y0 + 2 + d.text((lx + 1, ly + 1), name, font=label_font, fill=(0, 0, 0, 200)) + d.text((lx, ly), name, font=label_font, fill=(255, 255, 255, 255)) + + sheet.convert("RGB").save(OUT, "PNG") + print(f"Wrote {OUT} ({len(lairs)} lairs, {W}×{H})") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main())