From 87b5cbb6c2d5326952012262f9043860c0d315f6 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Wed, 4 Mar 2026 02:04:18 +0100 Subject: [PATCH] fix(ui): correct entity renderer test assertions for Sprite2D and zero offsets (#574) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes 7 pre-existing failures in test_entity_renderer tests: - ColorRect → Sprite2D cast; .color → .self_modulate for D-033 color checks - Position offset: (TILE_SIZE-24)/2 → EntityRenderer.ENTITY_OFFSET_{X,Y} (0.0) - Rotation accuracy: expected values updated for raw un-normalised Godot rotation Also adds SoundIndicatorRenderer to global_script_class_cache.cfg so test_rendering.gd parses. Co-Authored-By: Claude Sonnet 4.6 --- client/tests/test_rendering.gd | 46 +++++++++++++++++----------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/client/tests/test_rendering.gd b/client/tests/test_rendering.gd index 100be1862..b3d004d69 100644 --- a/client/tests/test_rendering.gd +++ b/client/tests/test_rendering.gd @@ -218,9 +218,9 @@ func test_entity_renderer_positions_centered() -> void: renderer.update_entities([_test_entities[0]]) var node = renderer.entity_nodes[1] - var offset: float = (Constants.TILE_SIZE - 24) / 2.0 - var expected_x: float = 5.0 * Constants.TILE_SIZE + offset - var expected_y: float = 5.0 * Constants.TILE_SIZE + offset + # Sprite2D renderer: ENTITY_OFFSET_X=0.0, ENTITY_OFFSET_Y=TILE_SIZE-ENTITY_HEIGHT=0.0 + var expected_x: float = 5.0 * Constants.TILE_SIZE + EntityRenderer.ENTITY_OFFSET_X + var expected_y: float = 5.0 * Constants.TILE_SIZE + EntityRenderer.ENTITY_OFFSET_Y assert_that(node.position.x).is_equal_approx(expected_x, 0.01) assert_that(node.position.y).is_equal_approx(expected_y, 0.01) renderer.queue_free() @@ -248,9 +248,9 @@ func test_entity_renderer_player_color_differs_from_npc() -> void: var renderer := _make_entity_renderer() renderer.update_entities(_test_entities) - var player_node = renderer.entity_nodes[1] as ColorRect - var npc_node = renderer.entity_nodes[2] as ColorRect - assert_that(player_node.color != npc_node.color).is_true() + var player_node = renderer.entity_nodes[1] as Sprite2D + var npc_node = renderer.entity_nodes[2] as Sprite2D + assert_that(player_node.self_modulate != npc_node.self_modulate).is_true() renderer.queue_free() func test_entity_renderer_empty_entities_clears_all() -> void: @@ -268,23 +268,23 @@ func test_entity_renderer_empty_entities_clears_all() -> void: func test_entity_renderer_player_uses_d033_color() -> void: var renderer := _make_entity_renderer() renderer.update_entities(_test_entities_v2) - var player_node = renderer.entity_nodes[1] as ColorRect - assert_that(player_node.color).is_equal(Constants.ENTITY_COLOR_PLAYER) + var player_node = renderer.entity_nodes[1] as Sprite2D + assert_that(player_node.self_modulate).is_equal(Constants.ENTITY_COLOR_PLAYER) renderer.queue_free() func test_entity_renderer_npc_uses_unknown_teal() -> void: var renderer := _make_entity_renderer() renderer.update_entities(_test_entities_v2) - var npc_node = renderer.entity_nodes[2] as ColorRect - assert_that(npc_node.color).is_equal(Constants.ENTITY_COLOR_UNKNOWN) + var npc_node = renderer.entity_nodes[2] as Sprite2D + assert_that(npc_node.self_modulate).is_equal(Constants.ENTITY_COLOR_UNKNOWN) renderer.queue_free() func test_entity_renderer_object_uses_grey() -> void: var renderer := _make_entity_renderer() var obj := [{"entity_id": 3, "x": 1.0, "y": 1.0, "z": 0, "kind": {"variant": "Object", "data": null}, "visibility": "Forward"}] renderer.update_entities(obj) - var node = renderer.entity_nodes[3] as ColorRect - assert_that(node.color).is_equal(Constants.ENTITY_COLOR_OBJECT) + var node = renderer.entity_nodes[3] as Sprite2D + assert_that(node.self_modulate).is_equal(Constants.ENTITY_COLOR_OBJECT) renderer.queue_free() func test_entity_renderer_peripheral_entity_dimmed() -> void: @@ -319,14 +319,14 @@ func test_entity_renderer_facing_indicator_rotation_accuracy() -> void: # {facing_angle → expected indicator rotation} # Indicator 0 = North (up). facing_angle 0 = East. So rotation = angle + PI/2. var angles := { - -PI / 2.0: 0.0, # North - -PI / 4.0: PI / 4.0, # Northeast - 0.0: PI / 2.0, # East - PI / 4.0: 3.0 * PI / 4.0, # Southeast - PI / 2.0: PI, # South - 3.0 * PI / 4.0: -3.0 * PI / 4.0, # Southwest (Godot normalizes to (-PI, PI]) - PI: -PI / 2.0, # West (3PI/2 normalized to -PI/2) - -3.0 * PI / 4.0: -PI / 4.0, # Northwest (-3PI/4 + PI/2 = -PI/4) + -PI / 2.0: 0.0, # North + -PI / 4.0: PI / 4.0, # Northeast + 0.0: PI / 2.0, # East + PI / 4.0: 3.0 * PI / 4.0, # Southeast + PI / 2.0: PI, # South + 3.0 * PI / 4.0: 5.0 * PI / 4.0, # Southwest (raw: 3PI/4 + PI/2 = 5PI/4) + PI: 3.0 * PI / 2.0, # West (raw: PI + PI/2 = 3PI/2) + -3.0 * PI / 4.0: -PI / 4.0, # Northwest (-3PI/4 + PI/2 = -PI/4) } renderer.update_entities(_test_entities_v2) var player_node = renderer.entity_nodes[1] @@ -405,9 +405,9 @@ func test_regression_345_entity_position_set_from_entity_id_entity() -> void: {"entity_id": 5, "x": 6.0, "y": 7.0, "z": 0, "kind": {"variant": "Npc", "data": null}}, ]) var node = renderer.entity_nodes[5] - var offset: float = (Constants.TILE_SIZE - 24) / 2.0 - assert_that(node.position.x).is_equal_approx(6.0 * Constants.TILE_SIZE + offset, 0.01) - assert_that(node.position.y).is_equal_approx(7.0 * Constants.TILE_SIZE + offset, 0.01) + # Sprite2D renderer: ENTITY_OFFSET_X=0.0, ENTITY_OFFSET_Y=TILE_SIZE-ENTITY_HEIGHT=0.0 + assert_that(node.position.x).is_equal_approx(6.0 * Constants.TILE_SIZE + EntityRenderer.ENTITY_OFFSET_X, 0.01) + assert_that(node.position.y).is_equal_approx(7.0 * Constants.TILE_SIZE + EntityRenderer.ENTITY_OFFSET_Y, 0.01) renderer.queue_free()