Good place
This commit is contained in:
@@ -33,7 +33,9 @@ This pass re-checks the 15 issues from the prior review and surfaces new finding
|
||||
|
||||
## High Priority
|
||||
|
||||
### A. `apply_proposal` does not validate unit references
|
||||
### A. `apply_proposal` does not validate unit references — **Resolved 2026-04-07**
|
||||
|
||||
`apply_proposal` now early-returns if either unit reference is invalid, and re-checks both before the counterattack branch.
|
||||
|
||||
**File:** `nodes/combat_system.gd:129-148`
|
||||
|
||||
@@ -109,7 +111,9 @@ Both systems independently iterate `get_nodes_in_group("units")`, hook `node_add
|
||||
|
||||
---
|
||||
|
||||
### H. Two combat entry points; `process_combat` is dead
|
||||
### H. Two combat entry points; `process_combat` is dead — **Resolved 2026-04-07**
|
||||
|
||||
`process_combat()` deleted from `combat_system.gd`. Only `create_proposal` → `apply_proposal` remains.
|
||||
|
||||
**File:** `nodes/combat_system.gd:114-127`
|
||||
|
||||
@@ -151,7 +155,9 @@ Both renderers create one `Sprite2D` per fog tile / per wall half-segment / per
|
||||
|
||||
---
|
||||
|
||||
### L. `target_tile` highlight updates while combat UI is open
|
||||
### L. `target_tile` highlight updates while combat UI is open — **Not a bug (2026-04-07)**
|
||||
|
||||
On re-reading `player_controller.gd:44-46`, `_process` already early-returns when `input_disabled` is true. Original finding was based on a misread; no code change needed.
|
||||
|
||||
**File:** `nodes/player_controller.gd:44-52`
|
||||
|
||||
@@ -179,7 +185,9 @@ The function is called but no-ops. The TODO is fine for now, but the matching at
|
||||
|
||||
---
|
||||
|
||||
### O. `WallRenderer._draw_tile_walls` match arms are identical
|
||||
### O. `WallRenderer._draw_tile_walls` match arms are identical — **Resolved 2026-04-07**
|
||||
|
||||
Collapsed to a single `for edge in edges: _build_edge_segments(...)` loop as part of finding J's refactor.
|
||||
|
||||
**File:** `nodes/wall_renderer.gd:103-112`
|
||||
|
||||
@@ -219,7 +227,9 @@ Rename to `display_name` or `unit_name` to disambiguate from `Node.name` / `Obje
|
||||
|
||||
---
|
||||
|
||||
### S. `CombatMap.is_wall` and `is_tile_valid` have legacy fallbacks
|
||||
### S. `CombatMap.is_wall` and `is_tile_valid` have legacy fallbacks — **Resolved 2026-04-07**
|
||||
|
||||
Fallback branches removed from `is_tile_passable` and `is_tile_valid`; both now `assert(map_layout != null)`. The now-dead `is_wall()` helper was deleted.
|
||||
|
||||
**File:** `nodes/combat_map.gd:97-108`
|
||||
|
||||
@@ -247,22 +257,22 @@ Findings 2 and 9 from the prior review are the largest gameplay gap. Until that
|
||||
|
||||
| # | Finding | Priority | Effort |
|
||||
|---|---------|----------|--------|
|
||||
| A | `apply_proposal` no `is_instance_valid` | High | Small |
|
||||
| A | `apply_proposal` no `is_instance_valid` | ~~High~~ | **Done** |
|
||||
| B | No allegiance check | High | Small |
|
||||
| C | `queue_free` dangling refs | High | Small |
|
||||
| D | `atk_range` not enforced pre-request | High | Small |
|
||||
| E | Greedy axis movement, no pathfinding | Medium | Medium |
|
||||
| F | Duplicated unit-tracking | Medium | Medium |
|
||||
| G | `remove_unit` leaks signal connections | Medium | Small |
|
||||
| H | Dead `process_combat` | Medium | Trivial |
|
||||
| H | Dead `process_combat` | ~~Medium~~ | **Done** |
|
||||
| I | O(n) unit lookup | Medium | Small |
|
||||
| J | Sprite-per-tile renderers | ~~Medium~~ | **Done** |
|
||||
| K | `MapLayout.initialize` not guarded | Medium | Small |
|
||||
| L | Highlight updates while modal open | Medium | Trivial |
|
||||
| L | Highlight updates while modal open | ~~Medium~~ | **Not a bug** |
|
||||
| M | Inline scripts in `unit.tscn` | Medium | Small |
|
||||
| N | `_draw_outer_corners` stub | Low | Medium |
|
||||
| O | Redundant `match` in wall renderer | Low | Trivial |
|
||||
| O | Redundant `match` in wall renderer | ~~Low~~ | **Done** |
|
||||
| P | Magic `FOG_RECT` constant | Low | Trivial |
|
||||
| Q | Jolt 3D in 2D project | Low | Trivial |
|
||||
| R | `UnitInfo.name` shadows | Low | Trivial |
|
||||
| S | Dead fallback paths in `CombatMap` | Low | Trivial |
|
||||
| S | Dead fallback paths in `CombatMap` | ~~Low~~ | **Done** |
|
||||
|
||||
Reference in New Issue
Block a user