diff --git a/assets/audio/drone-trombone.wav b/assets/audio/drone-trombone.wav
new file mode 100644
index 0000000..038340e
Binary files /dev/null and b/assets/audio/drone-trombone.wav differ
diff --git a/assets/audio/drone-trombone.wav.import b/assets/audio/drone-trombone.wav.import
new file mode 100644
index 0000000..886ef61
--- /dev/null
+++ b/assets/audio/drone-trombone.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://b13l86o40lpvg"
+path="res://.godot/imported/drone-trombone.wav-d5d54d506289f45c19677c96d90e0cfc.sample"
+
+[deps]
+
+source_file="res://assets/audio/drone-trombone.wav"
+dest_files=["res://.godot/imported/drone-trombone.wav-d5d54d506289f45c19677c96d90e0cfc.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=0
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/assets/audio/steady-brass.wav b/assets/audio/steady-brass.wav
new file mode 100644
index 0000000..8adc23d
Binary files /dev/null and b/assets/audio/steady-brass.wav differ
diff --git a/assets/audio/steady-brass.wav.import b/assets/audio/steady-brass.wav.import
new file mode 100644
index 0000000..f8097ca
--- /dev/null
+++ b/assets/audio/steady-brass.wav.import
@@ -0,0 +1,24 @@
+[remap]
+
+importer="wav"
+type="AudioStreamWAV"
+uid="uid://bgpoah6tqn1ly"
+path="res://.godot/imported/steady-brass.wav-48ccb4e4bb2045ec306128741824a7bf.sample"
+
+[deps]
+
+source_file="res://assets/audio/steady-brass.wav"
+dest_files=["res://.godot/imported/steady-brass.wav-48ccb4e4bb2045ec306128741824a7bf.sample"]
+
+[params]
+
+force/8_bit=false
+force/mono=false
+force/max_rate=false
+force/max_rate_hz=44100
+edit/trim=false
+edit/normalize=false
+edit/loop_mode=2
+edit/loop_begin=0
+edit/loop_end=-1
+compress/mode=2
diff --git a/assets/stagebackingcurtain.png b/assets/sprites/stagebackingcurtain.png
similarity index 100%
rename from assets/stagebackingcurtain.png
rename to assets/sprites/stagebackingcurtain.png
diff --git a/assets/stagebackingcurtain.png.import b/assets/sprites/stagebackingcurtain.png.import
similarity index 74%
rename from assets/stagebackingcurtain.png.import
rename to assets/sprites/stagebackingcurtain.png.import
index e9d6558..46f6845 100644
--- a/assets/stagebackingcurtain.png.import
+++ b/assets/sprites/stagebackingcurtain.png.import
@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://ctyudsrrtcypu"
-path="res://.godot/imported/stagebackingcurtain.png-a8381db91b62a42b9b42e02d732f1276.ctex"
+path="res://.godot/imported/stagebackingcurtain.png-7b682a77d897ad7269ee00bc7e52947b.ctex"
metadata={
"vram_texture": false
}
[deps]
-source_file="res://assets/stagebackingcurtain.png"
-dest_files=["res://.godot/imported/stagebackingcurtain.png-a8381db91b62a42b9b42e02d732f1276.ctex"]
+source_file="res://assets/sprites/stagebackingcurtain.png"
+dest_files=["res://.godot/imported/stagebackingcurtain.png-7b682a77d897ad7269ee00bc7e52947b.ctex"]
[params]
diff --git a/assets/symphonyguys.png b/assets/sprites/symphonyguys.png
similarity index 100%
rename from assets/symphonyguys.png
rename to assets/sprites/symphonyguys.png
diff --git a/assets/symphonyguys.png.import b/assets/sprites/symphonyguys.png.import
similarity index 76%
rename from assets/symphonyguys.png.import
rename to assets/sprites/symphonyguys.png.import
index 54749e6..f3b02de 100644
--- a/assets/symphonyguys.png.import
+++ b/assets/sprites/symphonyguys.png.import
@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://42h7vrqekyma"
-path="res://.godot/imported/symphonyguys.png-8814cc7bf4311dc9d4a197ee29eb1e7e.ctex"
+path="res://.godot/imported/symphonyguys.png-c0da4c4bfa1230a130864fc717de79bd.ctex"
metadata={
"vram_texture": false
}
[deps]
-source_file="res://assets/symphonyguys.png"
-dest_files=["res://.godot/imported/symphonyguys.png-8814cc7bf4311dc9d4a197ee29eb1e7e.ctex"]
+source_file="res://assets/sprites/symphonyguys.png"
+dest_files=["res://.godot/imported/symphonyguys.png-c0da4c4bfa1230a130864fc717de79bd.ctex"]
[params]
diff --git a/assets/symphonyguys2.png b/assets/sprites/symphonyguys2.png
similarity index 100%
rename from assets/symphonyguys2.png
rename to assets/sprites/symphonyguys2.png
diff --git a/assets/symphonyguys2.png.import b/assets/sprites/symphonyguys2.png.import
similarity index 75%
rename from assets/symphonyguys2.png.import
rename to assets/sprites/symphonyguys2.png.import
index 573be89..075e40a 100644
--- a/assets/symphonyguys2.png.import
+++ b/assets/sprites/symphonyguys2.png.import
@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://cxo4qqkj2gfek"
-path="res://.godot/imported/symphonyguys2.png-eac910bf1f489678e5378904493e0f43.ctex"
+path="res://.godot/imported/symphonyguys2.png-9459b7f517c8ecab689652162645bf0a.ctex"
metadata={
"vram_texture": false
}
[deps]
-source_file="res://assets/symphonyguys2.png"
-dest_files=["res://.godot/imported/symphonyguys2.png-eac910bf1f489678e5378904493e0f43.ctex"]
+source_file="res://assets/sprites/symphonyguys2.png"
+dest_files=["res://.godot/imported/symphonyguys2.png-9459b7f517c8ecab689652162645bf0a.ctex"]
[params]
diff --git a/assets/symphonyguys3.png b/assets/sprites/symphonyguys3.png
similarity index 100%
rename from assets/symphonyguys3.png
rename to assets/sprites/symphonyguys3.png
diff --git a/assets/symphonyguys3.png.import b/assets/sprites/symphonyguys3.png.import
similarity index 75%
rename from assets/symphonyguys3.png.import
rename to assets/sprites/symphonyguys3.png.import
index 8bb5e1a..51859fe 100644
--- a/assets/symphonyguys3.png.import
+++ b/assets/sprites/symphonyguys3.png.import
@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://cu0cv0im0e47g"
-path="res://.godot/imported/symphonyguys3.png-2e0fe16eb20ad392db5cb2c0caff71be.ctex"
+path="res://.godot/imported/symphonyguys3.png-2b5fde7ec22f3c85e69bb95f9ff67482.ctex"
metadata={
"vram_texture": false
}
[deps]
-source_file="res://assets/symphonyguys3.png"
-dest_files=["res://.godot/imported/symphonyguys3.png-2e0fe16eb20ad392db5cb2c0caff71be.ctex"]
+source_file="res://assets/sprites/symphonyguys3.png"
+dest_files=["res://.godot/imported/symphonyguys3.png-2b5fde7ec22f3c85e69bb95f9ff67482.ctex"]
[params]
diff --git a/assets/input/keyboard_b.png b/assets/ui/keyboard_b.png
similarity index 100%
rename from assets/input/keyboard_b.png
rename to assets/ui/keyboard_b.png
diff --git a/assets/input/keyboard_b.png.import b/assets/ui/keyboard_b.png.import
similarity index 76%
rename from assets/input/keyboard_b.png.import
rename to assets/ui/keyboard_b.png.import
index 21d889f..c9f4232 100644
--- a/assets/input/keyboard_b.png.import
+++ b/assets/ui/keyboard_b.png.import
@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bw3nb0oru0pam"
-path="res://.godot/imported/keyboard_b.png-71978e8901de6389891ee44206a11ed8.ctex"
+path="res://.godot/imported/keyboard_b.png-87a001179f8ac4b5a6d7ee8b7483ec0d.ctex"
metadata={
"vram_texture": false
}
[deps]
-source_file="res://assets/input/keyboard_b.png"
-dest_files=["res://.godot/imported/keyboard_b.png-71978e8901de6389891ee44206a11ed8.ctex"]
+source_file="res://assets/ui/keyboard_b.png"
+dest_files=["res://.godot/imported/keyboard_b.png-87a001179f8ac4b5a6d7ee8b7483ec0d.ctex"]
[params]
diff --git a/assets/input/keyboard_b_outline.png b/assets/ui/keyboard_b_outline.png
similarity index 100%
rename from assets/input/keyboard_b_outline.png
rename to assets/ui/keyboard_b_outline.png
diff --git a/assets/input/keyboard_b_outline.png.import b/assets/ui/keyboard_b_outline.png.import
similarity index 74%
rename from assets/input/keyboard_b_outline.png.import
rename to assets/ui/keyboard_b_outline.png.import
index 3e7f1dd..df4a266 100644
--- a/assets/input/keyboard_b_outline.png.import
+++ b/assets/ui/keyboard_b_outline.png.import
@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bmc2ijkmfndv7"
-path="res://.godot/imported/keyboard_b_outline.png-78b1023215bfc44f58687a9961c11a73.ctex"
+path="res://.godot/imported/keyboard_b_outline.png-ffd52d966c7483c87b2889d66ad72971.ctex"
metadata={
"vram_texture": false
}
[deps]
-source_file="res://assets/input/keyboard_b_outline.png"
-dest_files=["res://.godot/imported/keyboard_b_outline.png-78b1023215bfc44f58687a9961c11a73.ctex"]
+source_file="res://assets/ui/keyboard_b_outline.png"
+dest_files=["res://.godot/imported/keyboard_b_outline.png-ffd52d966c7483c87b2889d66ad72971.ctex"]
[params]
diff --git a/assets/input/keyboard_c.png b/assets/ui/keyboard_c.png
similarity index 100%
rename from assets/input/keyboard_c.png
rename to assets/ui/keyboard_c.png
diff --git a/assets/input/keyboard_c.png.import b/assets/ui/keyboard_c.png.import
similarity index 76%
rename from assets/input/keyboard_c.png.import
rename to assets/ui/keyboard_c.png.import
index a1b861b..26a740f 100644
--- a/assets/input/keyboard_c.png.import
+++ b/assets/ui/keyboard_c.png.import
@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://dahurq3y0kh20"
-path="res://.godot/imported/keyboard_c.png-1146edca3890f0be7840c02b9bd1b6e9.ctex"
+path="res://.godot/imported/keyboard_c.png-1b33711bd1e9e422cb1b26fcfef416b3.ctex"
metadata={
"vram_texture": false
}
[deps]
-source_file="res://assets/input/keyboard_c.png"
-dest_files=["res://.godot/imported/keyboard_c.png-1146edca3890f0be7840c02b9bd1b6e9.ctex"]
+source_file="res://assets/ui/keyboard_c.png"
+dest_files=["res://.godot/imported/keyboard_c.png-1b33711bd1e9e422cb1b26fcfef416b3.ctex"]
[params]
diff --git a/assets/input/keyboard_c_outline.png b/assets/ui/keyboard_c_outline.png
similarity index 100%
rename from assets/input/keyboard_c_outline.png
rename to assets/ui/keyboard_c_outline.png
diff --git a/assets/input/keyboard_c_outline.png.import b/assets/ui/keyboard_c_outline.png.import
similarity index 74%
rename from assets/input/keyboard_c_outline.png.import
rename to assets/ui/keyboard_c_outline.png.import
index ee27cff..912a24e 100644
--- a/assets/input/keyboard_c_outline.png.import
+++ b/assets/ui/keyboard_c_outline.png.import
@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://d1onhhk6xorit"
-path="res://.godot/imported/keyboard_c_outline.png-85198403ed6a2f3f09e65199b3566cb9.ctex"
+path="res://.godot/imported/keyboard_c_outline.png-3e3ab383530fc409818640a9c5141732.ctex"
metadata={
"vram_texture": false
}
[deps]
-source_file="res://assets/input/keyboard_c_outline.png"
-dest_files=["res://.godot/imported/keyboard_c_outline.png-85198403ed6a2f3f09e65199b3566cb9.ctex"]
+source_file="res://assets/ui/keyboard_c_outline.png"
+dest_files=["res://.godot/imported/keyboard_c_outline.png-3e3ab383530fc409818640a9c5141732.ctex"]
[params]
diff --git a/assets/input/keyboard_r.png b/assets/ui/keyboard_r.png
similarity index 100%
rename from assets/input/keyboard_r.png
rename to assets/ui/keyboard_r.png
diff --git a/assets/input/keyboard_r.png.import b/assets/ui/keyboard_r.png.import
similarity index 76%
rename from assets/input/keyboard_r.png.import
rename to assets/ui/keyboard_r.png.import
index f170260..de0b829 100644
--- a/assets/input/keyboard_r.png.import
+++ b/assets/ui/keyboard_r.png.import
@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bcw48038qg8od"
-path="res://.godot/imported/keyboard_r.png-99c669e40586f6bdb00ed8967911733d.ctex"
+path="res://.godot/imported/keyboard_r.png-fa397d7d25760358672b59727417a127.ctex"
metadata={
"vram_texture": false
}
[deps]
-source_file="res://assets/input/keyboard_r.png"
-dest_files=["res://.godot/imported/keyboard_r.png-99c669e40586f6bdb00ed8967911733d.ctex"]
+source_file="res://assets/ui/keyboard_r.png"
+dest_files=["res://.godot/imported/keyboard_r.png-fa397d7d25760358672b59727417a127.ctex"]
[params]
diff --git a/assets/input/keyboard_r_outline.png b/assets/ui/keyboard_r_outline.png
similarity index 100%
rename from assets/input/keyboard_r_outline.png
rename to assets/ui/keyboard_r_outline.png
diff --git a/assets/input/keyboard_r_outline.png.import b/assets/ui/keyboard_r_outline.png.import
similarity index 74%
rename from assets/input/keyboard_r_outline.png.import
rename to assets/ui/keyboard_r_outline.png.import
index 46992ac..0aa3ba9 100644
--- a/assets/input/keyboard_r_outline.png.import
+++ b/assets/ui/keyboard_r_outline.png.import
@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://do6jqp2l6nmwm"
-path="res://.godot/imported/keyboard_r_outline.png-3bffdec59f58dc32e48ae09e16466241.ctex"
+path="res://.godot/imported/keyboard_r_outline.png-c88d9082837180232202210a6c4107d0.ctex"
metadata={
"vram_texture": false
}
[deps]
-source_file="res://assets/input/keyboard_r_outline.png"
-dest_files=["res://.godot/imported/keyboard_r_outline.png-3bffdec59f58dc32e48ae09e16466241.ctex"]
+source_file="res://assets/ui/keyboard_r_outline.png"
+dest_files=["res://.godot/imported/keyboard_r_outline.png-c88d9082837180232202210a6c4107d0.ctex"]
[params]
diff --git a/assets/ui/keyboard_s.svg b/assets/ui/keyboard_s.svg
new file mode 100644
index 0000000..9c98fa0
--- /dev/null
+++ b/assets/ui/keyboard_s.svg
@@ -0,0 +1,6 @@
+
\ No newline at end of file
diff --git a/assets/ui/keyboard_s.svg.import b/assets/ui/keyboard_s.svg.import
new file mode 100644
index 0000000..39d7d6d
--- /dev/null
+++ b/assets/ui/keyboard_s.svg.import
@@ -0,0 +1,43 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cacp5ppga66l8"
+path="res://.godot/imported/keyboard_s.svg-6ec0157baa9c7a0aad98574ad59a07a5.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://assets/ui/keyboard_s.svg"
+dest_files=["res://.godot/imported/keyboard_s.svg-6ec0157baa9c7a0aad98574ad59a07a5.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=false
+editor/convert_colors_with_editor_theme=false
diff --git a/assets/ui/keyboard_s_outline.svg b/assets/ui/keyboard_s_outline.svg
new file mode 100644
index 0000000..93e71c8
--- /dev/null
+++ b/assets/ui/keyboard_s_outline.svg
@@ -0,0 +1,6 @@
+
\ No newline at end of file
diff --git a/assets/ui/keyboard_s_outline.svg.import b/assets/ui/keyboard_s_outline.svg.import
new file mode 100644
index 0000000..ca8afd2
--- /dev/null
+++ b/assets/ui/keyboard_s_outline.svg.import
@@ -0,0 +1,43 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ck6iss1he1kpq"
+path="res://.godot/imported/keyboard_s_outline.svg-02965692a289d3d94f81401cc757941e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://assets/ui/keyboard_s_outline.svg"
+dest_files=["res://.godot/imported/keyboard_s_outline.svg-02965692a289d3d94f81401cc757941e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/uastc_level=0
+compress/rdo_quality_loss=0.0
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/channel_remap/red=0
+process/channel_remap/green=1
+process/channel_remap/blue=2
+process/channel_remap/alpha=3
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=false
+editor/convert_colors_with_editor_theme=false
diff --git a/assets/input/keyboard_space.png b/assets/ui/keyboard_space.png
similarity index 100%
rename from assets/input/keyboard_space.png
rename to assets/ui/keyboard_space.png
diff --git a/assets/input/keyboard_space.png.import b/assets/ui/keyboard_space.png.import
similarity index 75%
rename from assets/input/keyboard_space.png.import
rename to assets/ui/keyboard_space.png.import
index 13ab591..e31b255 100644
--- a/assets/input/keyboard_space.png.import
+++ b/assets/ui/keyboard_space.png.import
@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://blpawb3qyrqh2"
-path="res://.godot/imported/keyboard_space.png-234c6ee69553ead35d22943ace33c74d.ctex"
+path="res://.godot/imported/keyboard_space.png-b0cc9cf8c56a590b2ee3e6f6b012436f.ctex"
metadata={
"vram_texture": false
}
[deps]
-source_file="res://assets/input/keyboard_space.png"
-dest_files=["res://.godot/imported/keyboard_space.png-234c6ee69553ead35d22943ace33c74d.ctex"]
+source_file="res://assets/ui/keyboard_space.png"
+dest_files=["res://.godot/imported/keyboard_space.png-b0cc9cf8c56a590b2ee3e6f6b012436f.ctex"]
[params]
diff --git a/assets/input/keyboard_space_outline.png b/assets/ui/keyboard_space_outline.png
similarity index 100%
rename from assets/input/keyboard_space_outline.png
rename to assets/ui/keyboard_space_outline.png
diff --git a/assets/input/keyboard_space_outline.png.import b/assets/ui/keyboard_space_outline.png.import
similarity index 73%
rename from assets/input/keyboard_space_outline.png.import
rename to assets/ui/keyboard_space_outline.png.import
index 112e459..fc84faa 100644
--- a/assets/input/keyboard_space_outline.png.import
+++ b/assets/ui/keyboard_space_outline.png.import
@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://snb8rm4p7s1x"
-path="res://.godot/imported/keyboard_space_outline.png-4e9954671d62479691833162f0e18256.ctex"
+path="res://.godot/imported/keyboard_space_outline.png-5d8fee51a27d7925511f61a9b7de3985.ctex"
metadata={
"vram_texture": false
}
[deps]
-source_file="res://assets/input/keyboard_space_outline.png"
-dest_files=["res://.godot/imported/keyboard_space_outline.png-4e9954671d62479691833162f0e18256.ctex"]
+source_file="res://assets/ui/keyboard_space_outline.png"
+dest_files=["res://.godot/imported/keyboard_space_outline.png-5d8fee51a27d7925511f61a9b7de3985.ctex"]
[params]
diff --git a/assets/input/keyboard_t.png b/assets/ui/keyboard_t.png
similarity index 100%
rename from assets/input/keyboard_t.png
rename to assets/ui/keyboard_t.png
diff --git a/assets/input/keyboard_t.png.import b/assets/ui/keyboard_t.png.import
similarity index 76%
rename from assets/input/keyboard_t.png.import
rename to assets/ui/keyboard_t.png.import
index 83438bb..be403b1 100644
--- a/assets/input/keyboard_t.png.import
+++ b/assets/ui/keyboard_t.png.import
@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://d24f5eemnnvrn"
-path="res://.godot/imported/keyboard_t.png-5ca6c6a935d689c9b23f9c13f743e73e.ctex"
+path="res://.godot/imported/keyboard_t.png-e5d1e615cba1d8b3e6e00b8a9645b750.ctex"
metadata={
"vram_texture": false
}
[deps]
-source_file="res://assets/input/keyboard_t.png"
-dest_files=["res://.godot/imported/keyboard_t.png-5ca6c6a935d689c9b23f9c13f743e73e.ctex"]
+source_file="res://assets/ui/keyboard_t.png"
+dest_files=["res://.godot/imported/keyboard_t.png-e5d1e615cba1d8b3e6e00b8a9645b750.ctex"]
[params]
diff --git a/assets/input/keyboard_t_outline.png b/assets/ui/keyboard_t_outline.png
similarity index 100%
rename from assets/input/keyboard_t_outline.png
rename to assets/ui/keyboard_t_outline.png
diff --git a/assets/input/keyboard_t_outline.png.import b/assets/ui/keyboard_t_outline.png.import
similarity index 74%
rename from assets/input/keyboard_t_outline.png.import
rename to assets/ui/keyboard_t_outline.png.import
index 7275589..252666b 100644
--- a/assets/input/keyboard_t_outline.png.import
+++ b/assets/ui/keyboard_t_outline.png.import
@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bl3rq1xnhtmuy"
-path="res://.godot/imported/keyboard_t_outline.png-f47f0784b47bf5f229b467909ab0e562.ctex"
+path="res://.godot/imported/keyboard_t_outline.png-16f0d11f8bcb049d608da27c438a2147.ctex"
metadata={
"vram_texture": false
}
[deps]
-source_file="res://assets/input/keyboard_t_outline.png"
-dest_files=["res://.godot/imported/keyboard_t_outline.png-f47f0784b47bf5f229b467909ab0e562.ctex"]
+source_file="res://assets/ui/keyboard_t_outline.png"
+dest_files=["res://.godot/imported/keyboard_t_outline.png-16f0d11f8bcb049d608da27c438a2147.ctex"]
[params]
diff --git a/assets/input/keyboard_v.png b/assets/ui/keyboard_v.png
similarity index 100%
rename from assets/input/keyboard_v.png
rename to assets/ui/keyboard_v.png
diff --git a/assets/input/keyboard_v.png.import b/assets/ui/keyboard_v.png.import
similarity index 76%
rename from assets/input/keyboard_v.png.import
rename to assets/ui/keyboard_v.png.import
index 7b4e14d..094ca7a 100644
--- a/assets/input/keyboard_v.png.import
+++ b/assets/ui/keyboard_v.png.import
@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://bm53tpx7cbocx"
-path="res://.godot/imported/keyboard_v.png-0a9fa5270c53461dc7ce55f9787edd41.ctex"
+path="res://.godot/imported/keyboard_v.png-be54adeb5fa5bec32b64b13225bbb3bd.ctex"
metadata={
"vram_texture": false
}
[deps]
-source_file="res://assets/input/keyboard_v.png"
-dest_files=["res://.godot/imported/keyboard_v.png-0a9fa5270c53461dc7ce55f9787edd41.ctex"]
+source_file="res://assets/ui/keyboard_v.png"
+dest_files=["res://.godot/imported/keyboard_v.png-be54adeb5fa5bec32b64b13225bbb3bd.ctex"]
[params]
diff --git a/assets/input/keyboard_v_outline.png b/assets/ui/keyboard_v_outline.png
similarity index 100%
rename from assets/input/keyboard_v_outline.png
rename to assets/ui/keyboard_v_outline.png
diff --git a/assets/input/keyboard_v_outline.png.import b/assets/ui/keyboard_v_outline.png.import
similarity index 74%
rename from assets/input/keyboard_v_outline.png.import
rename to assets/ui/keyboard_v_outline.png.import
index f51138a..c9df123 100644
--- a/assets/input/keyboard_v_outline.png.import
+++ b/assets/ui/keyboard_v_outline.png.import
@@ -3,15 +3,15 @@
importer="texture"
type="CompressedTexture2D"
uid="uid://cctoyonq28i8q"
-path="res://.godot/imported/keyboard_v_outline.png-f82bbd3bcff322d09781a98abc4ee6df.ctex"
+path="res://.godot/imported/keyboard_v_outline.png-0a193c8062dd506c2f7253feaa3e522c.ctex"
metadata={
"vram_texture": false
}
[deps]
-source_file="res://assets/input/keyboard_v_outline.png"
-dest_files=["res://.godot/imported/keyboard_v_outline.png-f82bbd3bcff322d09781a98abc4ee6df.ctex"]
+source_file="res://assets/ui/keyboard_v_outline.png"
+dest_files=["res://.godot/imported/keyboard_v_outline.png-0a193c8062dd506c2f7253feaa3e522c.ctex"]
[params]
diff --git a/assets/volumeometer_strip11.png b/assets/volumeometer_strip11.png
deleted file mode 100644
index 15d01c7..0000000
Binary files a/assets/volumeometer_strip11.png and /dev/null differ
diff --git a/assets/volumeometer_strip11.png.import b/assets/volumeometer_strip11.png.import
deleted file mode 100644
index 5ce2ced..0000000
--- a/assets/volumeometer_strip11.png.import
+++ /dev/null
@@ -1,40 +0,0 @@
-[remap]
-
-importer="texture"
-type="CompressedTexture2D"
-uid="uid://bcl8gjplw47ik"
-path="res://.godot/imported/volumeometer_strip11.png-d42d3ba30c33ad86ea1c333b42b480c0.ctex"
-metadata={
-"vram_texture": false
-}
-
-[deps]
-
-source_file="res://assets/volumeometer_strip11.png"
-dest_files=["res://.godot/imported/volumeometer_strip11.png-d42d3ba30c33ad86ea1c333b42b480c0.ctex"]
-
-[params]
-
-compress/mode=0
-compress/high_quality=false
-compress/lossy_quality=0.7
-compress/uastc_level=0
-compress/rdo_quality_loss=0.0
-compress/hdr_compression=1
-compress/normal_map=0
-compress/channel_pack=0
-mipmaps/generate=false
-mipmaps/limit=-1
-roughness/mode=0
-roughness/src_normal=""
-process/channel_remap/red=0
-process/channel_remap/green=1
-process/channel_remap/blue=2
-process/channel_remap/alpha=3
-process/fix_alpha_border=true
-process/premult_alpha=false
-process/normal_map_invert_y=false
-process/hdr_as_srgb=false
-process/hdr_clamp_exposure=false
-process/size_limit=0
-detect_3d/compress_to=1
diff --git a/project.godot b/project.godot
index bcbfe5a..25d13d4 100644
--- a/project.godot
+++ b/project.godot
@@ -46,7 +46,7 @@ tick={
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":84,"key_label":0,"unicode":116,"location":0,"echo":false,"script":null)
]
}
-start={
+play_pause={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null)
]
@@ -56,6 +56,11 @@ ready={
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":82,"key_label":0,"unicode":114,"location":0,"echo":false,"script":null)
]
}
+sample={
+"deadzone": 0.2,
+"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null)
+]
+}
[physics]
diff --git a/resources/shadow.gdshader b/resources/shadow.gdshader
deleted file mode 100644
index bf9803b..0000000
--- a/resources/shadow.gdshader
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
-* Shadow 2D.
-* License: CC0
-* https://creativecommons.org/publicdomain/zero/1.0/
-*/
-shader_type canvas_item;
-render_mode blend_mix;
-
-uniform vec2 deform = vec2(2.0, 2.0);
-uniform vec2 offset = vec2(0.0, 0.0);
-uniform vec4 modulate : source_color;
-
-
-//uniform vec2 texture_size; //uncomment for GLES2
-
-void fragment() {
- vec2 ps = TEXTURE_PIXEL_SIZE;
- vec2 uv = UV;
- float sizex = float(textureSize(TEXTURE,int(ps.x)).x); //comment for GLES2
- float sizey = float(textureSize(TEXTURE,int(ps.y)).y); //comment for GLES2
- //float sizex = texture_size.x; //uncomment for GLES2
- //float sizey = texture_size.y; //uncomment for GLES2
- uv.y+=offset.y*ps.y;
- uv.x+=offset.x*ps.x;
- float decalx=((uv.y-ps.x*sizex)*deform.x);
- float decaly=((uv.y-ps.y*sizey)*deform.y);
- uv.x += decalx;
- uv.y += decaly;
- vec4 shadow = vec4(modulate.rgb, texture(TEXTURE, uv).a * modulate.a);
- vec4 col = texture(TEXTURE, UV);
- COLOR = mix(shadow, col, col.a);
-}
\ No newline at end of file
diff --git a/resources/shadow.gdshader.uid b/resources/shadow.gdshader.uid
deleted file mode 100644
index 99de6cc..0000000
--- a/resources/shadow.gdshader.uid
+++ /dev/null
@@ -1 +0,0 @@
-uid://c7o14m3k38ifi
diff --git a/resources/sprite_frames/bass_sprite_frames.tres b/resources/sprite_frames/bass_sprite_frames.tres
index a1d1313..03ba17b 100644
--- a/resources/sprite_frames/bass_sprite_frames.tres
+++ b/resources/sprite_frames/bass_sprite_frames.tres
@@ -1,6 +1,6 @@
[gd_resource type="SpriteFrames" format=3 uid="uid://c34ha4ekm1xor"]
-[ext_resource type="Texture2D" uid="uid://42h7vrqekyma" path="res://assets/symphonyguys.png" id="1_0qj0m"]
+[ext_resource type="Texture2D" uid="uid://42h7vrqekyma" path="res://assets/sprites/symphonyguys.png" id="1_0qj0m"]
[sub_resource type="AtlasTexture" id="AtlasTexture_lswn8"]
atlas = ExtResource("1_0qj0m")
diff --git a/resources/sprite_frames/cello_sprite_frames.tres b/resources/sprite_frames/cello_sprite_frames.tres
index 731892d..ae8bb65 100644
--- a/resources/sprite_frames/cello_sprite_frames.tres
+++ b/resources/sprite_frames/cello_sprite_frames.tres
@@ -1,6 +1,6 @@
[gd_resource type="SpriteFrames" format=3 uid="uid://bpfq0ubeyinny"]
-[ext_resource type="Texture2D" uid="uid://42h7vrqekyma" path="res://assets/symphonyguys.png" id="1_6cuj6"]
+[ext_resource type="Texture2D" uid="uid://42h7vrqekyma" path="res://assets/sprites/symphonyguys.png" id="1_6cuj6"]
[sub_resource type="AtlasTexture" id="AtlasTexture_kek77"]
atlas = ExtResource("1_6cuj6")
diff --git a/resources/sprite_frames/conductor_sprite_frames.tres b/resources/sprite_frames/conductor_sprite_frames.tres
index 74baaf0..a72973d 100644
--- a/resources/sprite_frames/conductor_sprite_frames.tres
+++ b/resources/sprite_frames/conductor_sprite_frames.tres
@@ -1,6 +1,6 @@
[gd_resource type="SpriteFrames" format=3 uid="uid://brmhup007maeh"]
-[ext_resource type="Texture2D" uid="uid://42h7vrqekyma" path="res://assets/symphonyguys.png" id="1_t5mbj"]
+[ext_resource type="Texture2D" uid="uid://42h7vrqekyma" path="res://assets/sprites/symphonyguys.png" id="1_t5mbj"]
[sub_resource type="AtlasTexture" id="AtlasTexture_lquwl"]
atlas = ExtResource("1_t5mbj")
diff --git a/resources/sprite_frames/viol_sprite_frames.tres b/resources/sprite_frames/viol_sprite_frames.tres
index 00184e6..133b7ca 100644
--- a/resources/sprite_frames/viol_sprite_frames.tres
+++ b/resources/sprite_frames/viol_sprite_frames.tres
@@ -1,6 +1,6 @@
[gd_resource type="SpriteFrames" format=3 uid="uid://bkq7b1w5jh1ec"]
-[ext_resource type="Texture2D" uid="uid://42h7vrqekyma" path="res://assets/symphonyguys.png" id="1_yt1t7"]
+[ext_resource type="Texture2D" uid="uid://42h7vrqekyma" path="res://assets/sprites/symphonyguys.png" id="1_yt1t7"]
[sub_resource type="AtlasTexture" id="AtlasTexture_w48qg"]
atlas = ExtResource("1_yt1t7")
diff --git a/scenes/input_prompt.tscn b/scenes/input_prompt.tscn
index 93e6be3..932f995 100644
--- a/scenes/input_prompt.tscn
+++ b/scenes/input_prompt.tscn
@@ -1,6 +1,6 @@
[gd_scene format=3 uid="uid://cwdkw1p371bks"]
-[ext_resource type="Texture2D" uid="uid://cctoyonq28i8q" path="res://assets/input/keyboard_v_outline.png" id="1_tpl0e"]
+[ext_resource type="Texture2D" uid="uid://cctoyonq28i8q" path="res://assets/ui/keyboard_v_outline.png" id="1_tpl0e"]
[node name="InputPrompt" type="Sprite2D" unique_id=590379112]
position = Vector2(0, 24)
diff --git a/scenes/musicians/bassist.tscn b/scenes/musicians/bassist.tscn
index 99d04b6..1bb1538 100644
--- a/scenes/musicians/bassist.tscn
+++ b/scenes/musicians/bassist.tscn
@@ -2,8 +2,8 @@
[ext_resource type="PackedScene" uid="uid://c1tceq1kcqngi" path="res://scenes/musicians/musician.tscn" id="1_ec361"]
[ext_resource type="SpriteFrames" uid="uid://c34ha4ekm1xor" path="res://resources/sprite_frames/bass_sprite_frames.tres" id="2_58d2m"]
-[ext_resource type="Texture2D" uid="uid://bw3nb0oru0pam" path="res://assets/input/keyboard_b.png" id="3_qpy72"]
-[ext_resource type="Texture2D" uid="uid://bmc2ijkmfndv7" path="res://assets/input/keyboard_b_outline.png" id="4_5nfdv"]
+[ext_resource type="Texture2D" uid="uid://bw3nb0oru0pam" path="res://assets/ui/keyboard_b.png" id="3_qpy72"]
+[ext_resource type="Texture2D" uid="uid://bmc2ijkmfndv7" path="res://assets/ui/keyboard_b_outline.png" id="4_5nfdv"]
[ext_resource type="AudioStream" uid="uid://cc6smyxkrrvfr" path="res://assets/audio/eine-kleine-bass.wav" id="5_58d2m"]
[ext_resource type="PackedScene" uid="uid://r5ec5td6b2b2" path="res://scenes/tilemaps.tscn" id="6_qpy72"]
diff --git a/scenes/musicians/cellist.tscn b/scenes/musicians/cellist.tscn
index 810c283..9753ac2 100644
--- a/scenes/musicians/cellist.tscn
+++ b/scenes/musicians/cellist.tscn
@@ -2,8 +2,8 @@
[ext_resource type="PackedScene" uid="uid://c1tceq1kcqngi" path="res://scenes/musicians/musician.tscn" id="1_gkxwc"]
[ext_resource type="SpriteFrames" uid="uid://bpfq0ubeyinny" path="res://resources/sprite_frames/cello_sprite_frames.tres" id="2_3cfa0"]
-[ext_resource type="Texture2D" uid="uid://dahurq3y0kh20" path="res://assets/input/keyboard_c.png" id="3_vjovb"]
-[ext_resource type="Texture2D" uid="uid://d1onhhk6xorit" path="res://assets/input/keyboard_c_outline.png" id="4_vmq6l"]
+[ext_resource type="Texture2D" uid="uid://dahurq3y0kh20" path="res://assets/ui/keyboard_c.png" id="3_vjovb"]
+[ext_resource type="Texture2D" uid="uid://d1onhhk6xorit" path="res://assets/ui/keyboard_c_outline.png" id="4_vmq6l"]
[ext_resource type="AudioStream" uid="uid://duovjdbif7wkw" path="res://assets/audio/eine-kleine-cello.wav" id="5_vjovb"]
[ext_resource type="PackedScene" uid="uid://r5ec5td6b2b2" path="res://scenes/tilemaps.tscn" id="6_vmq6l"]
diff --git a/scenes/musicians/conductor.tscn b/scenes/musicians/conductor.tscn
index 1c64bd7..f33c38d 100644
--- a/scenes/musicians/conductor.tscn
+++ b/scenes/musicians/conductor.tscn
@@ -1,8 +1,8 @@
[gd_scene format=3 uid="uid://drwm126itwavd"]
[ext_resource type="PackedScene" uid="uid://c1tceq1kcqngi" path="res://scenes/musicians/musician.tscn" id="1_td0jb"]
-[ext_resource type="Texture2D" uid="uid://bcw48038qg8od" path="res://assets/input/keyboard_r.png" id="3_lajfc"]
-[ext_resource type="Texture2D" uid="uid://do6jqp2l6nmwm" path="res://assets/input/keyboard_r_outline.png" id="4_grljo"]
+[ext_resource type="Texture2D" uid="uid://bcw48038qg8od" path="res://assets/ui/keyboard_r.png" id="3_lajfc"]
+[ext_resource type="Texture2D" uid="uid://do6jqp2l6nmwm" path="res://assets/ui/keyboard_r_outline.png" id="4_grljo"]
[ext_resource type="AudioStream" uid="uid://b8n6p428csquv" path="res://assets/audio/eine-kleine-click.wav" id="5_grljo"]
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_lajfc"]
diff --git a/scenes/musicians/musician.tscn b/scenes/musicians/musician.tscn
index 3c0cd2e..af6b024 100644
--- a/scenes/musicians/musician.tscn
+++ b/scenes/musicians/musician.tscn
@@ -1,24 +1,70 @@
[gd_scene format=3 uid="uid://c1tceq1kcqngi"]
-[ext_resource type="SpriteFrames" uid="uid://brmhup007maeh" path="res://resources/sprite_frames/conductor_sprite_frames.tres" id="1_7bqbn"]
+[ext_resource type="Texture2D" uid="uid://42h7vrqekyma" path="res://assets/sprites/symphonyguys.png" id="1_7bqbn"]
[ext_resource type="Script" uid="uid://djmn4qgj45j2p" path="res://scripts/musician.gd" id="1_ksqn6"]
-[ext_resource type="Texture2D" uid="uid://do6jqp2l6nmwm" path="res://assets/input/keyboard_r_outline.png" id="2_6yfn3"]
+[ext_resource type="Texture2D" uid="uid://cacp5ppga66l8" path="res://assets/ui/keyboard_s.svg" id="3_1d8vp"]
[ext_resource type="PackedScene" uid="uid://cwdkw1p371bks" path="res://scenes/input_prompt.tscn" id="3_6yfn3"]
-[ext_resource type="Texture2D" uid="uid://bcw48038qg8od" path="res://assets/input/keyboard_r.png" id="3_pbwia"]
[ext_resource type="PackedScene" uid="uid://ckx47081eegis" path="res://scenes/light.tscn" id="3_svwww"]
+[ext_resource type="Texture2D" uid="uid://ck6iss1he1kpq" path="res://assets/ui/keyboard_s_outline.svg" id="4_vrlc6"]
+[ext_resource type="AudioStream" uid="uid://b13l86o40lpvg" path="res://assets/audio/drone-trombone.wav" id="5_1d8vp"]
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_5pb5f"]
+atlas = ExtResource("1_7bqbn")
+region = Rect2(32, 256, 32, 32)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_0rdls"]
+atlas = ExtResource("1_7bqbn")
+region = Rect2(64, 256, 32, 32)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_5b1d5"]
+atlas = ExtResource("1_7bqbn")
+region = Rect2(96, 256, 32, 32)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_eoced"]
+atlas = ExtResource("1_7bqbn")
+region = Rect2(0, 256, 32, 32)
+
+[sub_resource type="SpriteFrames" id="SpriteFrames_1b7aj"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_5pb5f")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_0rdls")
+}, {
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_5b1d5")
+}],
+"loop": true,
+"name": &"default",
+"speed": 6.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_eoced")
+}],
+"loop": true,
+"name": &"idle",
+"speed": 5.0
+}]
[sub_resource type="OccluderPolygon2D" id="OccluderPolygon2D_1d8vp"]
polygon = PackedVector2Array(-4, 14, -1, 13, 0, 14)
[node name="Musician" type="AnimatedSprite2D" unique_id=233159387]
-sprite_frames = ExtResource("1_7bqbn")
+sprite_frames = SubResource("SpriteFrames_1b7aj")
+animation = &"idle"
+autoplay = "idle"
+frame_progress = 0.25206318
script = ExtResource("1_ksqn6")
-solid_texture = ExtResource("2_6yfn3")
-outline_texture = ExtResource("3_pbwia")
+solid_texture = ExtResource("3_1d8vp")
+outline_texture = ExtResource("4_vrlc6")
+input_action = "sample"
[node name="Audio" type="AudioStreamPlayer2D" parent="." unique_id=1183742914]
unique_name_in_owner = true
-autoplay = true
+stream = ExtResource("5_1d8vp")
[node name="Light" parent="." unique_id=428469575 instance=ExtResource("3_svwww")]
unique_name_in_owner = true
@@ -30,5 +76,23 @@ occluder = SubResource("OccluderPolygon2D_1d8vp")
[node name="InputPrompt" parent="." unique_id=590379112 instance=ExtResource("3_6yfn3")]
unique_name_in_owner = true
-position = Vector2(11, 8)
-texture = ExtResource("2_6yfn3")
+position = Vector2(16, 0)
+texture = ExtResource("4_vrlc6")
+
+[node name="MusicianCamera" type="Camera2D" parent="." unique_id=478462884]
+zoom = Vector2(12, 12)
+
+[node name="VolumeBar" type="ProgressBar" parent="." unique_id=2023225709]
+unique_name_in_owner = true
+custom_minimum_size = Vector2(24, 48)
+offset_left = 25.0
+offset_top = -25.0
+offset_right = 49.0
+offset_bottom = 23.0
+min_value = -80.0
+max_value = 0.0
+fill_mode = 3
+show_percentage = false
+
+[node name="BoostTimer" type="Timer" parent="." unique_id=1715371353]
+unique_name_in_owner = true
diff --git a/scenes/musicians/violinist.tscn b/scenes/musicians/violinist.tscn
index 80f6c46..e4852b3 100644
--- a/scenes/musicians/violinist.tscn
+++ b/scenes/musicians/violinist.tscn
@@ -2,8 +2,8 @@
[ext_resource type="PackedScene" uid="uid://c1tceq1kcqngi" path="res://scenes/musicians/musician.tscn" id="1_bgcse"]
[ext_resource type="SpriteFrames" uid="uid://bkq7b1w5jh1ec" path="res://resources/sprite_frames/viol_sprite_frames.tres" id="2_pec4u"]
-[ext_resource type="Texture2D" uid="uid://bm53tpx7cbocx" path="res://assets/input/keyboard_v.png" id="3_4d75b"]
-[ext_resource type="Texture2D" uid="uid://cctoyonq28i8q" path="res://assets/input/keyboard_v_outline.png" id="4_noys6"]
+[ext_resource type="Texture2D" uid="uid://bm53tpx7cbocx" path="res://assets/ui/keyboard_v.png" id="3_4d75b"]
+[ext_resource type="Texture2D" uid="uid://cctoyonq28i8q" path="res://assets/ui/keyboard_v_outline.png" id="4_noys6"]
[ext_resource type="AudioStream" uid="uid://bd01iv6fpqbdh" path="res://assets/audio/eine-kleine-viol.wav" id="5_pec4u"]
[ext_resource type="PackedScene" uid="uid://r5ec5td6b2b2" path="res://scenes/tilemaps.tscn" id="6_4d75b"]
diff --git a/scenes/rhythm_manager.tscn b/scenes/rhythm_manager.tscn
index c83f28b..796fd65 100644
--- a/scenes/rhythm_manager.tscn
+++ b/scenes/rhythm_manager.tscn
@@ -3,9 +3,8 @@
[ext_resource type="Script" uid="uid://bhbfogebu1di5" path="res://scripts/rhythm_manager.gd" id="1_0wx20"]
[ext_resource type="PackedScene" uid="uid://dduyumwk5v1ge" path="res://scenes/click_track.tscn" id="2_6v8l0"]
-[node name="RhythmManager" type="Node2D" unique_id=2036637300 node_paths=PackedStringArray("target_audio")]
+[node name="RhythmManager" type="Node2D" unique_id=2036637300]
script = ExtResource("1_0wx20")
-target_audio = NodePath("")
[node name="RhythmUI" type="Control" parent="." unique_id=510351076]
layout_mode = 3
diff --git a/scripts/musician.gd b/scripts/musician.gd
index 459d723..1ec1633 100644
--- a/scripts/musician.gd
+++ b/scripts/musician.gd
@@ -12,48 +12,99 @@ extends AnimatedSprite2D
@export var solid_texture: Texture2D
@export var outline_texture: Texture2D
+@export var beats_per_boost: int = 4
+@export var song_tempo: int = 120
+
+@export_enum("sample", "viol", "cello", "bass", "ready") var input_action: String
+
+var decay_length: float
+var decay_rate: float
var is_active: bool = false
+var is_boosted: bool
+var is_over_boosted: bool = false
+var seconds_per_beat: float
+var useconds_per_beat: int
@onready var audio: AudioStreamPlayer2D = %Audio
@onready var light: PointLight2D = %Light
@onready var occluder: LightOccluder2D = %Occluder
@onready var input_prompt: Sprite2D = %InputPrompt
+@onready var volume_bar: ProgressBar = %VolumeBar
+@onready var boost_timer: Timer = %BoostTimer
## OVERRIDES
func _ready() -> void:
light.visible = false
- audio.connect("finished", enter_exit)
+ _connect_signals()
+
input_prompt.texture = outline_texture
- audio.volume_db = -100.0
- is_active = true
+ seconds_per_beat = 60.0/float(song_tempo)
+ decay_length = beats_per_boost * seconds_per_beat
+ print("this musician's boosts will last %s seconds" % decay_length)
+ boost_timer.wait_time = decay_length
+ decay_rate = 80.0 / decay_length
+ print("so the volume will drop by %s db per second" % decay_rate)
+func _process(delta: float) -> void:
+ if is_over_boosted:
+ distort_pitch(sin(Time.get_ticks_msec()))
+ if is_active and not is_boosted:
+ drop_volume(decay_rate * delta)
+ volume_bar.value = audio.volume_db
-func _process(_delta: float) -> void:
- pass
-
-func _physics_process(_delta: float) -> void:
- pass
+func _unhandled_input(event: InputEvent) -> void:
+ if event.is_action_pressed("play_pause"):
+ play_pause()
+ if event.is_action_pressed(input_action):
+ boost_volume()
## CORE
-func enter_exit() -> void:
+func boost_volume() -> void:
+ if is_boosted:
+ is_over_boosted = true
+ audio.volume_db = 0.0
+ is_boosted = true
+ boost_timer.start()
+
+func distort_pitch(distortion: float) -> void:
+ print("distorting by %s" % distortion)
+ audio.pitch_scale += distortion
+ print("pitch scale is %s" % audio.pitch_scale)
+
+func drop_volume(d_r: float) -> void:
+ audio.volume_db -= d_r
+
+func play_pause() -> void:
if is_active:
play("idle")
- #audio.stop()
- audio.volume_db = -100.0
+ audio.stop()
light.visible = false
is_active = false
input_prompt.texture = outline_texture
else:
play("default")
- #audio.play()
- audio.volume_db = 0.0
+ audio.play()
+ if not is_boosted:
+ is_boosted = true
+ boost_timer.start()
light.visible = true
is_active = true
input_prompt.texture = solid_texture
## PRIVATE/HELPER
+func _connect_signals() -> void:
+ boost_timer.connect("timeout", on_boost_timer_timeout)
+ audio.connect("finished", play_pause)
+
## RECEIVERS
+func on_boost_timer_timeout() -> void:
+ print("boost over")
+ boost_timer.stop()
+ is_boosted = false
+ is_over_boosted = false
+ audio.pitch_scale = 1.0
+
## SETTERS/GETTERS