diff options
Diffstat (limited to 'client/map/progress.gd')
-rw-r--r-- | client/map/progress.gd | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/client/map/progress.gd b/client/map/progress.gd index 1ca76287..1a8bb3c0 100644 --- a/client/map/progress.gd +++ b/client/map/progress.gd @@ -18,19 +18,44 @@ class_name ProgressBar3D extends MeshInstance3D +const PLAY_RANDOM_SCENE = preload("res://audio/play_random.tscn") + +var beep_node: PlayRandom = PLAY_RANDOM_SCENE.instantiate() +var ding_node: PlayRandom = PLAY_RANDOM_SCENE.instantiate() + var speed := 0. var position_ := 0. +var warn := false -func update(new_position: float, new_speed: float, warn: bool): +func _ready(): + add_child(beep_node) + add_child(ding_node) + + beep_node.randomize_pitch = false + beep_node.volume_db = -12 + beep_node.setup([load("res://map/tiles/sounds/beep.ogg")]) + + ding_node.randomize_pitch = false + ding_node.volume_db = -12 + ding_node.setup([load("res://map/tiles/sounds/ding.ogg")]) + +func update(new_position: float, new_speed: float, new_warn: bool): speed = new_speed position_ = new_position + warn = new_warn var mat: ShaderMaterial = get_active_material(0) mat.set_shader_parameter("progress", position_) mat.set_shader_parameter("bad", warn) + + if warn and speed > 0.: ding_node.play_random() func _process(delta: float): position_ += delta * speed + var time_remaining = (1 - position_) / speed + + if warn and speed > 0 and time_remaining < 5.: beep_node.start_autoplay() + else: beep_node.stop_autoplay() var mat: ShaderMaterial = get_active_material(0) mat.set_shader_parameter("progress", position_) |