diff options
Diffstat (limited to 'client/map/items')
-rw-r--r-- | client/map/items/item.gd | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/client/map/items/item.gd b/client/map/items/item.gd index 5c31d70f..80aa4d6d 100644 --- a/client/map/items/item.gd +++ b/client/map/items/item.gd @@ -24,8 +24,14 @@ var base: Node3D = Node3D.new() var progress_instance: ProgressBar3D = preload("res://map/progress.tscn").instantiate() var take_sound: PlayRandom = preload("res://audio/play_random.tscn").instantiate() var put_sound: PlayRandom = preload("res://audio/play_random.tscn").instantiate() +var ding_sound := AudioStreamPlayer3D.new() +var beep_sound := AudioStreamPlayer3D.new() var sound_id +var progress_speed := 0. +var progress_position := 0. +var progress_warn := false + var destroy_timeout = null var creation_timer = 0.0 var item_owned = false @@ -39,6 +45,10 @@ func _init(owned_by_: Node3D): put_sound.volume_db = -16 add_child(take_sound) add_child(put_sound) + ding_sound.stream = preload("res://map/tiles/sounds/ding.ogg") + beep_sound.stream = preload("res://map/tiles/sounds/beep.ogg") + add_child(ding_sound) + add_child(beep_sound) setup_sounds() @warning_ignore("static_called_on_instance") base.position = base_position() @@ -65,17 +75,28 @@ func _process(delta): else: scale = Vector3.ONE * creation_timer if destroy_timeout != null: destroy_timeout -= delta * 5.0 - if is_instance_valid(progress_instance): progress_instance.queue_free() + if is_instance_valid(progress_instance): progress_instance.hide() if destroy_timeout <= 0: queue_free() else: scale = Vector3.ONE * destroy_timeout + + progress_position += delta * progress_speed + progress_instance.update(progress_position, progress_warn) + var time_remaining = (1 - progress_position) / progress_speed + + if progress_warn and progress_speed > 0 and time_remaining < 5.: + if not beep_sound.playing: + beep_sound.play() + else: beep_sound.stop() + func progress(position_: float, speed: float, warn: bool): progress_instance.visible = true - progress_instance.update(position_, speed, warn) - - # TODO: Fix finish - # if p >= 1.: - # finish(warn) + progress_position = position_ + progress_speed = speed + progress_warn = warn + + # Always play ding sound if item is making progress while warn + if warn and speed > 0.: ding_sound.play() func finish(): progress_instance.visible = false |