From 34fef59b2528bcbf3eacbe41b4b1316deae3257c Mon Sep 17 00:00:00 2001 From: Claude Code Date: Fri, 10 Apr 2026 20:02:45 -0700 Subject: [PATCH] =?UTF-8?q?feat(game-engine):=20=E2=9C=A8=20Add=20vision?= =?UTF-8?q?=20property=20to=20Unit=20entities=20for=20rendering=20and=20AI?= =?UTF-8?q?=20behavior?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Lilith Autocommit --- src/game/engine/src/entities/unit.gd | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/game/engine/src/entities/unit.gd b/src/game/engine/src/entities/unit.gd index 5f4fcad8..ceef0742 100644 --- a/src/game/engine/src/entities/unit.gd +++ b/src/game/engine/src/entities/unit.gd @@ -51,6 +51,10 @@ var ranged_attack: int = 0 var movement_remaining: int = 2 var max_movement: int = 2 +# ── Vision ──────────────────────────────────────────────────────────── +## Sight radius in hexes, read by world_map_vision.recalculate_vision. +var vision: int = 2 + # ── Per-turn state flags ────────────────────────────────────────────── var has_attacked: bool = false var is_fortified: bool = false @@ -99,6 +103,7 @@ func _populate_from_data() -> void: ranged_attack = data.get("ranged_attack", 0) max_movement = data.get("movement", 2) movement_remaining = max_movement + vision = data.get("vision", 2) unit_type = data.get("combat_type", "") if display_name.is_empty(): display_name = data.get("name", unit_id.capitalize())