From 3a8e3edc03cd21a5955a0e2b637ae3ed7778bdac Mon Sep 17 00:00:00 2001 From: gamer147 Date: Sun, 5 Apr 2026 22:58:30 -0400 Subject: [PATCH] Room system added --- assets/sprites/aux_terrain.BMP | Bin 0 -> 1648694 bytes assets/sprites/aux_terrain.BMP.import | 40 +++ .../plans/2026-04-05-room-system.md | 320 ++++++++++++++++++ .../specs/2026-04-05-room-system-design.md | 56 +++ docs/todo.txt | 3 +- nodes/combat_map.gd | 52 +++ nodes/player_controller.gd | 5 +- nodes/strategy_phase.gd | 25 ++ resources/resource_definitions/map_layout.gd | 72 ++++ .../resource_definitions/map_layout.gd.uid | 1 + resources/resource_definitions/room.gd | 4 + resources/resource_definitions/room.gd.uid | 1 + room_wall_example.webp | Bin 0 -> 13464 bytes room_wall_example.webp.import | 40 +++ scenes/main_menu.tscn | 9 - 15 files changed, 615 insertions(+), 13 deletions(-) create mode 100644 assets/sprites/aux_terrain.BMP create mode 100644 assets/sprites/aux_terrain.BMP.import create mode 100644 docs/superpowers/plans/2026-04-05-room-system.md create mode 100644 docs/superpowers/specs/2026-04-05-room-system-design.md create mode 100644 resources/resource_definitions/map_layout.gd create mode 100644 resources/resource_definitions/map_layout.gd.uid create mode 100644 resources/resource_definitions/room.gd create mode 100644 resources/resource_definitions/room.gd.uid create mode 100644 room_wall_example.webp create mode 100644 room_wall_example.webp.import diff --git a/assets/sprites/aux_terrain.BMP b/assets/sprites/aux_terrain.BMP new file mode 100644 index 0000000000000000000000000000000000000000..0df42874849df1b86bf0aac6a0118522ecb4c3e8 GIT binary patch literal 1648694 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 **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Add a room/wall system where rooms are tile groups, walls are derived from room boundaries, openings are explicit doorways, and movement is blocked by walls. + +**Architecture:** Two new Resources (`Room`, `MapLayout`) define the room data. `MapLayout` computes walls from room boundaries and exposes passability queries. `CombatMap` renders walls on tile edges and uses `MapLayout` for movement checks. `PlayerController` is updated to check edge passability instead of tile-level wall checks. + +**Tech Stack:** Godot 4.6 / GDScript + +--- + +### Task 1: Create Room Resource + +**Files:** +- Create: `resources/resource_definitions/room.gd` + +- [ ] **Step 1: Create the Room resource** + +```gdscript +class_name Room extends Resource + +@export var id: int +@export var tiles: Array[Vector2i] +``` + +- [ ] **Step 2: Verify it loads in the editor** + +Open Godot, create a new Resource, confirm `Room` appears as a type and `id`/`tiles` fields are visible in the inspector. + +--- + +### Task 2: Create MapLayout Resource + +**Files:** +- Create: `resources/resource_definitions/map_layout.gd` + +- [ ] **Step 1: Create the MapLayout resource with room data and opening storage** + +```gdscript +class_name MapLayout extends Resource + +@export var rooms: Array[Room] +@export var openings: Array[Vector2i] +## Openings are stored as a flat array of pairs: [from1, to1, from2, to2, ...]. +## Each consecutive pair of Vector2i values represents a bidirectional doorway +## between two adjacent tiles in different rooms. +``` + +- [ ] **Step 2: Add the tile-to-room lookup cache and initialization** + +```gdscript +var _tile_room_map: Dictionary = {} +var _opening_set: Dictionary = {} + + +func initialize() -> void: + _tile_room_map.clear() + _opening_set.clear() + for room in rooms: + for tile in room.tiles: + _tile_room_map[tile] = room + for i in range(0, openings.size(), 2): + var a := openings[i] + var b := openings[i + 1] + _opening_set[_edge_key(a, b)] = true + + +static func _edge_key(a: Vector2i, b: Vector2i) -> String: + if a < b: + return "%d,%d-%d,%d" % [a.x, a.y, b.x, b.y] + return "%d,%d-%d,%d" % [b.x, b.y, a.x, a.y] +``` + +- [ ] **Step 3: Add the public API methods** + +```gdscript +func is_tile_valid(tile: Vector2i) -> bool: + return _tile_room_map.has(tile) + + +func get_room_at(tile: Vector2i) -> Room: + return _tile_room_map.get(tile, null) + + +func is_passable(from: Vector2i, to: Vector2i) -> bool: + if not is_tile_valid(from) or not is_tile_valid(to): + return false + var room_from: Room = _tile_room_map[from] + var room_to: Room = _tile_room_map[to] + if room_from == room_to: + return true + return _opening_set.has(_edge_key(from, to)) + + +func get_walls() -> Array: + ## Returns an array of [Vector2i, Vector2i] pairs representing wall edges. + ## A wall exists where a room tile borders void or a different room (without an opening). + var walls: Array = [] + var directions := [Vector2i.RIGHT, Vector2i.DOWN, Vector2i.LEFT, Vector2i.UP] + var visited_edges: Dictionary = {} + + for room in rooms: + for tile in room.tiles: + for dir in directions: + var neighbor := tile + dir + var key := _edge_key(tile, neighbor) + if visited_edges.has(key): + continue + visited_edges[key] = true + + var neighbor_room: Room = _tile_room_map.get(neighbor, null) + if neighbor_room == room: + continue + # Neighbor is void or different room — wall unless opening + if not _opening_set.has(key): + walls.append([tile, neighbor]) + return walls +``` + +- [ ] **Step 4: Verify it loads in the editor** + +Open Godot, create a new Resource, confirm `MapLayout` appears as a type and `rooms`/`openings` fields are visible. + +--- + +### Task 3: Integrate MapLayout into CombatMap + +**Files:** +- Modify: `nodes/combat_map.gd` + +- [ ] **Step 1: Add MapLayout export and initialization** + +Add after the existing `@export var tile_set: DLTileset` line in `combat_map.gd`: + +```gdscript +@export var map_layout: MapLayout +``` + +Add at the end of the existing `_ready()` function: + +```gdscript + if map_layout: + map_layout.initialize() +``` + +- [ ] **Step 2: Add passability and validity methods that delegate to MapLayout** + +Add these methods to `combat_map.gd`: + +```gdscript +func is_tile_passable(from: Vector2i, to: Vector2i) -> bool: + if map_layout: + return map_layout.is_passable(from, to) + # Fallback: no room system, use legacy wall check + return not is_wall(to) + + +func is_tile_valid(coords: Vector2i) -> bool: + if map_layout: + return map_layout.is_tile_valid(coords) + # Fallback: no room system, any non-wall tile is valid + return not is_wall(coords) +``` + +- [ ] **Step 3: Add wall rendering from MapLayout** + +Add this method to `combat_map.gd`: + +```gdscript +func draw_room_walls() -> void: + if not map_layout: + return + var walls := map_layout.get_walls() + for wall in walls: + var from_world := coords_to_world(wall[0]) + Vector2(TILE_SIZE / 2, TILE_SIZE / 2) + var to_world := coords_to_world(wall[1]) + Vector2(TILE_SIZE / 2, TILE_SIZE / 2) + var midpoint := (from_world + to_world) / 2 + var diff := to_world - from_world + var wall_dir := Vector2(-diff.y, diff.x).normalized() + var half_len := TILE_SIZE / 2 + + var line := Line2D.new() + line.add_point(midpoint - wall_dir * half_len) + line.add_point(midpoint + wall_dir * half_len) + line.width = 4.0 + line.default_color = Color(0.6, 0.5, 0.4) + add_child(line) +``` + +This draws a line segment on the border between each pair of tiles that has a wall. The line is perpendicular to the direction between the two tiles and spans the full tile edge. + +- [ ] **Step 4: Add floor rendering from MapLayout and call everything from _ready()** + +Add this method to `combat_map.gd`: + +```gdscript +func load_from_layout() -> void: + if not map_layout: + return + for room in map_layout.rooms: + for tile in room.tiles: + draw_floor(tile) +``` + +Update the `_ready()` addition so it renders floors then walls: + +```gdscript + if map_layout: + map_layout.initialize() + load_from_layout() + draw_room_walls() +``` + +--- + +### Task 4: Update PlayerController to Use Edge-Based Passability + +**Files:** +- Modify: `nodes/player_controller.gd` + +- [ ] **Step 1: Update movement check in `_physics_process`** + +In `player_controller.gd`, find the movement blocking check in `_physics_process` (around line 121-123): + +```gdscript + if dl_map.is_wall(grid_coords): + _goal_pos = _selected_unit.position + return +``` + +Replace with: + +```gdscript + var current_coords := dl_map.world_to_coords(_selected_unit.position) + if not dl_map.is_tile_passable(current_coords, grid_coords): + _goal_pos = _selected_unit.position + return +``` + +- [ ] **Step 2: Update click destination check in `_handle_left_click`** + +In `player_controller.gd`, find the wall check in `_handle_left_click` (around line 142-143): + +```gdscript + if dl_map.is_wall(grid_coords): + return +``` + +Replace with: + +```gdscript + if not dl_map.is_tile_valid(grid_coords): + return +``` + +This prevents clicking on void tiles as a destination. The step-by-step movement in `_physics_process` handles wall/opening checks as the unit walks. + +--- + +### Task 5: Create a Test Map Layout + +**Files:** +- Modify: `nodes/strategy_phase.gd` + +- [ ] **Step 1: Add test layout setup in strategy_phase.gd** + +Add at the top of `_ready()` in `strategy_phase.gd`, before existing code: + +```gdscript + # -- Test room layout (remove once map editor exists) -- + var room_a := Room.new() + room_a.id = 0 + room_a.tiles = [ + Vector2i(0, 0), Vector2i(1, 0), Vector2i(2, 0), + Vector2i(0, 1), Vector2i(1, 1), Vector2i(2, 1), + Vector2i(0, 2), Vector2i(1, 2), Vector2i(2, 2), + ] + + var room_b := Room.new() + room_b.id = 1 + room_b.tiles = [ + Vector2i(3, 0), Vector2i(4, 0), Vector2i(5, 0), + Vector2i(3, 1), Vector2i(4, 1), Vector2i(5, 1), + Vector2i(3, 2), Vector2i(4, 2), Vector2i(5, 2), + ] + + var layout := MapLayout.new() + layout.rooms = [room_a, room_b] + # Opening between (2,1) in room_a and (3,1) in room_b + layout.openings = [Vector2i(2, 1), Vector2i(3, 1)] + + combat_map.map_layout = layout + # -- End test room layout -- +``` + +- [ ] **Step 2: Run the game and verify** + +Run the strategy phase scene. Expected: +- Two 3x3 rooms appear side by side +- Walls are drawn on all outer edges and on the room-to-room border +- The middle row (y=1) has no wall between tiles (2,1) and (3,1) — that's the opening +- A unit can walk through the opening but not through the walls +- Clicking on void tiles (outside rooms) does nothing + +--- + +### Task 6: Review All Changes + +**Files:** +- All modified files + +- [ ] **Step 1: Verify completeness** + +Confirm: +- `Room` resource has `id` and `tiles` +- `MapLayout` resource has `rooms`, `openings`, `initialize()`, `is_passable()`, `is_tile_valid()`, `get_room_at()`, `get_walls()` +- `CombatMap` has `map_layout` export, `is_tile_passable()`, `is_tile_valid()`, `draw_room_walls()`, `load_from_layout()` +- `PlayerController` uses `is_tile_passable()` for movement and `is_tile_valid()` for click validation +- Legacy `is_wall()` still works as fallback when no `map_layout` is set diff --git a/docs/superpowers/specs/2026-04-05-room-system-design.md b/docs/superpowers/specs/2026-04-05-room-system-design.md new file mode 100644 index 0000000..1cabf98 --- /dev/null +++ b/docs/superpowers/specs/2026-04-05-room-system-design.md @@ -0,0 +1,56 @@ +# Room System Design + +## Overview + +A room system for battle maps where rooms are defined as groups of tiles, walls exist on tile borders (not as tiles), and openings are explicitly marked doorways between rooms. Tiles outside rooms are impassable void. + +## Data Model + +### Room (Resource) + +- `id: int` — unique room identifier +- `tiles: Array[Vector2i]` — tile coordinates belonging to this room + +### MapLayout (Resource) + +- `rooms: Array[Room]` — all rooms on the map +- `openings: Array` — list of tile-coordinate pairs (`[Vector2i, Vector2i]`) representing bidirectional doorways between adjacent tiles in different rooms + +### Derived Wall Computation + +A wall exists on a tile edge when: + +1. One side is a room tile and the other is void (not in any room), OR +2. The two sides belong to different rooms AND the edge is not in the openings list + +### MapLayout API + +- `get_walls() -> Array` — computes all wall edge segments from room and opening data +- `is_passable(from: Vector2i, to: Vector2i) -> bool` — returns whether movement is allowed between two adjacent tiles (false if wall, false if either tile is void) +- `is_tile_valid(tile: Vector2i) -> bool` — returns whether a tile belongs to any room +- `get_room_at(tile: Vector2i) -> Room` — returns the room a tile belongs to, or null + +## Integration with Movement + +- `CombatMap` holds a reference to the `MapLayout` +- Before allowing a unit to move from tile A to tile B, the movement system calls `MapLayout.is_passable(a, b)` +- If there is a wall on that edge (and no opening), movement is blocked +- Tiles not belonging to any room are impassable — `is_tile_valid()` returns false for void tiles +- Future pathfinding uses the same `is_passable` check as its neighbor filter + +## Wall Rendering + +- `CombatMap` iterates over computed wall edges from `MapLayout.get_walls()` +- Each wall edge is defined by two adjacent tile coordinates — the wall is drawn on the border between them +- Openings have no wall drawn +- Initial implementation uses simple `Line2D` segments or sprite strips on tile edges +- Can be replaced with proper art assets later + +## Design Decisions + +- **Rooms are the primary data, walls are derived** — single source of truth, no sync issues +- **Openings are explicit** — all room boundaries are walls by default; doorways are punched explicitly as tile-coordinate pairs +- **Openings are always bidirectional** +- **No room metadata beyond ID** — tile ownership stays tile-level per existing system +- **Void tiles are impassable** — no hallway/corridor concept; all walkable tiles belong to a room +- **Room data is independent of rendering** — clean for future map editor serialization diff --git a/docs/todo.txt b/docs/todo.txt index 12c8789..211c44e 100644 --- a/docs/todo.txt +++ b/docs/todo.txt @@ -1,7 +1,6 @@ -* Debug menu on F1, right now just include quick scene swapping -* Finish buttons on dialogue scene * Reogranize files * Singletons named 'XXXServer' * Dialogue scene command system (ShowText, ShowSprite, MoveSprite, PlaySound, ChangeBackground, etc) +* Finish Dialogue Scene (fast forward, auto, history functionality, etc) * Setup room system (everything is unpassable, carve out rooms, walls automatic, specify connections between rooms on tiles) * Basic map editor (test map data will be harder to craft the more we add) \ No newline at end of file diff --git a/nodes/combat_map.gd b/nodes/combat_map.gd index 155bc7f..1dca244 100644 --- a/nodes/combat_map.gd +++ b/nodes/combat_map.gd @@ -2,6 +2,7 @@ class_name CombatMap extends Node2D @export var tile_set: DLTileset +@export var map_layout: MapLayout @onready var tile_map: TileMapLayer = %TerrainLayer @onready var highlight_map: GridOverlay = %OverlayLayer @@ -18,6 +19,8 @@ func _ready() -> void: for entry in _pending_units: _apply_deploy(entry.unit, entry.coords) _pending_units.clear() + if map_layout: + apply_layout(map_layout) func snap_to_grid(pos: Vector2) -> Vector2: @@ -79,3 +82,52 @@ func remove_unit(unit: Unit) -> void: func target_tile(coords: Vector2i) -> void: highlight_map.target_tile(coords) + + +func apply_layout(layout: MapLayout) -> void: + map_layout = layout + map_layout.initialize() + load_from_layout() + draw_room_walls() + + +func is_tile_passable(from: Vector2i, to: Vector2i) -> bool: + if map_layout: + return map_layout.is_passable(from, to) + # Fallback: no room system, use legacy wall check + return not is_wall(to) + + +func is_tile_valid(coords: Vector2i) -> bool: + if map_layout: + return map_layout.is_tile_valid(coords) + # Fallback: no room system, any non-wall tile is valid + return not is_wall(coords) + + +func draw_room_walls() -> void: + if not map_layout: + return + var walls := map_layout.get_walls() + for wall in walls: + var from_world := coords_to_world(wall[0]) + Vector2(TILE_SIZE / 2, TILE_SIZE / 2) + var to_world := coords_to_world(wall[1]) + Vector2(TILE_SIZE / 2, TILE_SIZE / 2) + var midpoint := (from_world + to_world) / 2 + var diff := to_world - from_world + var wall_dir := Vector2(-diff.y, diff.x).normalized() + var half_len := TILE_SIZE / 2 + + var line := Line2D.new() + line.add_point(midpoint - wall_dir * half_len) + line.add_point(midpoint + wall_dir * half_len) + line.width = 4.0 + line.default_color = Color(0.6, 0.5, 0.4) + add_child(line) + + +func load_from_layout() -> void: + if not map_layout: + return + for room in map_layout.rooms: + for tile in room.tiles: + draw_floor(tile) diff --git a/nodes/player_controller.gd b/nodes/player_controller.gd index b171aa0..d032344 100644 --- a/nodes/player_controller.gd +++ b/nodes/player_controller.gd @@ -118,7 +118,8 @@ func _physics_process(delta: float) -> void: var next_pos := _selected_unit.position + dir * dl_map.TILE_SIZE var grid_coords := dl_map.world_to_coords(next_pos) - if dl_map.is_wall(grid_coords): + var current_coords := dl_map.world_to_coords(_selected_unit.position) + if not dl_map.is_tile_passable(current_coords, grid_coords): _goal_pos = _selected_unit.position return @@ -139,7 +140,7 @@ func _handle_left_click(screen_pos: Vector2) -> void: elif _selected_unit: var snapped_pos := dl_map.snap_to_grid(world_pos) var grid_coords := dl_map.world_to_coords(world_pos) - if dl_map.is_wall(grid_coords): + if not dl_map.is_tile_valid(grid_coords): return _goal_pos = snapped_pos get_viewport().set_input_as_handled() diff --git a/nodes/strategy_phase.gd b/nodes/strategy_phase.gd index 03fb65f..167ce8d 100644 --- a/nodes/strategy_phase.gd +++ b/nodes/strategy_phase.gd @@ -7,6 +7,31 @@ class_name StrategyPhase extends Node2D @onready var camera: CameraController = $Camera2D func _ready() -> void: + # -- Test room layout (remove once map editor exists) -- + var room_a := Room.new() + room_a.id = 0 + room_a.tiles = [ + Vector2i(0, 0), Vector2i(1, 0), Vector2i(2, 0), + Vector2i(0, 1), Vector2i(1, 1), Vector2i(2, 1), + Vector2i(0, 2), Vector2i(1, 2), Vector2i(2, 2), + ] + + var room_b := Room.new() + room_b.id = 1 + room_b.tiles = [ + Vector2i(3, 0), Vector2i(4, 0), Vector2i(5, 0), + Vector2i(3, 1), Vector2i(4, 1), Vector2i(5, 1), + Vector2i(3, 2), Vector2i(4, 2), Vector2i(5, 2), + ] + + var layout := MapLayout.new() + layout.rooms = [room_a, room_b] + # Opening between (2,1) in room_a and (3,1) in room_b + layout.openings = [Vector2i(2, 1), Vector2i(3, 1)] + + combat_map.apply_layout(layout) + # -- End test room layout -- + player_controller.combat_requested.connect(_on_combat_requested) player_controller.mouse_grid_changed.connect(_on_mouse_grid_changed) player_controller.camera_drag.connect(camera.apply_drag) diff --git a/resources/resource_definitions/map_layout.gd b/resources/resource_definitions/map_layout.gd new file mode 100644 index 0000000..c679b34 --- /dev/null +++ b/resources/resource_definitions/map_layout.gd @@ -0,0 +1,72 @@ +class_name MapLayout extends Resource + +@export var rooms: Array[Room] +## Openings are stored as a flat array of pairs: [from1, to1, from2, to2, ...]. +## Each consecutive pair of Vector2i values represents a bidirectional doorway +## between two adjacent tiles in different rooms. +@export var openings: Array[Vector2i] + +var _tile_room_map: Dictionary = {} +var _opening_set: Dictionary = {} + + +func initialize() -> void: + assert(openings.size() % 2 == 0, "Openings must be provided as pairs of Vector2i") + _tile_room_map.clear() + _opening_set.clear() + for room in rooms: + for tile in room.tiles: + _tile_room_map[tile] = room + for i in range(0, openings.size(), 2): + var a := openings[i] + var b := openings[i + 1] + _opening_set[_edge_key(a, b)] = true + + +static func _edge_key(a: Vector2i, b: Vector2i) -> String: + if a < b: + return "%d,%d-%d,%d" % [a.x, a.y, b.x, b.y] + return "%d,%d-%d,%d" % [b.x, b.y, a.x, a.y] + + +func is_tile_valid(tile: Vector2i) -> bool: + return _tile_room_map.has(tile) + + +func get_room_at(tile: Vector2i) -> Room: + return _tile_room_map.get(tile, null) + + +func is_passable(from: Vector2i, to: Vector2i) -> bool: + if not is_tile_valid(from) or not is_tile_valid(to): + return false + var room_from: Room = _tile_room_map[from] + var room_to: Room = _tile_room_map[to] + if room_from == room_to: + return true + return _opening_set.has(_edge_key(from, to)) + + +func get_walls() -> Array: + ## Returns an array of [Vector2i, Vector2i] pairs representing wall edges. + ## A wall exists where a room tile borders void or a different room (without an opening). + var walls: Array = [] + var directions := [Vector2i.RIGHT, Vector2i.DOWN, Vector2i.LEFT, Vector2i.UP] + var visited_edges: Dictionary = {} + + for room in rooms: + for tile in room.tiles: + for dir in directions: + var neighbor: Vector2i = tile + dir + var key := _edge_key(tile, neighbor) + if visited_edges.has(key): + continue + visited_edges[key] = true + + var neighbor_room: Room = _tile_room_map.get(neighbor, null) + if neighbor_room == room: + continue + # Neighbor is void or different room — wall unless opening + if not _opening_set.has(key): + walls.append([tile, neighbor]) + return walls diff --git a/resources/resource_definitions/map_layout.gd.uid b/resources/resource_definitions/map_layout.gd.uid new file mode 100644 index 0000000..bfb73ee --- /dev/null +++ b/resources/resource_definitions/map_layout.gd.uid @@ -0,0 +1 @@ +uid://dj7qfdelq4ja4 diff --git a/resources/resource_definitions/room.gd b/resources/resource_definitions/room.gd new file mode 100644 index 0000000..67f4f2a --- /dev/null +++ b/resources/resource_definitions/room.gd @@ -0,0 +1,4 @@ +class_name Room extends Resource + +@export var id: int +@export var tiles: Array[Vector2i] diff --git a/resources/resource_definitions/room.gd.uid b/resources/resource_definitions/room.gd.uid new file mode 100644 index 0000000..bf704f3 --- /dev/null +++ b/resources/resource_definitions/room.gd.uid @@ -0,0 +1 @@ +uid://ja34p4vpwamd diff --git a/room_wall_example.webp b/room_wall_example.webp new file mode 100644 index 0000000000000000000000000000000000000000..3ad0cecbacb37ee9bf6ee239e0921f3c1ce1b1fd GIT binary patch literal 13464 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� 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 void: await get_tree().create_timer(0.2).timeout var combat_instance := COMBAT_SCENE.instantiate() var combat_map: CombatMap = combat_instance.find_child(\"CombatMap\") - combat_map.load_map(MAP_LAYOUT) - var player_unit: Unit = UNIT_SCENE.instantiate() player_unit.stat_template = UnitStats.new(50) player_unit.info_template = UnitInfo.new()