summaryrefslogtreecommitdiff
path: root/client/map/progress.gd
diff options
context:
space:
mode:
Diffstat (limited to 'client/map/progress.gd')
-rw-r--r--client/map/progress.gd27
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_)