fix(client): address PR #22 review — 3 critical bugs, 2 warnings, 8 suggestions

Critical fixes:
- fog_state: guard _compute_bounds() against all-invalid tiles (negative Rect2i crash)
- fog_shader: read Camera2D zoom dynamically instead of hardcoded Vector2(2,2)
- world_radial: set custom_minimum_size in _ready() from spoke geometry

Warnings:
- fog.gdshader: tighten PERIPHERAL_LOW 0.15→0.55 to match D-059 peripheral band
- Extract color_for_entity_kind() to Constants.gd, decouple CursorRenderer from EntityRenderer

Documentation: shallow copy assumption, gradual decay TODO, tween guard rationale,
fade timing rationale, ToggleInsert TODO, monologue consume-once, hover offset safety,
v6 fixture gap TODO.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-15 23:23:11 +01:00
co-authored by Claude Opus 4.6
parent 1b0953db25
commit 9e8ccb13bf
10 changed files with 44 additions and 17 deletions
+8
View File
@@ -6,6 +6,14 @@ class_name TestProtocolV6
extends GdUnitTestSuite
const FIXTURE_DIR = "res://tests/fixtures/msgpack/"
# TODO: Add .msgpack fixture files for v6 stance/inventory variations.
# Current fixtures (snapshot_one_npc, snapshot_empty, etc.) only cover default
# Walk stance with empty inventory. Missing fixtures:
# - snapshot with player_stance = Sprint, Careful, Crouch
# - snapshot with populated player_inventory (1-item, 9-item full grid)
# - combined stance + inventory variations
# Stance/inventory decode is tested via in-memory Messagepack.encode() above,
# but regression-safe .msgpack fixtures are needed for bridge contract coverage.
func _load_fixture(name: String) -> PackedByteArray: