diff options
author | nokoe <nokoe@mailbox.org> | 2024-07-03 15:04:02 +0200 |
---|---|---|
committer | nokoe <nokoe@mailbox.org> | 2024-07-03 15:04:02 +0200 |
commit | 11d2b799739d6e4a0fa7496a74cf10bff925b6ea (patch) | |
tree | b46927ad0a7629ee7753937f267141f62983faee /client | |
parent | e994feebe11e4c1d8b7f3825f2e1c9bbd2069e82 (diff) | |
download | hurrycurry-11d2b799739d6e4a0fa7496a74cf10bff925b6ea.tar hurrycurry-11d2b799739d6e4a0fa7496a74cf10bff925b6ea.tar.bz2 hurrycurry-11d2b799739d6e4a0fa7496a74cf10bff925b6ea.tar.zst |
add progress sound
Diffstat (limited to 'client')
-rw-r--r-- | client/audio/sound.gd | 43 | ||||
-rw-r--r-- | client/audio/sound.tscn | 2 | ||||
-rw-r--r-- | client/game.gd | 2 | ||||
-rw-r--r-- | client/map/items/food_processor.gd | 10 | ||||
-rw-r--r-- | client/map/items/food_processor_running.ogg | bin | 0 -> 16629 bytes | |||
-rw-r--r-- | client/map/items/food_processor_running.ogg.import | 19 | ||||
-rw-r--r-- | client/map/items/food_processor_stopping.ogg | bin | 0 -> 14288 bytes | |||
-rw-r--r-- | client/map/items/food_processor_stopping.ogg.import | 19 | ||||
-rw-r--r-- | client/map/items/item.gd | 1 | ||||
-rw-r--r-- | client/menu/overlay.gd | 4 | ||||
-rw-r--r-- | client/player/controllable_player.gd | 4 |
11 files changed, 101 insertions, 3 deletions
diff --git a/client/audio/sound.gd b/client/audio/sound.gd index 6a562d75..c4ef0ad2 100644 --- a/client/audio/sound.gd +++ b/client/audio/sound.gd @@ -3,6 +3,9 @@ extends Node @onready var click_sound = $UI/Click @onready var hover_sound = $UI/Hover +var item_sounds: Dictionary = {} +var item_id: int = 0 + func play_click(): click_sound.play() @@ -14,3 +17,43 @@ func play_hover_maybe(element): if element.is_hovered(): return play_hover() + +func item_progress(item: Item, running: AudioStream, stopping: AudioStream) -> int: + item_id += 1 + var running_player: AudioStreamPlayer3D = AudioStreamPlayer3D.new() + running_player.stream = running + running_player.name = "Running%d" % item_id + add_child(running_player) + var stopping_player: AudioStreamPlayer3D = AudioStreamPlayer3D.new() + stopping_player.stream = stopping + stopping_player.name = "Stopping%d" % item_id + running_player.play() + add_child(stopping_player) + item_sounds[item_id] = [item, running_player, stopping_player, false] + return item_id + +func item_finished(id: int): + var running_player: AudioStreamPlayer3D = item_sounds[id][1] + var stopping_player: AudioStreamPlayer3D = item_sounds[id][2] + item_sounds[id][3] = true + running_player.stop() + stopping_player.play() + stopping_player.finished.connect(func(): + free_sound(id) + ) + +func free_sound(id: int): + var running_player: AudioStreamPlayer3D = item_sounds[id][1] + var stopping_player: AudioStreamPlayer3D = item_sounds[id][2] + running_player.queue_free() + stopping_player.queue_free() + item_sounds.erase(id) + +func _physics_process(_delta): + for k in item_sounds.keys(): + if item_sounds[k][0] != null: + var position: Vector3 = item_sounds[k][0].position + item_sounds[k][1].position = position + item_sounds[k][2].position = position + elif not item_sounds[k][3]: + item_finished(k) diff --git a/client/audio/sound.tscn b/client/audio/sound.tscn index 7c0458dc..3f2607c8 100644 --- a/client/audio/sound.tscn +++ b/client/audio/sound.tscn @@ -4,7 +4,7 @@ [ext_resource type="AudioStream" uid="uid://cpyn511c5mtni" path="res://menu/sounds/click.ogg" id="2_mhrce"] [ext_resource type="AudioStream" uid="uid://dtr1khfyqr56o" path="res://menu/sounds/hover.ogg" id="3_qft2s"] -[node name="Sound" type="Node"] +[node name="Sound" type="Node3D"] script = ExtResource("1_b0qb1") [node name="UI" type="Node" parent="."] diff --git a/client/game.gd b/client/game.gd index 3102c84d..89ffb864 100644 --- a/client/game.gd +++ b/client/game.gd @@ -201,7 +201,7 @@ func _ready(): mp.server_message.connect(func(text): print(text)) mp.score.connect($Overlay.update) - mp.hide_score.connect($Overlay.hide) + mp.hide_score.connect($Overlay.reset) func _process(delta): marker.position = lerp(marker.position, marker_target, delta * 40.0) diff --git a/client/map/items/food_processor.gd b/client/map/items/food_processor.gd index f2226e5f..006954ef 100644 --- a/client/map/items/food_processor.gd +++ b/client/map/items/food_processor.gd @@ -28,10 +28,18 @@ func progress(p: float, warn: bool): processing.emitting = true processing.rotation.y += p * TAU base.rotation.y += p * TAU + if sound_id == null: + sound_id = Sound.item_progress( + self, + preload("res://map/items/food_processor_running.ogg"), + preload("res://map/items/food_processor_stopping.ogg") + ) func finish(warn: bool): super(warn) - processing.emitting = false + if sound_id != null: + processing.emitting = false + Sound.item_finished(sound_id) static func base_position() -> Vector3: return Vector3(0., 0.4, 0.) diff --git a/client/map/items/food_processor_running.ogg b/client/map/items/food_processor_running.ogg Binary files differnew file mode 100644 index 00000000..10ebaf90 --- /dev/null +++ b/client/map/items/food_processor_running.ogg diff --git a/client/map/items/food_processor_running.ogg.import b/client/map/items/food_processor_running.ogg.import new file mode 100644 index 00000000..45f2249e --- /dev/null +++ b/client/map/items/food_processor_running.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://rxjywx4vm0v8" +path="res://.godot/imported/food_processor_running.ogg-41d9b8fef28296b1e1fe6d23f7a6b29a.oggvorbisstr" + +[deps] + +source_file="res://map/items/food_processor_running.ogg" +dest_files=["res://.godot/imported/food_processor_running.ogg-41d9b8fef28296b1e1fe6d23f7a6b29a.oggvorbisstr"] + +[params] + +loop=true +loop_offset=0.0 +bpm=0.0 +beat_count=0 +bar_beats=4 diff --git a/client/map/items/food_processor_stopping.ogg b/client/map/items/food_processor_stopping.ogg Binary files differnew file mode 100644 index 00000000..471e264a --- /dev/null +++ b/client/map/items/food_processor_stopping.ogg diff --git a/client/map/items/food_processor_stopping.ogg.import b/client/map/items/food_processor_stopping.ogg.import new file mode 100644 index 00000000..7e0d8f6d --- /dev/null +++ b/client/map/items/food_processor_stopping.ogg.import @@ -0,0 +1,19 @@ +[remap] + +importer="oggvorbisstr" +type="AudioStreamOggVorbis" +uid="uid://dghbc6sebonde" +path="res://.godot/imported/food_processor_stopping.ogg-6f8738c65f08cc9554ad7bbd457e5ac0.oggvorbisstr" + +[deps] + +source_file="res://map/items/food_processor_stopping.ogg" +dest_files=["res://.godot/imported/food_processor_stopping.ogg-6f8738c65f08cc9554ad7bbd457e5ac0.oggvorbisstr"] + +[params] + +loop=false +loop_offset=0 +bpm=0 +beat_count=0 +bar_beats=4 diff --git a/client/map/items/item.gd b/client/map/items/item.gd index fb55b230..868af444 100644 --- a/client/map/items/item.gd +++ b/client/map/items/item.gd @@ -22,6 +22,7 @@ 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 sound_id func _init(owned_by_: Node3D): progress_instance.position.y = 1 diff --git a/client/menu/overlay.gd b/client/menu/overlay.gd index 89bbeb24..953b3ba5 100644 --- a/client/menu/overlay.gd +++ b/client/menu/overlay.gd @@ -33,6 +33,10 @@ func update(failed_: int, completed_: int, points_: int, time: float): if timer.is_stopped(): timer.start() +func reset(): + hide() + timer.stop() + func _process(delta): failed_label.scale = lerp(failed_label.scale, Vector2(1, 1), delta * 4.) completed_label.scale = lerp(completed_label.scale, Vector2(1, 1), delta * 4.) diff --git a/client/player/controllable_player.gd b/client/player/controllable_player.gd index 82365b83..8ba11097 100644 --- a/client/player/controllable_player.gd +++ b/client/player/controllable_player.gd @@ -138,6 +138,10 @@ func update_position(_new_position: Vector2, _new_rotation: float): func submit_message(text: String): game.mp.send_chat(text) +func progress(p: float, warn: bool): + super(p, warn) + Input.start_joy_vibration(0, 0.5, 0.1, 0.15) + func interact(): var tile = game.map.get_tile_instance(target) if tile != null: |