feat(audio): add turbo engagement cue

This commit is contained in:
Josh Creek
2026-09-01 23:24:42 +01:00
parent 5dc659007e
commit f5fd3bb207
4 changed files with 19 additions and 2 deletions
+10
View File
@@ -8,6 +8,7 @@ const MAX_INTENSITY := 1.0
var enabled := true
var _engine_player: AudioStreamPlayer
var _engine_turbo := false
func bind_tree_buttons(root: Node) -> void:
@@ -50,9 +51,13 @@ func play_goal() -> void:
func set_engine_state(thrust: float, turbo: bool) -> void:
var amount := clamp_intensity(thrust)
var rising_turbo := should_play_turbo_cue(_engine_turbo, turbo, amount)
if not enabled or amount <= 0.01:
stop_engine()
return
if rising_turbo:
_play_tone(260.0, 0.16, 0.16)
_engine_turbo = turbo
if _engine_player == null or not is_instance_valid(_engine_player):
_engine_player = AudioStreamPlayer.new()
_engine_player.stream = _engine_stream()
@@ -65,6 +70,7 @@ func set_engine_state(thrust: float, turbo: bool) -> void:
func stop_engine() -> void:
if _engine_player != null and is_instance_valid(_engine_player):
_engine_player.stop()
_engine_turbo = false
static func engine_pitch(thrust: float, turbo: bool) -> float:
@@ -77,6 +83,10 @@ static func engine_volume(thrust: float, turbo: bool) -> float:
return clampf(0.015 + amount * 0.045 + (0.025 if turbo and amount > 0.01 else 0.0), 0.0, 0.1)
static func should_play_turbo_cue(previous_turbo: bool, turbo: bool, thrust: float) -> bool:
return turbo and not previous_turbo and clamp_intensity(thrust) > 0.01
static func clamp_intensity(value: float) -> float:
if not is_finite(value):
return 0.0