summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authornokoe <nokoe@mailbox.org>2024-07-03 15:04:02 +0200
committernokoe <nokoe@mailbox.org>2024-07-03 15:04:02 +0200
commit11d2b799739d6e4a0fa7496a74cf10bff925b6ea (patch)
treeb46927ad0a7629ee7753937f267141f62983faee /client
parente994feebe11e4c1d8b7f3825f2e1c9bbd2069e82 (diff)
downloadhurrycurry-11d2b799739d6e4a0fa7496a74cf10bff925b6ea.tar
hurrycurry-11d2b799739d6e4a0fa7496a74cf10bff925b6ea.tar.bz2
hurrycurry-11d2b799739d6e4a0fa7496a74cf10bff925b6ea.tar.zst
add progress sound
Diffstat (limited to 'client')
-rw-r--r--client/audio/sound.gd43
-rw-r--r--client/audio/sound.tscn2
-rw-r--r--client/game.gd2
-rw-r--r--client/map/items/food_processor.gd10
-rw-r--r--client/map/items/food_processor_running.oggbin0 -> 16629 bytes
-rw-r--r--client/map/items/food_processor_running.ogg.import19
-rw-r--r--client/map/items/food_processor_stopping.oggbin0 -> 14288 bytes
-rw-r--r--client/map/items/food_processor_stopping.ogg.import19
-rw-r--r--client/map/items/item.gd1
-rw-r--r--client/menu/overlay.gd4
-rw-r--r--client/player/controllable_player.gd4
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
new file mode 100644
index 00000000..10ebaf90
--- /dev/null
+++ b/client/map/items/food_processor_running.ogg
Binary files differ
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
new file mode 100644
index 00000000..471e264a
--- /dev/null
+++ b/client/map/items/food_processor_stopping.ogg
Binary files differ
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: