From fdbfd773e2bcae22160c6c7e9b2097a7f1766224 Mon Sep 17 00:00:00 2001 From: Olivier Date: Tue, 6 Oct 2026 19:40:10 +0200 Subject: [PATCH] feat(sonar): add SAND terrain material Co-Authored-By: Claude Haiku 4.5 --- game/domain/sonar/sonar_material.gd | 7 ++++++- tests/unit/run_sonar_application_tests.gd | 12 +++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/game/domain/sonar/sonar_material.gd b/game/domain/sonar/sonar_material.gd index b4ef673..20ed0eb 100644 --- a/game/domain/sonar/sonar_material.gd +++ b/game/domain/sonar/sonar_material.gd @@ -5,8 +5,13 @@ enum Value { UNKNOWN, ROCK, METAL, + SAND, } static func is_valid(value: int) -> bool: - return value >= Value.UNKNOWN and value <= Value.METAL + return value >= Value.UNKNOWN and value <= Value.SAND + + +static func is_terrain(value: int) -> bool: + return value == Value.ROCK or value == Value.SAND diff --git a/tests/unit/run_sonar_application_tests.gd b/tests/unit/run_sonar_application_tests.gd index ee4f31d..06ac5e9 100644 --- a/tests/unit/run_sonar_application_tests.gd +++ b/tests/unit/run_sonar_application_tests.gd @@ -20,7 +20,7 @@ const SonarAcquisitionPort = preload( ) const SonarService = preload("res://game/application/sonar/sonar_service.gd") -const TEST_COUNT := 32 +const TEST_COUNT := 34 var _failures: Array[String] = [] @@ -76,6 +76,16 @@ func _test_sample_buffer_contract() -> void: true ) _expect(sample.validation_error().is_empty(), "observed typed sample is valid") + var sand_sample := SonarSample.new( + Vector3(2.0, -4.0, 9.0), + Vector3.UP, + 0.4, + -4.0, + SonarMaterial.Value.SAND, + true + ) + _expect(sand_sample.validation_error().is_empty(), "sand is a valid terrain material") + _expect(SonarMaterial.is_valid(SonarMaterial.Value.SAND), "sand is inside the material range") var buffer := SonarSampleBuffer.new(3, 2) _expect(buffer.set_sample(1, 2, sample).is_empty(), "sample writes inside buffer bounds") _expect(buffer.observed_count() == 1, "buffer counts observed cells")