From 2ae3e496620edabae38a65886401bfb5ebdc5b65 Mon Sep 17 00:00:00 2001 From: LifeHckr Date: Thu, 22 May 2025 17:27:43 -0700 Subject: [PATCH 01/14] Initial NoteChart Refactor Allow NoteChart to carry the weight of SongData This also allows all NoteCharts to be preloaded from disk --- Audio/songMaps/{Song1.tres => BossBlood.tres} | 115 +++++------ Audio/songMaps/CyberFoxSong.tres | 9 +- Audio/songMaps/EcholaneSong.tres | 9 +- Audio/songMaps/FrostWaltz.tres | 3 + Audio/songMaps/{Song3.tres => GWS.tres} | 133 ++++++------- Audio/songMaps/Gobbler.tres | 9 +- Audio/songMaps/HoloRepeat.tres | 17 +- Audio/songMaps/KeythuluSong.tres | 9 +- Audio/songMaps/Mushroom.tres | 3 + .../{Song2.tres => ParasiflyDouble.tres} | 65 ++++--- Audio/songMaps/ParasiflySingle.tres | 129 +++++++++++++ Audio/songMaps/Shapes.tres | 9 +- Audio/songMaps/Spider.tres | 9 +- Audio/songMaps/SquirkelSong.tres | 9 +- Audio/songMaps/TutorialBoss176_7.tres | 9 +- Audio/songMaps/TutorialSong.tres | 3 + Classes/MidiMaestro/MidiMaestro.cs | 8 +- Classes/MidiMaestro/NoteChart.cs | 9 + Classes/MidiMaestro/SongTemplate.cs | 16 +- Globals/FunkEngineNameSpace.cs | 9 - Globals/Scribe.cs | 178 ++++-------------- .../BattleDirector/Scripts/BattleDirector.cs | 13 +- Scenes/BattleDirector/Scripts/Conductor.cs | 6 +- Scenes/ChartViewport/Scripts/ChartManager.cs | 10 +- 24 files changed, 420 insertions(+), 369 deletions(-) rename Audio/songMaps/{Song1.tres => BossBlood.tres} (50%) rename Audio/songMaps/{Song3.tres => GWS.tres} (51%) rename Audio/songMaps/{Song2.tres => ParasiflyDouble.tres} (63%) create mode 100644 Audio/songMaps/ParasiflySingle.tres diff --git a/Audio/songMaps/Song1.tres b/Audio/songMaps/BossBlood.tres similarity index 50% rename from Audio/songMaps/Song1.tres rename to Audio/songMaps/BossBlood.tres index 7e95ae2e..b46ffee4 100644 --- a/Audio/songMaps/Song1.tres +++ b/Audio/songMaps/BossBlood.tres @@ -1,251 +1,254 @@ -[gd_resource type="Resource" load_steps=51 format=3] +[gd_resource type="Resource" load_steps=51 format=3 uid="uid://iumt7xjdgn6x"] -[ext_resource type="Script" path="res://Classes/MidiMaestro/NoteInfo.cs" id="1_5ry1j"] -[ext_resource type="Script" path="res://Classes/MidiMaestro/NoteChart.cs" id="2_gbqfw"] +[ext_resource type="Script" uid="uid://bhbpcmtr6e6pk" path="res://Classes/MidiMaestro/NoteInfo.cs" id="1_mc06a"] +[ext_resource type="Script" uid="uid://bnpnavb5lwobj" path="res://Classes/MidiMaestro/NoteChart.cs" id="2_uhxkd"] [sub_resource type="Resource" id="Resource_h1ijp"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 9.0 Length = 0.0 [sub_resource type="Resource" id="Resource_ysbfa"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 25.0 Length = 0.0 [sub_resource type="Resource" id="Resource_j4c1l"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 49.0 Length = 0.0 [sub_resource type="Resource" id="Resource_lktv3"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 53.0 Length = 0.0 [sub_resource type="Resource" id="Resource_b0kfm"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 57.0 Length = 0.0 [sub_resource type="Resource" id="Resource_xbckj"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 34.0 Length = 0.0 [sub_resource type="Resource" id="Resource_gs0vr"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 43.0 Length = 0.0 [sub_resource type="Resource" id="Resource_4ygvu"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 44.0 Length = 0.0 [sub_resource type="Resource" id="Resource_efsyh"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 17.0 Length = 0.0 [sub_resource type="Resource" id="Resource_mf3c7"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 5.0 Length = 0.0 [sub_resource type="Resource" id="Resource_f15o4"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 13.0 Length = 0.0 [sub_resource type="Resource" id="Resource_hsn40"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 29.0 Length = 0.0 [sub_resource type="Resource" id="Resource_fdk4c"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 33.0 Length = 0.0 [sub_resource type="Resource" id="Resource_1aoo3"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 37.0 Length = 0.0 [sub_resource type="Resource" id="Resource_wlcjv"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 41.0 Length = 0.0 [sub_resource type="Resource" id="Resource_i1n24"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 45.0 Length = 0.0 [sub_resource type="Resource" id="Resource_2jtmb"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 57.0 Length = 0.0 [sub_resource type="Resource" id="Resource_qx4ac"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 50.0 Length = 0.0 [sub_resource type="Resource" id="Resource_csfw3"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 59.0 Length = 0.0 [sub_resource type="Resource" id="Resource_l3uo1"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 32.0 Length = 0.0 [sub_resource type="Resource" id="Resource_erw8g"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 44.0 Length = 0.0 [sub_resource type="Resource" id="Resource_alq0l"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 36.0 Length = 0.0 [sub_resource type="Resource" id="Resource_rkc43"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 4.0 Length = 0.0 [sub_resource type="Resource" id="Resource_tudf6"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 8.0 Length = 0.0 [sub_resource type="Resource" id="Resource_tlvlu"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 12.0 Length = 0.0 [sub_resource type="Resource" id="Resource_p167p"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 16.0 Length = 0.0 [sub_resource type="Resource" id="Resource_dc6jo"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 20.0 Length = 0.0 [sub_resource type="Resource" id="Resource_w3cuf"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 24.0 Length = 0.0 [sub_resource type="Resource" id="Resource_vjysj"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 28.0 Length = 0.0 [sub_resource type="Resource" id="Resource_aqpy1"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 40.0 Length = 0.0 [sub_resource type="Resource" id="Resource_ctve7"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 48.0 Length = 0.0 [sub_resource type="Resource" id="Resource_nl7kj"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 56.0 Length = 0.0 [sub_resource type="Resource" id="Resource_ogyoe"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 60.0 Length = 0.0 [sub_resource type="Resource" id="Resource_q33e3"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 61.0 Length = 0.0 [sub_resource type="Resource" id="Resource_vqw4k"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 52.0 Length = 0.0 [sub_resource type="Resource" id="Resource_s8jc0"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 33.0 Length = 0.0 [sub_resource type="Resource" id="Resource_fjllr"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 36.0 Length = 0.0 [sub_resource type="Resource" id="Resource_y2wfd"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 17.0 Length = 0.0 [sub_resource type="Resource" id="Resource_cb61k"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 41.0 Length = 0.0 [sub_resource type="Resource" id="Resource_hbkgo"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 49.0 Length = 0.0 [sub_resource type="Resource" id="Resource_80wib"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 35.0 Length = 0.0 [sub_resource type="Resource" id="Resource_jsm3m"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 50.0 Length = 0.0 [sub_resource type="Resource" id="Resource_ryg8k"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 51.0 Length = 0.0 [sub_resource type="Resource" id="Resource_gj6xo"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 58.0 Length = 0.0 [sub_resource type="Resource" id="Resource_112dg"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 59.0 Length = 0.0 [sub_resource type="Resource" id="Resource_eguul"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 42.0 Length = 0.0 [sub_resource type="Resource" id="Resource_tdy7a"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 21.0 Length = 0.0 [sub_resource type="Resource" id="Resource_d7de0"] -script = ExtResource("1_5ry1j") +script = ExtResource("1_mc06a") Beat = 26.0 Length = 0.0 [resource] -script = ExtResource("2_gbqfw") -UpLaneData = [SubResource("Resource_fjllr"), SubResource("Resource_y2wfd"), SubResource("Resource_cb61k"), SubResource("Resource_hbkgo"), SubResource("Resource_80wib"), SubResource("Resource_jsm3m"), SubResource("Resource_ryg8k"), SubResource("Resource_gj6xo"), SubResource("Resource_112dg"), SubResource("Resource_eguul"), SubResource("Resource_tdy7a"), SubResource("Resource_d7de0")] -DownLaneData = [SubResource("Resource_h1ijp"), SubResource("Resource_ysbfa"), SubResource("Resource_j4c1l"), SubResource("Resource_lktv3"), SubResource("Resource_b0kfm"), SubResource("Resource_xbckj"), SubResource("Resource_gs0vr"), SubResource("Resource_4ygvu"), SubResource("Resource_efsyh")] -LeftLaneData = [SubResource("Resource_mf3c7"), SubResource("Resource_f15o4"), SubResource("Resource_hsn40"), SubResource("Resource_fdk4c"), SubResource("Resource_1aoo3"), SubResource("Resource_wlcjv"), SubResource("Resource_i1n24"), SubResource("Resource_2jtmb"), SubResource("Resource_qx4ac"), SubResource("Resource_csfw3")] -RightLaneData = [SubResource("Resource_l3uo1"), SubResource("Resource_erw8g"), SubResource("Resource_alq0l"), SubResource("Resource_rkc43"), SubResource("Resource_tudf6"), SubResource("Resource_tlvlu"), SubResource("Resource_p167p"), SubResource("Resource_dc6jo"), SubResource("Resource_w3cuf"), SubResource("Resource_vjysj"), SubResource("Resource_aqpy1"), SubResource("Resource_ctve7"), SubResource("Resource_nl7kj"), SubResource("Resource_ogyoe"), SubResource("Resource_q33e3"), SubResource("Resource_vqw4k"), SubResource("Resource_s8jc0")] +script = ExtResource("2_uhxkd") +Bpm = 120 +NumLoops = 5 +SongMapLocation = "Song1.ogg" +UpLaneData = Array[ExtResource("1_mc06a")]([SubResource("Resource_fjllr"), SubResource("Resource_y2wfd"), SubResource("Resource_cb61k"), SubResource("Resource_hbkgo"), SubResource("Resource_80wib"), SubResource("Resource_jsm3m"), SubResource("Resource_ryg8k"), SubResource("Resource_gj6xo"), SubResource("Resource_112dg"), SubResource("Resource_eguul"), SubResource("Resource_tdy7a"), SubResource("Resource_d7de0")]) +DownLaneData = Array[ExtResource("1_mc06a")]([SubResource("Resource_h1ijp"), SubResource("Resource_ysbfa"), SubResource("Resource_j4c1l"), SubResource("Resource_lktv3"), SubResource("Resource_b0kfm"), SubResource("Resource_xbckj"), SubResource("Resource_gs0vr"), SubResource("Resource_4ygvu"), SubResource("Resource_efsyh")]) +LeftLaneData = Array[ExtResource("1_mc06a")]([SubResource("Resource_mf3c7"), SubResource("Resource_f15o4"), SubResource("Resource_hsn40"), SubResource("Resource_fdk4c"), SubResource("Resource_1aoo3"), SubResource("Resource_wlcjv"), SubResource("Resource_i1n24"), SubResource("Resource_2jtmb"), SubResource("Resource_qx4ac"), SubResource("Resource_csfw3")]) +RightLaneData = Array[ExtResource("1_mc06a")]([SubResource("Resource_l3uo1"), SubResource("Resource_erw8g"), SubResource("Resource_alq0l"), SubResource("Resource_rkc43"), SubResource("Resource_tudf6"), SubResource("Resource_tlvlu"), SubResource("Resource_p167p"), SubResource("Resource_dc6jo"), SubResource("Resource_w3cuf"), SubResource("Resource_vjysj"), SubResource("Resource_aqpy1"), SubResource("Resource_ctve7"), SubResource("Resource_nl7kj"), SubResource("Resource_ogyoe"), SubResource("Resource_q33e3"), SubResource("Resource_vqw4k"), SubResource("Resource_s8jc0")]) diff --git a/Audio/songMaps/CyberFoxSong.tres b/Audio/songMaps/CyberFoxSong.tres index 27df1cea..16041d18 100644 --- a/Audio/songMaps/CyberFoxSong.tres +++ b/Audio/songMaps/CyberFoxSong.tres @@ -1,7 +1,7 @@ -[gd_resource type="Resource" load_steps=25 format=3] +[gd_resource type="Resource" load_steps=25 format=3 uid="uid://xhi8r70ht3dp"] -[ext_resource type="Script" path="res://Classes/MidiMaestro/NoteInfo.cs" id="1_8ueh4"] -[ext_resource type="Script" path="res://Classes/MidiMaestro/NoteChart.cs" id="2_s63u8"] +[ext_resource type="Script" uid="uid://bhbpcmtr6e6pk" path="res://Classes/MidiMaestro/NoteInfo.cs" id="1_8ueh4"] +[ext_resource type="Script" uid="uid://bnpnavb5lwobj" path="res://Classes/MidiMaestro/NoteChart.cs" id="2_s63u8"] [sub_resource type="Resource" id="Resource_ljr32"] script = ExtResource("1_8ueh4") @@ -115,6 +115,9 @@ Length = 0.0 [resource] script = ExtResource("2_s63u8") +Bpm = 180 +NumLoops = 1 +SongMapLocation = "CyberFoxSong.ogg" UpLaneData = Array[ExtResource("1_8ueh4")]([SubResource("Resource_50tbs"), SubResource("Resource_ttd2q"), SubResource("Resource_nnlde"), SubResource("Resource_rwedv"), SubResource("Resource_3eydr"), SubResource("Resource_83big")]) DownLaneData = Array[ExtResource("1_8ueh4")]([SubResource("Resource_ljr32"), SubResource("Resource_bb3yp"), SubResource("Resource_852ml"), SubResource("Resource_38nu8"), SubResource("Resource_ct6sp"), SubResource("Resource_8ueh4"), SubResource("Resource_7lpnw")]) LeftLaneData = Array[ExtResource("1_8ueh4")]([SubResource("Resource_yk705"), SubResource("Resource_oocdv"), SubResource("Resource_uswjw"), SubResource("Resource_e1hbr")]) diff --git a/Audio/songMaps/EcholaneSong.tres b/Audio/songMaps/EcholaneSong.tres index 3713f118..2b740fe9 100644 --- a/Audio/songMaps/EcholaneSong.tres +++ b/Audio/songMaps/EcholaneSong.tres @@ -1,7 +1,7 @@ -[gd_resource type="Resource" load_steps=46 format=3] +[gd_resource type="Resource" load_steps=46 format=3 uid="uid://2oiuwngh6w4p"] -[ext_resource type="Script" path="res://Classes/MidiMaestro/NoteInfo.cs" id="1_vkj58"] -[ext_resource type="Script" path="res://Classes/MidiMaestro/NoteChart.cs" id="2_ulihw"] +[ext_resource type="Script" uid="uid://bhbpcmtr6e6pk" path="res://Classes/MidiMaestro/NoteInfo.cs" id="1_vkj58"] +[ext_resource type="Script" uid="uid://bnpnavb5lwobj" path="res://Classes/MidiMaestro/NoteChart.cs" id="2_ulihw"] [sub_resource type="Resource" id="Resource_vkj58"] script = ExtResource("1_vkj58") @@ -220,6 +220,9 @@ Length = 0.0 [resource] script = ExtResource("2_ulihw") +Bpm = 120 +NumLoops = 4 +SongMapLocation = "EcholaneSong.ogg" UpLaneData = Array[ExtResource("1_vkj58")]([SubResource("Resource_3lcfd"), SubResource("Resource_b1quw"), SubResource("Resource_lq0og"), SubResource("Resource_56y1a"), SubResource("Resource_jljr5"), SubResource("Resource_bxx88"), SubResource("Resource_bdoqu"), SubResource("Resource_cr07w")]) DownLaneData = Array[ExtResource("1_vkj58")]([SubResource("Resource_vkj58"), SubResource("Resource_ulihw"), SubResource("Resource_t8863"), SubResource("Resource_6g1by"), SubResource("Resource_m02wy"), SubResource("Resource_t1nlw"), SubResource("Resource_iknre"), SubResource("Resource_icwn4"), SubResource("Resource_vkj1q"), SubResource("Resource_g5inb")]) LeftLaneData = Array[ExtResource("1_vkj58")]([SubResource("Resource_7jmhk"), SubResource("Resource_plxvd"), SubResource("Resource_jva8p"), SubResource("Resource_pref2"), SubResource("Resource_3tvlw"), SubResource("Resource_iq4by"), SubResource("Resource_rekwa"), SubResource("Resource_xbnbk"), SubResource("Resource_byp8i"), SubResource("Resource_dime5")]) diff --git a/Audio/songMaps/FrostWaltz.tres b/Audio/songMaps/FrostWaltz.tres index 6562d14b..81f0bdbc 100644 --- a/Audio/songMaps/FrostWaltz.tres +++ b/Audio/songMaps/FrostWaltz.tres @@ -95,6 +95,9 @@ Length = 0.0 [resource] script = ExtResource("2_ipsne") +Bpm = 99 +NumLoops = 5 +SongMapLocation = "FrostWaltz.ogg" UpLaneData = Array[ExtResource("1_8s5n5")]([SubResource("Resource_ffi45"), SubResource("Resource_3tfr0"), SubResource("Resource_ipsne")]) DownLaneData = Array[ExtResource("1_8s5n5")]([SubResource("Resource_dwqep"), SubResource("Resource_ukqut"), SubResource("Resource_x1mw3"), SubResource("Resource_54umo"), SubResource("Resource_o0hqd"), SubResource("Resource_8s5n5"), SubResource("Resource_bsuy3")]) LeftLaneData = Array[ExtResource("1_8s5n5")]([SubResource("Resource_828xi"), SubResource("Resource_gfy4r"), SubResource("Resource_716y2"), SubResource("Resource_6sju3"), SubResource("Resource_h8r3u")]) diff --git a/Audio/songMaps/Song3.tres b/Audio/songMaps/GWS.tres similarity index 51% rename from Audio/songMaps/Song3.tres rename to Audio/songMaps/GWS.tres index c8e3c520..a3c9d5c3 100644 --- a/Audio/songMaps/Song3.tres +++ b/Audio/songMaps/GWS.tres @@ -1,296 +1,299 @@ -[gd_resource type="Resource" load_steps=60 format=3] +[gd_resource type="Resource" load_steps=60 format=3 uid="uid://cnxhv0busahh0"] -[ext_resource type="Script" path="res://Classes/MidiMaestro/NoteInfo.cs" id="1_7kndb"] -[ext_resource type="Script" path="res://Classes/MidiMaestro/NoteChart.cs" id="2_xg88o"] +[ext_resource type="Script" uid="uid://bhbpcmtr6e6pk" path="res://Classes/MidiMaestro/NoteInfo.cs" id="1_6fik5"] +[ext_resource type="Script" uid="uid://bnpnavb5lwobj" path="res://Classes/MidiMaestro/NoteChart.cs" id="2_4vdmh"] [sub_resource type="Resource" id="Resource_11qbm"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 17.0 Length = 0.0 [sub_resource type="Resource" id="Resource_hrrtc"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 20.0 Length = 0.0 [sub_resource type="Resource" id="Resource_rmog3"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 22.0 Length = 0.0 [sub_resource type="Resource" id="Resource_tnqsp"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 25.0 Length = 0.0 [sub_resource type="Resource" id="Resource_fldsc"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 38.0 Length = 0.0 [sub_resource type="Resource" id="Resource_ntp27"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 35.0 Length = 0.0 [sub_resource type="Resource" id="Resource_7nmxt"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 49.0 Length = 0.0 [sub_resource type="Resource" id="Resource_47jch"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 57.0 Length = 0.0 [sub_resource type="Resource" id="Resource_kp5f0"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 41.0 Length = 0.0 [sub_resource type="Resource" id="Resource_v8s33"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 52.0 Length = 0.0 [sub_resource type="Resource" id="Resource_hrafv"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 61.0 Length = 0.0 [sub_resource type="Resource" id="Resource_d50tw"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 4.0 Length = 0.0 [sub_resource type="Resource" id="Resource_a8amf"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 44.0 Length = 0.0 [sub_resource type="Resource" id="Resource_mbtm7"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 12.0 Length = 0.0 [sub_resource type="Resource" id="Resource_ynh6c"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 28.0 Length = 0.0 [sub_resource type="Resource" id="Resource_marsf"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 33.0 Length = 0.0 [sub_resource type="Resource" id="Resource_wkvcn"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 18.0 Length = 0.0 [sub_resource type="Resource" id="Resource_woki6"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 21.0 Length = 0.0 [sub_resource type="Resource" id="Resource_gm3ao"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 24.0 Length = 0.0 [sub_resource type="Resource" id="Resource_1qfq5"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 56.0 Length = 0.0 [sub_resource type="Resource" id="Resource_ywfrj"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 60.0 Length = 0.0 [sub_resource type="Resource" id="Resource_rxusk"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 8.0 Length = 0.0 [sub_resource type="Resource" id="Resource_r88cj"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 36.0 Length = 0.0 [sub_resource type="Resource" id="Resource_5e2go"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 50.0 Length = 0.0 [sub_resource type="Resource" id="Resource_s083v"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 40.0 Length = 0.0 [sub_resource type="Resource" id="Resource_jc0cy"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 52.0 Length = 0.0 [sub_resource type="Resource" id="Resource_3oete"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 61.0 Length = 0.0 [sub_resource type="Resource" id="Resource_b24fs"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 5.0 Length = 0.0 [sub_resource type="Resource" id="Resource_45x0b"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 33.0 Length = 0.0 [sub_resource type="Resource" id="Resource_x70wl"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 45.0 Length = 0.0 [sub_resource type="Resource" id="Resource_6e30o"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 29.0 Length = 0.0 [sub_resource type="Resource" id="Resource_8l6ei"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 32.0 Length = 0.0 [sub_resource type="Resource" id="Resource_31o0y"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 16.0 Length = 0.0 [sub_resource type="Resource" id="Resource_2wwc7"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 56.0 Length = 0.0 [sub_resource type="Resource" id="Resource_m5e6q"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 24.0 Length = 0.0 [sub_resource type="Resource" id="Resource_v8sin"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 38.0 Length = 0.0 [sub_resource type="Resource" id="Resource_ykqor"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 48.0 Length = 0.0 [sub_resource type="Resource" id="Resource_cbmdd"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 34.0 Length = 0.0 [sub_resource type="Resource" id="Resource_ak0tp"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 40.0 Length = 0.0 [sub_resource type="Resource" id="Resource_pd2wi"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 53.0 Length = 0.0 [sub_resource type="Resource" id="Resource_11m2d"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 3.0 Length = 0.0 [sub_resource type="Resource" id="Resource_7totf"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 8.0 Length = 0.0 [sub_resource type="Resource" id="Resource_ob06q"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 45.0 Length = 0.0 [sub_resource type="Resource" id="Resource_s6r1b"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 29.0 Length = 0.0 [sub_resource type="Resource" id="Resource_3gjtl"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 19.0 Length = 0.0 [sub_resource type="Resource" id="Resource_vdnsu"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 25.0 Length = 0.0 [sub_resource type="Resource" id="Resource_3wyug"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 51.0 Length = 0.0 [sub_resource type="Resource" id="Resource_6kji1"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 60.0 Length = 0.0 [sub_resource type="Resource" id="Resource_w6jqv"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 54.0 Length = 0.0 [sub_resource type="Resource" id="Resource_083mg"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 37.0 Length = 0.0 [sub_resource type="Resource" id="Resource_dsf4k"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 57.0 Length = 0.0 [sub_resource type="Resource" id="Resource_2woca"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 41.0 Length = 0.0 [sub_resource type="Resource" id="Resource_jsj5h"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 6.0 Length = 0.0 [sub_resource type="Resource" id="Resource_qoqm3"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 32.0 Length = 0.0 [sub_resource type="Resource" id="Resource_nob8r"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 44.0 Length = 0.0 [sub_resource type="Resource" id="Resource_a6epf"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 12.0 Length = 0.0 [sub_resource type="Resource" id="Resource_ekjhc"] -script = ExtResource("1_7kndb") +script = ExtResource("1_6fik5") Beat = 28.0 Length = 0.0 [resource] -script = ExtResource("2_xg88o") -UpLaneData = [SubResource("Resource_3gjtl"), SubResource("Resource_vdnsu"), SubResource("Resource_3wyug"), SubResource("Resource_6kji1"), SubResource("Resource_w6jqv"), SubResource("Resource_083mg"), SubResource("Resource_dsf4k"), SubResource("Resource_2woca"), SubResource("Resource_jsj5h"), SubResource("Resource_qoqm3"), SubResource("Resource_nob8r"), SubResource("Resource_a6epf"), SubResource("Resource_ekjhc")] -DownLaneData = [SubResource("Resource_11qbm"), SubResource("Resource_hrrtc"), SubResource("Resource_rmog3"), SubResource("Resource_tnqsp"), SubResource("Resource_fldsc"), SubResource("Resource_ntp27"), SubResource("Resource_7nmxt"), SubResource("Resource_47jch"), SubResource("Resource_kp5f0"), SubResource("Resource_v8s33"), SubResource("Resource_hrafv"), SubResource("Resource_d50tw"), SubResource("Resource_a8amf"), SubResource("Resource_mbtm7"), SubResource("Resource_ynh6c"), SubResource("Resource_marsf")] -LeftLaneData = [SubResource("Resource_wkvcn"), SubResource("Resource_woki6"), SubResource("Resource_gm3ao"), SubResource("Resource_1qfq5"), SubResource("Resource_ywfrj"), SubResource("Resource_rxusk"), SubResource("Resource_r88cj"), SubResource("Resource_5e2go"), SubResource("Resource_s083v"), SubResource("Resource_jc0cy"), SubResource("Resource_3oete"), SubResource("Resource_b24fs"), SubResource("Resource_45x0b"), SubResource("Resource_x70wl"), SubResource("Resource_6e30o"), SubResource("Resource_8l6ei")] -RightLaneData = [SubResource("Resource_31o0y"), SubResource("Resource_2wwc7"), SubResource("Resource_m5e6q"), SubResource("Resource_v8sin"), SubResource("Resource_ykqor"), SubResource("Resource_cbmdd"), SubResource("Resource_ak0tp"), SubResource("Resource_pd2wi"), SubResource("Resource_11m2d"), SubResource("Resource_7totf"), SubResource("Resource_ob06q"), SubResource("Resource_s6r1b")] +script = ExtResource("2_4vdmh") +Bpm = 120 +NumLoops = 1 +SongMapLocation = "Song3.ogg" +UpLaneData = Array[ExtResource("1_6fik5")]([SubResource("Resource_3gjtl"), SubResource("Resource_vdnsu"), SubResource("Resource_3wyug"), SubResource("Resource_6kji1"), SubResource("Resource_w6jqv"), SubResource("Resource_083mg"), SubResource("Resource_dsf4k"), SubResource("Resource_2woca"), SubResource("Resource_jsj5h"), SubResource("Resource_qoqm3"), SubResource("Resource_nob8r"), SubResource("Resource_a6epf"), SubResource("Resource_ekjhc")]) +DownLaneData = Array[ExtResource("1_6fik5")]([SubResource("Resource_11qbm"), SubResource("Resource_hrrtc"), SubResource("Resource_rmog3"), SubResource("Resource_tnqsp"), SubResource("Resource_fldsc"), SubResource("Resource_ntp27"), SubResource("Resource_7nmxt"), SubResource("Resource_47jch"), SubResource("Resource_kp5f0"), SubResource("Resource_v8s33"), SubResource("Resource_hrafv"), SubResource("Resource_d50tw"), SubResource("Resource_a8amf"), SubResource("Resource_mbtm7"), SubResource("Resource_ynh6c"), SubResource("Resource_marsf")]) +LeftLaneData = Array[ExtResource("1_6fik5")]([SubResource("Resource_wkvcn"), SubResource("Resource_woki6"), SubResource("Resource_gm3ao"), SubResource("Resource_1qfq5"), SubResource("Resource_ywfrj"), SubResource("Resource_rxusk"), SubResource("Resource_r88cj"), SubResource("Resource_5e2go"), SubResource("Resource_s083v"), SubResource("Resource_jc0cy"), SubResource("Resource_3oete"), SubResource("Resource_b24fs"), SubResource("Resource_45x0b"), SubResource("Resource_x70wl"), SubResource("Resource_6e30o"), SubResource("Resource_8l6ei")]) +RightLaneData = Array[ExtResource("1_6fik5")]([SubResource("Resource_31o0y"), SubResource("Resource_2wwc7"), SubResource("Resource_m5e6q"), SubResource("Resource_v8sin"), SubResource("Resource_ykqor"), SubResource("Resource_cbmdd"), SubResource("Resource_ak0tp"), SubResource("Resource_pd2wi"), SubResource("Resource_11m2d"), SubResource("Resource_7totf"), SubResource("Resource_ob06q"), SubResource("Resource_s6r1b")]) diff --git a/Audio/songMaps/Gobbler.tres b/Audio/songMaps/Gobbler.tres index ec3b18b5..d205f3ea 100644 --- a/Audio/songMaps/Gobbler.tres +++ b/Audio/songMaps/Gobbler.tres @@ -1,7 +1,7 @@ -[gd_resource type="Resource" load_steps=45 format=3] +[gd_resource type="Resource" load_steps=45 format=3 uid="uid://dfs1r7rw8x2fv"] -[ext_resource type="Script" path="res://Classes/MidiMaestro/NoteInfo.cs" id="1_tuude"] -[ext_resource type="Script" path="res://Classes/MidiMaestro/NoteChart.cs" id="2_hfiht"] +[ext_resource type="Script" uid="uid://bhbpcmtr6e6pk" path="res://Classes/MidiMaestro/NoteInfo.cs" id="1_tuude"] +[ext_resource type="Script" uid="uid://bnpnavb5lwobj" path="res://Classes/MidiMaestro/NoteChart.cs" id="2_hfiht"] [sub_resource type="Resource" id="Resource_i2qfq"] script = ExtResource("1_tuude") @@ -215,6 +215,9 @@ Length = 0.0 [resource] script = ExtResource("2_hfiht") +Bpm = 120 +NumLoops = 6 +SongMapLocation = "Gobbler.ogg" UpLaneData = Array[ExtResource("1_tuude")]([SubResource("Resource_8xjpx"), SubResource("Resource_wsgab"), SubResource("Resource_qwdig"), SubResource("Resource_66kxm"), SubResource("Resource_7ilo7"), SubResource("Resource_a20b3"), SubResource("Resource_pqrtt"), SubResource("Resource_pwr5v"), SubResource("Resource_rt0eg"), SubResource("Resource_8g5uo")]) DownLaneData = Array[ExtResource("1_tuude")]([SubResource("Resource_i2qfq"), SubResource("Resource_clkmt"), SubResource("Resource_2yhqr"), SubResource("Resource_avloc"), SubResource("Resource_7ipoh"), SubResource("Resource_rc4vs"), SubResource("Resource_hsxfe"), SubResource("Resource_5uul0"), SubResource("Resource_20iwo")]) LeftLaneData = Array[ExtResource("1_tuude")]([SubResource("Resource_q3mne"), SubResource("Resource_klde2"), SubResource("Resource_6wxhr"), SubResource("Resource_4fyoq"), SubResource("Resource_1hg6d"), SubResource("Resource_6on7t"), SubResource("Resource_eq4ob"), SubResource("Resource_2rtaq"), SubResource("Resource_t5na6")]) diff --git a/Audio/songMaps/HoloRepeat.tres b/Audio/songMaps/HoloRepeat.tres index a51e8538..4ff33e6a 100644 --- a/Audio/songMaps/HoloRepeat.tres +++ b/Audio/songMaps/HoloRepeat.tres @@ -1,7 +1,7 @@ -[gd_resource type="Resource" load_steps=27 format=3] +[gd_resource type="Resource" load_steps=27 format=3 uid="uid://dh7fdqbs6mwrq"] -[ext_resource type="Script" path="res://Classes/MidiMaestro/NoteInfo.cs" id="1_y4wy8"] -[ext_resource type="Script" path="res://Classes/MidiMaestro/NoteChart.cs" id="2_1kkot"] +[ext_resource type="Script" uid="uid://bhbpcmtr6e6pk" path="res://Classes/MidiMaestro/NoteInfo.cs" id="1_y4wy8"] +[ext_resource type="Script" uid="uid://bnpnavb5lwobj" path="res://Classes/MidiMaestro/NoteChart.cs" id="2_1kkot"] [sub_resource type="Resource" id="Resource_wxfu7"] script = ExtResource("1_y4wy8") @@ -125,7 +125,10 @@ Length = 0.0 [resource] script = ExtResource("2_1kkot") -UpLaneData = [SubResource("Resource_rclq0"), SubResource("Resource_d15sy"), SubResource("Resource_xylpo"), SubResource("Resource_c4e5y"), SubResource("Resource_7lbis"), SubResource("Resource_8usgo")] -DownLaneData = [SubResource("Resource_wxfu7"), SubResource("Resource_cjafy"), SubResource("Resource_jdotv"), SubResource("Resource_per1x"), SubResource("Resource_lw4uc"), SubResource("Resource_nxcmx")] -LeftLaneData = [SubResource("Resource_x0uap"), SubResource("Resource_1m0i6"), SubResource("Resource_1mpgo"), SubResource("Resource_iuho0"), SubResource("Resource_uj1b6"), SubResource("Resource_fi760")] -RightLaneData = [SubResource("Resource_1fc0d"), SubResource("Resource_0vl64"), SubResource("Resource_j64im"), SubResource("Resource_t15ay"), SubResource("Resource_v3dna"), SubResource("Resource_8lcjo")] +Bpm = 130 +NumLoops = 1 +SongMapLocation = "Holo_ThereItIs.ogg" +UpLaneData = Array[ExtResource("1_y4wy8")]([SubResource("Resource_rclq0"), SubResource("Resource_d15sy"), SubResource("Resource_xylpo"), SubResource("Resource_c4e5y"), SubResource("Resource_7lbis"), SubResource("Resource_8usgo")]) +DownLaneData = Array[ExtResource("1_y4wy8")]([SubResource("Resource_wxfu7"), SubResource("Resource_cjafy"), SubResource("Resource_jdotv"), SubResource("Resource_per1x"), SubResource("Resource_lw4uc"), SubResource("Resource_nxcmx")]) +LeftLaneData = Array[ExtResource("1_y4wy8")]([SubResource("Resource_x0uap"), SubResource("Resource_1m0i6"), SubResource("Resource_1mpgo"), SubResource("Resource_iuho0"), SubResource("Resource_uj1b6"), SubResource("Resource_fi760")]) +RightLaneData = Array[ExtResource("1_y4wy8")]([SubResource("Resource_1fc0d"), SubResource("Resource_0vl64"), SubResource("Resource_j64im"), SubResource("Resource_t15ay"), SubResource("Resource_v3dna"), SubResource("Resource_8lcjo")]) diff --git a/Audio/songMaps/KeythuluSong.tres b/Audio/songMaps/KeythuluSong.tres index 3eec9775..7cfa9dfa 100644 --- a/Audio/songMaps/KeythuluSong.tres +++ b/Audio/songMaps/KeythuluSong.tres @@ -1,7 +1,7 @@ -[gd_resource type="Resource" load_steps=43 format=3] +[gd_resource type="Resource" load_steps=43 format=3 uid="uid://lm4pv832bgt5"] -[ext_resource type="Script" path="res://Classes/MidiMaestro/NoteInfo.cs" id="1_8ueh4"] -[ext_resource type="Script" path="res://Classes/MidiMaestro/NoteChart.cs" id="2_s63u8"] +[ext_resource type="Script" uid="uid://bhbpcmtr6e6pk" path="res://Classes/MidiMaestro/NoteInfo.cs" id="1_8ueh4"] +[ext_resource type="Script" uid="uid://bnpnavb5lwobj" path="res://Classes/MidiMaestro/NoteChart.cs" id="2_s63u8"] [sub_resource type="Resource" id="Resource_ljr32"] script = ExtResource("1_8ueh4") @@ -205,6 +205,9 @@ Length = 0.0 [resource] script = ExtResource("2_s63u8") +Bpm = 170 +NumLoops = 9 +SongMapLocation = "KeythuluSong.ogg" UpLaneData = Array[ExtResource("1_8ueh4")]([SubResource("Resource_vkfw6"), SubResource("Resource_5vawl"), SubResource("Resource_wqml3"), SubResource("Resource_knus5"), SubResource("Resource_iyhat"), SubResource("Resource_e231o"), SubResource("Resource_u1ybv"), SubResource("Resource_s63u8"), SubResource("Resource_rwedv")]) DownLaneData = Array[ExtResource("1_8ueh4")]([SubResource("Resource_ljr32"), SubResource("Resource_bb3yp"), SubResource("Resource_852ml"), SubResource("Resource_38nu8"), SubResource("Resource_3eydr"), SubResource("Resource_ct6sp"), SubResource("Resource_yk705"), SubResource("Resource_uswjw"), SubResource("Resource_e1hbr"), SubResource("Resource_8ueh4")]) LeftLaneData = Array[ExtResource("1_8ueh4")]([SubResource("Resource_gryrv"), SubResource("Resource_kwtfb"), SubResource("Resource_c2bxv"), SubResource("Resource_7lpnw"), SubResource("Resource_50tbs"), SubResource("Resource_ttd2q"), SubResource("Resource_nnlde"), SubResource("Resource_lrc4j"), SubResource("Resource_83big"), SubResource("Resource_oocdv")]) diff --git a/Audio/songMaps/Mushroom.tres b/Audio/songMaps/Mushroom.tres index 76fd946b..dfc22e38 100644 --- a/Audio/songMaps/Mushroom.tres +++ b/Audio/songMaps/Mushroom.tres @@ -75,6 +75,9 @@ Length = 0.0 [resource] script = ExtResource("2_0c8vj") +Bpm = 100 +NumLoops = 4 +SongMapLocation = "Mushroom.ogg" UpLaneData = Array[ExtResource("1_n1l5w")]([SubResource("Resource_ymucf"), SubResource("Resource_bmgju"), SubResource("Resource_sosma"), SubResource("Resource_3retf")]) DownLaneData = Array[ExtResource("1_n1l5w")]([SubResource("Resource_pprmk"), SubResource("Resource_n1l5w"), SubResource("Resource_0c8vj")]) LeftLaneData = Array[ExtResource("1_n1l5w")]([SubResource("Resource_4gn2h"), SubResource("Resource_aa728"), SubResource("Resource_olyge"), SubResource("Resource_rjl7u")]) diff --git a/Audio/songMaps/Song2.tres b/Audio/songMaps/ParasiflyDouble.tres similarity index 63% rename from Audio/songMaps/Song2.tres rename to Audio/songMaps/ParasiflyDouble.tres index 93e6a038..4521dfaa 100644 --- a/Audio/songMaps/Song2.tres +++ b/Audio/songMaps/ParasiflyDouble.tres @@ -1,126 +1,129 @@ -[gd_resource type="Resource" load_steps=26 format=3] +[gd_resource type="Resource" load_steps=26 format=3 uid="uid://vdkolb7ylhcu"] -[ext_resource type="Script" path="res://Classes/MidiMaestro/NoteInfo.cs" id="1_vo5rw"] -[ext_resource type="Script" path="res://Classes/MidiMaestro/NoteChart.cs" id="2_hgwt2"] +[ext_resource type="Script" uid="uid://bhbpcmtr6e6pk" path="res://Classes/MidiMaestro/NoteInfo.cs" id="1_2gxac"] +[ext_resource type="Script" uid="uid://bnpnavb5lwobj" path="res://Classes/MidiMaestro/NoteChart.cs" id="2_p8lx2"] [sub_resource type="Resource" id="Resource_svc5u"] -script = ExtResource("1_vo5rw") +script = ExtResource("1_2gxac") Beat = 2.0 Length = 0.0 [sub_resource type="Resource" id="Resource_ienox"] -script = ExtResource("1_vo5rw") +script = ExtResource("1_2gxac") Beat = 6.0 Length = 0.0 [sub_resource type="Resource" id="Resource_ax4q1"] -script = ExtResource("1_vo5rw") +script = ExtResource("1_2gxac") Beat = 10.0 Length = 0.0 [sub_resource type="Resource" id="Resource_663rs"] -script = ExtResource("1_vo5rw") +script = ExtResource("1_2gxac") Beat = 15.0 Length = 0.0 [sub_resource type="Resource" id="Resource_86xei"] -script = ExtResource("1_vo5rw") +script = ExtResource("1_2gxac") Beat = 20.0 Length = 0.0 [sub_resource type="Resource" id="Resource_w3gx2"] -script = ExtResource("1_vo5rw") +script = ExtResource("1_2gxac") Beat = 12.0 Length = 0.0 [sub_resource type="Resource" id="Resource_t01kg"] -script = ExtResource("1_vo5rw") +script = ExtResource("1_2gxac") Beat = 18.0 Length = 0.0 [sub_resource type="Resource" id="Resource_rnhdg"] -script = ExtResource("1_vo5rw") +script = ExtResource("1_2gxac") Beat = 8.0 Length = 0.0 [sub_resource type="Resource" id="Resource_of7dy"] -script = ExtResource("1_vo5rw") +script = ExtResource("1_2gxac") Beat = 22.0 Length = 0.0 [sub_resource type="Resource" id="Resource_xq1dl"] -script = ExtResource("1_vo5rw") +script = ExtResource("1_2gxac") Beat = 11.0 Length = 0.0 [sub_resource type="Resource" id="Resource_ym0tj"] -script = ExtResource("1_vo5rw") +script = ExtResource("1_2gxac") Beat = 4.0 Length = 0.0 [sub_resource type="Resource" id="Resource_1vvgc"] -script = ExtResource("1_vo5rw") +script = ExtResource("1_2gxac") Beat = 11.0 Length = 0.0 [sub_resource type="Resource" id="Resource_wjmqy"] -script = ExtResource("1_vo5rw") +script = ExtResource("1_2gxac") Beat = 14.0 Length = 0.0 [sub_resource type="Resource" id="Resource_64q4o"] -script = ExtResource("1_vo5rw") +script = ExtResource("1_2gxac") Beat = 16.0 Length = 0.0 [sub_resource type="Resource" id="Resource_rubmr"] -script = ExtResource("1_vo5rw") +script = ExtResource("1_2gxac") Beat = 19.0 Length = 0.0 [sub_resource type="Resource" id="Resource_ejow0"] -script = ExtResource("1_vo5rw") +script = ExtResource("1_2gxac") Beat = 20.0 Length = 0.0 [sub_resource type="Resource" id="Resource_pbett"] -script = ExtResource("1_vo5rw") +script = ExtResource("1_2gxac") Beat = 8.0 Length = 0.0 [sub_resource type="Resource" id="Resource_gru0r"] -script = ExtResource("1_vo5rw") +script = ExtResource("1_2gxac") Beat = 22.0 Length = 0.0 [sub_resource type="Resource" id="Resource_wljiu"] -script = ExtResource("1_vo5rw") +script = ExtResource("1_2gxac") Beat = 10.0 Length = 0.0 [sub_resource type="Resource" id="Resource_3viwm"] -script = ExtResource("1_vo5rw") +script = ExtResource("1_2gxac") Beat = 2.0 Length = 0.0 [sub_resource type="Resource" id="Resource_mcgpp"] -script = ExtResource("1_vo5rw") +script = ExtResource("1_2gxac") Beat = 4.0 Length = 0.0 [sub_resource type="Resource" id="Resource_olklg"] -script = ExtResource("1_vo5rw") +script = ExtResource("1_2gxac") Beat = 12.0 Length = 0.0 [sub_resource type="Resource" id="Resource_57g2b"] -script = ExtResource("1_vo5rw") +script = ExtResource("1_2gxac") Beat = 18.0 Length = 0.0 [resource] -script = ExtResource("2_hgwt2") -UpLaneData = Array[ExtResource("1_vo5rw")]([SubResource("Resource_3viwm"), SubResource("Resource_mcgpp"), SubResource("Resource_olklg"), SubResource("Resource_57g2b")]) -DownLaneData = Array[ExtResource("1_vo5rw")]([SubResource("Resource_svc5u"), SubResource("Resource_ienox"), SubResource("Resource_ax4q1"), SubResource("Resource_663rs"), SubResource("Resource_86xei"), SubResource("Resource_w3gx2"), SubResource("Resource_t01kg")]) -LeftLaneData = Array[ExtResource("1_vo5rw")]([SubResource("Resource_rnhdg"), SubResource("Resource_of7dy"), SubResource("Resource_xq1dl")]) -RightLaneData = Array[ExtResource("1_vo5rw")]([SubResource("Resource_ym0tj"), SubResource("Resource_1vvgc"), SubResource("Resource_wjmqy"), SubResource("Resource_64q4o"), SubResource("Resource_rubmr"), SubResource("Resource_ejow0"), SubResource("Resource_pbett"), SubResource("Resource_gru0r"), SubResource("Resource_wljiu")]) +script = ExtResource("2_p8lx2") +Bpm = 120 +NumLoops = 2 +SongMapLocation = "Song2.ogg" +UpLaneData = Array[ExtResource("1_2gxac")]([SubResource("Resource_3viwm"), SubResource("Resource_mcgpp"), SubResource("Resource_olklg"), SubResource("Resource_57g2b")]) +DownLaneData = Array[ExtResource("1_2gxac")]([SubResource("Resource_svc5u"), SubResource("Resource_ienox"), SubResource("Resource_ax4q1"), SubResource("Resource_663rs"), SubResource("Resource_86xei"), SubResource("Resource_w3gx2"), SubResource("Resource_t01kg")]) +LeftLaneData = Array[ExtResource("1_2gxac")]([SubResource("Resource_rnhdg"), SubResource("Resource_of7dy"), SubResource("Resource_xq1dl")]) +RightLaneData = Array[ExtResource("1_2gxac")]([SubResource("Resource_ym0tj"), SubResource("Resource_1vvgc"), SubResource("Resource_wjmqy"), SubResource("Resource_64q4o"), SubResource("Resource_rubmr"), SubResource("Resource_ejow0"), SubResource("Resource_pbett"), SubResource("Resource_gru0r"), SubResource("Resource_wljiu")]) diff --git a/Audio/songMaps/ParasiflySingle.tres b/Audio/songMaps/ParasiflySingle.tres new file mode 100644 index 00000000..f78d9197 --- /dev/null +++ b/Audio/songMaps/ParasiflySingle.tres @@ -0,0 +1,129 @@ +[gd_resource type="Resource" load_steps=26 format=3 uid="uid://drmfhafnnokw1"] + +[ext_resource type="Script" uid="uid://bhbpcmtr6e6pk" path="res://Classes/MidiMaestro/NoteInfo.cs" id="1_qiqje"] +[ext_resource type="Script" uid="uid://bnpnavb5lwobj" path="res://Classes/MidiMaestro/NoteChart.cs" id="2_qfjvo"] + +[sub_resource type="Resource" id="Resource_svc5u"] +script = ExtResource("1_qiqje") +Beat = 2.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_ienox"] +script = ExtResource("1_qiqje") +Beat = 6.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_ax4q1"] +script = ExtResource("1_qiqje") +Beat = 10.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_663rs"] +script = ExtResource("1_qiqje") +Beat = 15.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_86xei"] +script = ExtResource("1_qiqje") +Beat = 20.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_w3gx2"] +script = ExtResource("1_qiqje") +Beat = 12.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_t01kg"] +script = ExtResource("1_qiqje") +Beat = 18.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_rnhdg"] +script = ExtResource("1_qiqje") +Beat = 8.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_of7dy"] +script = ExtResource("1_qiqje") +Beat = 22.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_xq1dl"] +script = ExtResource("1_qiqje") +Beat = 11.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_ym0tj"] +script = ExtResource("1_qiqje") +Beat = 4.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_1vvgc"] +script = ExtResource("1_qiqje") +Beat = 11.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_wjmqy"] +script = ExtResource("1_qiqje") +Beat = 14.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_64q4o"] +script = ExtResource("1_qiqje") +Beat = 16.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_rubmr"] +script = ExtResource("1_qiqje") +Beat = 19.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_ejow0"] +script = ExtResource("1_qiqje") +Beat = 20.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_pbett"] +script = ExtResource("1_qiqje") +Beat = 8.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_gru0r"] +script = ExtResource("1_qiqje") +Beat = 22.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_wljiu"] +script = ExtResource("1_qiqje") +Beat = 10.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_3viwm"] +script = ExtResource("1_qiqje") +Beat = 2.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_mcgpp"] +script = ExtResource("1_qiqje") +Beat = 4.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_olklg"] +script = ExtResource("1_qiqje") +Beat = 12.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_57g2b"] +script = ExtResource("1_qiqje") +Beat = 18.0 +Length = 0.0 + +[resource] +script = ExtResource("2_qfjvo") +Bpm = 60 +NumLoops = 1 +SongMapLocation = "Song2.ogg" +UpLaneData = Array[ExtResource("1_qiqje")]([SubResource("Resource_3viwm"), SubResource("Resource_mcgpp"), SubResource("Resource_olklg"), SubResource("Resource_57g2b")]) +DownLaneData = Array[ExtResource("1_qiqje")]([SubResource("Resource_svc5u"), SubResource("Resource_ienox"), SubResource("Resource_ax4q1"), SubResource("Resource_663rs"), SubResource("Resource_86xei"), SubResource("Resource_w3gx2"), SubResource("Resource_t01kg")]) +LeftLaneData = Array[ExtResource("1_qiqje")]([SubResource("Resource_rnhdg"), SubResource("Resource_of7dy"), SubResource("Resource_xq1dl")]) +RightLaneData = Array[ExtResource("1_qiqje")]([SubResource("Resource_ym0tj"), SubResource("Resource_1vvgc"), SubResource("Resource_wjmqy"), SubResource("Resource_64q4o"), SubResource("Resource_rubmr"), SubResource("Resource_ejow0"), SubResource("Resource_pbett"), SubResource("Resource_gru0r"), SubResource("Resource_wljiu")]) diff --git a/Audio/songMaps/Shapes.tres b/Audio/songMaps/Shapes.tres index 5e567069..1c07c49b 100644 --- a/Audio/songMaps/Shapes.tres +++ b/Audio/songMaps/Shapes.tres @@ -1,7 +1,7 @@ -[gd_resource type="Resource" load_steps=39 format=3] +[gd_resource type="Resource" load_steps=39 format=3 uid="uid://dcdgn2fv63vls"] -[ext_resource type="Script" path="res://Classes/MidiMaestro/NoteInfo.cs" id="1_egl41"] -[ext_resource type="Script" path="res://Classes/MidiMaestro/NoteChart.cs" id="2_j6rk8"] +[ext_resource type="Script" uid="uid://bhbpcmtr6e6pk" path="res://Classes/MidiMaestro/NoteInfo.cs" id="1_egl41"] +[ext_resource type="Script" uid="uid://bnpnavb5lwobj" path="res://Classes/MidiMaestro/NoteChart.cs" id="2_j6rk8"] [sub_resource type="Resource" id="Resource_egl41"] script = ExtResource("1_egl41") @@ -185,6 +185,9 @@ Length = 0.0 [resource] script = ExtResource("2_j6rk8") +Bpm = 107 +NumLoops = 7 +SongMapLocation = "Shapes.ogg" UpLaneData = Array[ExtResource("1_egl41")]([SubResource("Resource_20ma1"), SubResource("Resource_t2x17"), SubResource("Resource_hsyk0"), SubResource("Resource_txx7m"), SubResource("Resource_uic3e"), SubResource("Resource_fy78b"), SubResource("Resource_p1dmw"), SubResource("Resource_7k1m6"), SubResource("Resource_e223l")]) DownLaneData = Array[ExtResource("1_egl41")]([SubResource("Resource_egl41"), SubResource("Resource_j6rk8"), SubResource("Resource_61fe8"), SubResource("Resource_dmlrl"), SubResource("Resource_xny5e"), SubResource("Resource_sybk5"), SubResource("Resource_cs7yi"), SubResource("Resource_xv7yd"), SubResource("Resource_pfidy"), SubResource("Resource_n0y2d")]) LeftLaneData = Array[ExtResource("1_egl41")]([SubResource("Resource_i5oul"), SubResource("Resource_qnkk3"), SubResource("Resource_oqhlp"), SubResource("Resource_af8di"), SubResource("Resource_p5qx0"), SubResource("Resource_5ddno"), SubResource("Resource_ep11h")]) diff --git a/Audio/songMaps/Spider.tres b/Audio/songMaps/Spider.tres index 7e666dc5..97b092ba 100644 --- a/Audio/songMaps/Spider.tres +++ b/Audio/songMaps/Spider.tres @@ -1,7 +1,7 @@ -[gd_resource type="Resource" load_steps=29 format=3] +[gd_resource type="Resource" load_steps=29 format=3 uid="uid://ca5svgb1cmdc"] -[ext_resource type="Script" path="res://Classes/MidiMaestro/NoteInfo.cs" id="1_kilos"] -[ext_resource type="Script" path="res://Classes/MidiMaestro/NoteChart.cs" id="2_ojgcg"] +[ext_resource type="Script" uid="uid://bhbpcmtr6e6pk" path="res://Classes/MidiMaestro/NoteInfo.cs" id="1_kilos"] +[ext_resource type="Script" uid="uid://bnpnavb5lwobj" path="res://Classes/MidiMaestro/NoteChart.cs" id="2_ojgcg"] [sub_resource type="Resource" id="Resource_kilos"] script = ExtResource("1_kilos") @@ -135,6 +135,9 @@ Length = 0.0 [resource] script = ExtResource("2_ojgcg") +Bpm = 130 +NumLoops = 3 +SongMapLocation = "Spider.ogg" UpLaneData = Array[ExtResource("1_kilos")]([SubResource("Resource_j42ns"), SubResource("Resource_kihon"), SubResource("Resource_j43rp"), SubResource("Resource_3j8yo"), SubResource("Resource_vk213"), SubResource("Resource_dsydf")]) DownLaneData = Array[ExtResource("1_kilos")]([SubResource("Resource_kilos"), SubResource("Resource_ojgcg"), SubResource("Resource_e2i3v"), SubResource("Resource_bxgte"), SubResource("Resource_7c41j"), SubResource("Resource_ibasm"), SubResource("Resource_57q1g")]) LeftLaneData = Array[ExtResource("1_kilos")]([SubResource("Resource_5kf2q"), SubResource("Resource_klick"), SubResource("Resource_ncgpb"), SubResource("Resource_58gsr"), SubResource("Resource_cuxey"), SubResource("Resource_uqtyg"), SubResource("Resource_8wxpt"), SubResource("Resource_7xcdg")]) diff --git a/Audio/songMaps/SquirkelSong.tres b/Audio/songMaps/SquirkelSong.tres index ff14f0c3..34fe1b40 100644 --- a/Audio/songMaps/SquirkelSong.tres +++ b/Audio/songMaps/SquirkelSong.tres @@ -1,7 +1,7 @@ -[gd_resource type="Resource" load_steps=19 format=3] +[gd_resource type="Resource" load_steps=19 format=3 uid="uid://bsofxdw0mkiuw"] -[ext_resource type="Script" path="res://Classes/MidiMaestro/NoteInfo.cs" id="1_8ueh4"] -[ext_resource type="Script" path="res://Classes/MidiMaestro/NoteChart.cs" id="2_s63u8"] +[ext_resource type="Script" uid="uid://bhbpcmtr6e6pk" path="res://Classes/MidiMaestro/NoteInfo.cs" id="1_8ueh4"] +[ext_resource type="Script" uid="uid://bnpnavb5lwobj" path="res://Classes/MidiMaestro/NoteChart.cs" id="2_s63u8"] [sub_resource type="Resource" id="Resource_ljr32"] script = ExtResource("1_8ueh4") @@ -85,6 +85,9 @@ Length = 0.0 [resource] script = ExtResource("2_s63u8") +Bpm = 180 +NumLoops = 5 +SongMapLocation = "SquirkelSong.ogg" UpLaneData = Array[ExtResource("1_8ueh4")]([SubResource("Resource_50tbs"), SubResource("Resource_ttd2q")]) DownLaneData = Array[ExtResource("1_8ueh4")]([SubResource("Resource_ljr32"), SubResource("Resource_bb3yp"), SubResource("Resource_852ml"), SubResource("Resource_38nu8"), SubResource("Resource_3eydr"), SubResource("Resource_ct6sp"), SubResource("Resource_yk705"), SubResource("Resource_oocdv")]) LeftLaneData = Array[ExtResource("1_8ueh4")]([]) diff --git a/Audio/songMaps/TutorialBoss176_7.tres b/Audio/songMaps/TutorialBoss176_7.tres index b90c3588..55ab4673 100644 --- a/Audio/songMaps/TutorialBoss176_7.tres +++ b/Audio/songMaps/TutorialBoss176_7.tres @@ -1,7 +1,7 @@ -[gd_resource type="Resource" load_steps=60 format=3] +[gd_resource type="Resource" load_steps=60 format=3 uid="uid://e0qdn4kgsv3k"] -[ext_resource type="Script" path="res://Classes/MidiMaestro/NoteInfo.cs" id="1_w1u0b"] -[ext_resource type="Script" path="res://Classes/MidiMaestro/NoteChart.cs" id="2_gbai3"] +[ext_resource type="Script" uid="uid://bhbpcmtr6e6pk" path="res://Classes/MidiMaestro/NoteInfo.cs" id="1_w1u0b"] +[ext_resource type="Script" uid="uid://bnpnavb5lwobj" path="res://Classes/MidiMaestro/NoteChart.cs" id="2_gbai3"] [sub_resource type="Resource" id="Resource_sxt82"] script = ExtResource("1_w1u0b") @@ -290,6 +290,9 @@ Length = 0.0 [resource] script = ExtResource("2_gbai3") +Bpm = 176 +NumLoops = 7 +SongMapLocation = "District_Four.ogg" UpLaneData = Array[ExtResource("1_w1u0b")]([SubResource("Resource_w1u0b"), SubResource("Resource_gbai3"), SubResource("Resource_bcwc6"), SubResource("Resource_0k2f6"), SubResource("Resource_tgoco"), SubResource("Resource_x1j4d"), SubResource("Resource_e76xg"), SubResource("Resource_vhygb"), SubResource("Resource_unq76"), SubResource("Resource_cn75w"), SubResource("Resource_3pobr"), SubResource("Resource_43v1q"), SubResource("Resource_2i0ix"), SubResource("Resource_eo1b6"), SubResource("Resource_ehfsr"), SubResource("Resource_05gdy"), SubResource("Resource_b164v"), SubResource("Resource_86j1n"), SubResource("Resource_p6bp3"), SubResource("Resource_7erhr"), SubResource("Resource_n6xrx"), SubResource("Resource_75ujr"), SubResource("Resource_mlxr3"), SubResource("Resource_5vw1o"), SubResource("Resource_suuru")]) DownLaneData = Array[ExtResource("1_w1u0b")]([SubResource("Resource_sxt82"), SubResource("Resource_j5ca6"), SubResource("Resource_cfyig"), SubResource("Resource_oq2fs"), SubResource("Resource_bv13m"), SubResource("Resource_lg6ov"), SubResource("Resource_eg7rs"), SubResource("Resource_x3k65"), SubResource("Resource_d5g7d"), SubResource("Resource_1cpsm"), SubResource("Resource_giltv")]) LeftLaneData = Array[ExtResource("1_w1u0b")]([SubResource("Resource_oqa5e"), SubResource("Resource_kk6vq"), SubResource("Resource_3scxn"), SubResource("Resource_p5ohh"), SubResource("Resource_dxorp"), SubResource("Resource_pm5wf"), SubResource("Resource_biar7"), SubResource("Resource_bnjg0"), SubResource("Resource_7gvq1")]) diff --git a/Audio/songMaps/TutorialSong.tres b/Audio/songMaps/TutorialSong.tres index a24d6ee3..c3b3e5b4 100644 --- a/Audio/songMaps/TutorialSong.tres +++ b/Audio/songMaps/TutorialSong.tres @@ -105,6 +105,9 @@ Length = 0.0 [resource] script = ExtResource("2_bsw0b") +Bpm = 90 +NumLoops = 1 +SongMapLocation = "TutorialSong.ogg" UpLaneData = Array[ExtResource("1_roxhp")]([SubResource("Resource_bnbk2"), SubResource("Resource_t2mc0"), SubResource("Resource_xl4h8"), SubResource("Resource_7i220"), SubResource("Resource_txc3y"), SubResource("Resource_iixj3"), SubResource("Resource_5o1tj"), SubResource("Resource_l3ivu"), SubResource("Resource_d6d5y")]) DownLaneData = Array[ExtResource("1_roxhp")]([SubResource("Resource_a0ovt"), SubResource("Resource_ahash"), SubResource("Resource_6gc2p"), SubResource("Resource_tjsh3"), SubResource("Resource_s18ys"), SubResource("Resource_wcsgu"), SubResource("Resource_r81qg"), SubResource("Resource_roxhp")]) LeftLaneData = Array[ExtResource("1_roxhp")]([SubResource("Resource_ifw8a"), SubResource("Resource_d0m6p"), SubResource("Resource_owwlp")]) diff --git a/Classes/MidiMaestro/MidiMaestro.cs b/Classes/MidiMaestro/MidiMaestro.cs index 1bd1964f..2c7bfa8f 100644 --- a/Classes/MidiMaestro/MidiMaestro.cs +++ b/Classes/MidiMaestro/MidiMaestro.cs @@ -20,9 +20,9 @@ public partial class MidiMaestro : Resource * Constructor loads resource file and populates lane note arrays with NoteInfo * A string file path to a valid songMap .tres file */ - public MidiMaestro(string filePath) + public MidiMaestro(NoteChart savedChart) { - if (!OS.HasFeature("editor")) + /*if (!OS.HasFeature("editor")) { filePath = OS.GetExecutablePath().GetBaseDir() + "/" + filePath; } @@ -32,7 +32,7 @@ public MidiMaestro(string filePath) GD.PushError("ERROR: Unable to load level songMap resource file: " + filePath); } - NoteChart savedChart = ResourceLoader.Load(filePath); + NoteChart savedChart = ResourceLoader.Load(filePath);*/ if (savedChart != null) { @@ -43,7 +43,7 @@ public MidiMaestro(string filePath) } else { - GD.PushError("ERROR: Unable to load songMap resource file: " + filePath); + GD.PushError("ERROR: Unable to load songMap resource file!"); _upNotes = []; _downNotes = []; _leftNotes = []; diff --git a/Classes/MidiMaestro/NoteChart.cs b/Classes/MidiMaestro/NoteChart.cs index 5e239bdc..49174be4 100644 --- a/Classes/MidiMaestro/NoteChart.cs +++ b/Classes/MidiMaestro/NoteChart.cs @@ -8,6 +8,15 @@ public partial class NoteChart : Resource { //Godot is unhappy with this sometimes. const float Precision = 0.0001f; + [Export] + public int Bpm { get; set; } + + [Export] + public int NumLoops { get; set; } + + [Export] + public string SongMapLocation { get; set; } = ""; + [Export] Array UpLaneData = []; diff --git a/Classes/MidiMaestro/SongTemplate.cs b/Classes/MidiMaestro/SongTemplate.cs index 9cff9f5d..a45d2930 100644 --- a/Classes/MidiMaestro/SongTemplate.cs +++ b/Classes/MidiMaestro/SongTemplate.cs @@ -6,23 +6,13 @@ namespace FunkEngine.Classes.MidiMaestro; public struct SongTemplate { public string Name; - public readonly string AudioLocation; - public string SongMapLocation; + public readonly NoteChart Chart; public readonly string[] EnemyScenePath; - public SongData SongData; - public SongTemplate( - SongData songData, - string name = "", - string audioLocation = "", - string songMapLocation = "", - string[] enemyScenePath = null - ) + public SongTemplate(string name = "", string[] enemyScenePath = null, NoteChart chart = null) { Name = name; - AudioLocation = audioLocation; - SongMapLocation = songMapLocation; - SongData = songData; + Chart = chart; EnemyScenePath = enemyScenePath; } } diff --git a/Globals/FunkEngineNameSpace.cs b/Globals/FunkEngineNameSpace.cs index 78b98bd0..cad8bcbb 100644 --- a/Globals/FunkEngineNameSpace.cs +++ b/Globals/FunkEngineNameSpace.cs @@ -7,15 +7,6 @@ namespace FunkEngine; #region Structs -/** - * SongData: Basic information defining the statistics of an in-battle song. - */ -public struct SongData -{ - public int Bpm; - public double SongLength; - public int NumLoops; -} /** * ArrowData: Data representing the necessary information for each arrow checker. diff --git a/Globals/Scribe.cs b/Globals/Scribe.cs index 8835dc97..358c7a18 100644 --- a/Globals/Scribe.cs +++ b/Globals/Scribe.cs @@ -582,199 +582,89 @@ e is BattleDirector.Harbinger.OnDamageInstanceArgs dmgArgs ), }; + private static string DefaultNoteChartPath = "Audio/songMaps/"; + public static readonly SongTemplate[] SongDictionary = new[] //Generalize and make pools for areas/room types { new SongTemplate( - new SongData - { - Bpm = 120, - SongLength = -1, - NumLoops = 5, - }, "Song1", - "Audio/Song1.ogg", - "Audio/songMaps/Song1.tres", - [P_BossBlood.LoadPath] + [P_BossBlood.LoadPath], + ResourceLoader.Load(DefaultNoteChartPath + "BossBlood.tres") ), new SongTemplate( - new SongData - { - Bpm = 60, - SongLength = -1, - NumLoops = 1, - }, "Song2", - "Audio/Song2.ogg", - "Audio/songMaps/Song2.tres", - [P_Parasifly.LoadPath] + [P_Parasifly.LoadPath], + ResourceLoader.Load(DefaultNoteChartPath + "ParasiflySingle.tres") ), new SongTemplate( - new SongData - { - Bpm = 120, - SongLength = -1, - NumLoops = 2, - }, "Song2", - "Audio/Song2.ogg", - "Audio/songMaps/Song2.tres", - [P_Parasifly.LoadPath, P_Parasifly.LoadPath] + [P_Parasifly.LoadPath, P_Parasifly.LoadPath], + ResourceLoader.Load(DefaultNoteChartPath + "ParasiflyDouble.tres") ), new SongTemplate( - new SongData - { - Bpm = 120, - SongLength = -1, - NumLoops = 1, - }, "Song3", - "Audio/Song3.ogg", - "Audio/songMaps/Song3.tres", - [P_TheGWS.LoadPath] + [P_TheGWS.LoadPath], + ResourceLoader.Load(DefaultNoteChartPath + "GWS.tres") ), new SongTemplate( - new SongData - { - Bpm = 90, - SongLength = -1, - NumLoops = 1, - }, "TutorialSong", - "Audio/TutorialSong.ogg", - "Audio/songMaps/TutorialSong.tres", - [P_Strawman.LoadPath] + [P_Strawman.LoadPath], + ResourceLoader.Load(DefaultNoteChartPath + "TutorialSong.tres") ), new SongTemplate( - new SongData - { - Bpm = 176, - SongLength = -1, - NumLoops = 7, - }, "YouWillDie:)", - "Audio/District_Four.ogg", - "Audio/songMaps/TutorialBoss176_7.tres", - [P_Effigy.LoadPath] + [P_Effigy.LoadPath], + ResourceLoader.Load(DefaultNoteChartPath + "TutorialBoss176_7.tres") ), new SongTemplate( - new SongData - { - Bpm = 120, - SongLength = -1, - NumLoops = 4, - }, "EcholaneSong", - "Audio/EcholaneSong.ogg", - "Audio/songMaps/EcholaneSong.tres", - [P_Turtle.LoadPath] + [P_Turtle.LoadPath], + ResourceLoader.Load(DefaultNoteChartPath + "EcholaneSong.tres") ), new SongTemplate( - new SongData - { - Bpm = 180, - SongLength = -1, - NumLoops = 1, - }, "CyberFoxSong", - "Audio/CyberFoxSong.ogg", - "Audio/songMaps/CyberFoxSong.tres", - [P_CyberFox.LoadPath] + [P_CyberFox.LoadPath], + ResourceLoader.Load(DefaultNoteChartPath + "CyberFoxSong.tres") ), new SongTemplate( - new SongData - { - Bpm = 120, - SongLength = -1, - NumLoops = 6, - }, "GobblerSong", - "Audio/Gobbler.ogg", - "Audio/songMaps/Gobbler.tres", - [P_Gobbler.LoadPath] + [P_Gobbler.LoadPath], + ResourceLoader.Load(DefaultNoteChartPath + "Gobbler.tres") ), new SongTemplate( //9 - new SongData - { - Bpm = 130, - SongLength = -1, - NumLoops = 1, - }, "Holograeme", - "Audio/Holo_ThereItIs.ogg", - "Audio/songMaps/HoloRepeat.tres", - [P_Holograeme.LoadPath] + [P_Holograeme.LoadPath], + ResourceLoader.Load(DefaultNoteChartPath + "HoloRepeat.tres") ), new SongTemplate( //10 - new SongData - { - Bpm = 107, - SongLength = -1, - NumLoops = 7, - }, "Shapes", - "Audio/Shapes.ogg", - "Audio/songMaps/Shapes.tres", - [P_Shapes.LoadPath] + [P_Shapes.LoadPath], + ResourceLoader.Load(DefaultNoteChartPath + "Shapes.tres") ), new SongTemplate( //11 - new SongData - { - Bpm = 130, - SongLength = -1, - NumLoops = 3, - }, "Spideer", - "Audio/Spider.ogg", - "Audio/songMaps/Spider.tres", - [P_Spider.LoadPath, P_Spider.LoadPath] + [P_Spider.LoadPath, P_Spider.LoadPath], + ResourceLoader.Load(DefaultNoteChartPath + "Spider.tres") ), new SongTemplate( //12 - new SongData - { - Bpm = 180, - SongLength = -1, - NumLoops = 5, - }, "Squirkel", - "Audio/SquirkelSong.ogg", - "Audio/songMaps/SquirkelSong.tres", - [P_Squirkel.LoadPath] + [P_Squirkel.LoadPath], + ResourceLoader.Load(DefaultNoteChartPath + "SquirkelSong.tres") ), new SongTemplate( //13 - new SongData - { - Bpm = 100, - SongLength = -1, - NumLoops = 4, - }, "Mushroom", - "Audio/Mushroom.ogg", - "Audio/songMaps/Mushroom.tres", - [P_Mushroom.LoadPath] + [P_Mushroom.LoadPath], + ResourceLoader.Load(DefaultNoteChartPath + "Mushroom.tres") ), new SongTemplate( - new SongData - { - Bpm = 170, - SongLength = -1, - NumLoops = 9, - }, "Keythulu", - "Audio/KeythuluSong.ogg", - "Audio/songMaps/KeythuluSong.tres", - [P_Keythulu.LoadPath] + [P_Keythulu.LoadPath], + ResourceLoader.Load(DefaultNoteChartPath + "KeythuluSong.tres") ), new SongTemplate( // 15 - new SongData - { - Bpm = 99, - SongLength = -1, - NumLoops = 5, - }, name: "LWS", - audioLocation: "Audio/FrostWaltz.ogg", - songMapLocation: "Audio/songMaps/FrostWaltz.tres", - enemyScenePath: [P_LWS.LoadPath] + enemyScenePath: [P_LWS.LoadPath], + ResourceLoader.Load(DefaultNoteChartPath + "FrostWaltz.tres") ), }; diff --git a/Scenes/BattleDirector/Scripts/BattleDirector.cs b/Scenes/BattleDirector/Scripts/BattleDirector.cs index 65cff2a4..6b33f7a9 100644 --- a/Scenes/BattleDirector/Scripts/BattleDirector.cs +++ b/Scenes/BattleDirector/Scripts/BattleDirector.cs @@ -88,19 +88,16 @@ private void BeginPlayback() public override void _Ready() { - SongData curSong = StageProducer.Config.CurSong.SongData; - Audio.SetStream(GD.Load(StageProducer.Config.CurSong.AudioLocation)); - if (curSong.SongLength <= 0) - { - curSong.SongLength = Audio.Stream.GetLength(); - } + NoteChart curChart = StageProducer.Config.CurSong.Chart; + Audio.SetStream(GD.Load("Audio/" + curChart.SongMapLocation)); + double songLen = Audio.Stream.GetLength(); - TimeKeeper.InitVals(curSong.Bpm); + TimeKeeper.InitVals(curChart.Bpm); Harbinger.Init(this); InitPlayer(); InitEnemies(); InitScoringGuide(); - CD.Initialize(curSong, _enemies); + CD.Initialize(curChart, songLen, _enemies); CD.NoteInputEvent += OnTimedInput; FocusedButton.GrabFocus(); diff --git a/Scenes/BattleDirector/Scripts/Conductor.cs b/Scenes/BattleDirector/Scripts/Conductor.cs index 55f37f62..ddbd59f0 100644 --- a/Scenes/BattleDirector/Scripts/Conductor.cs +++ b/Scenes/BattleDirector/Scripts/Conductor.cs @@ -19,15 +19,15 @@ public partial class Conductor : Node private bool _initialized; #region Initialization - public void Initialize(SongData curSong, EnemyPuppet[] enemies = null) + public void Initialize(NoteChart curSong, double songLen, EnemyPuppet[] enemies = null) { if (_initialized) return; - MM = new MidiMaestro(StageProducer.Config.CurSong.SongMapLocation); + MM = new MidiMaestro(curSong); CM.ArrowFromInput += ReceiveNoteInput; - CM.Initialize(curSong); + CM.Initialize(curSong, songLen); //Approximately the first note offscreen _beatSpawnOffset = diff --git a/Scenes/ChartViewport/Scripts/ChartManager.cs b/Scenes/ChartViewport/Scripts/ChartManager.cs index 396718ec..d1750645 100644 --- a/Scenes/ChartViewport/Scripts/ChartManager.cs +++ b/Scenes/ChartViewport/Scripts/ChartManager.cs @@ -74,21 +74,21 @@ public override void _Process(double delta) private bool _initialized; - public void Initialize(SongData songData) + public void Initialize(NoteChart songData, double songLen) { if (_initialized) return; TimeKeeper.LoopsPerSong = songData.NumLoops; - TimeKeeper.SongLength = songData.SongLength; + TimeKeeper.SongLength = songLen; - double _loopLen = songData.SongLength / songData.NumLoops; + double loopLen = songLen / songData.NumLoops; //99% sure chart length can never be less than (chart viewport width) * 2, //otherwise there isn't room for things to loop from off and on screen _chartLength = Math.Max( - _loopLen * Math.Ceiling(Size.X * 2 / _loopLen), + loopLen * Math.Ceiling(Size.X * 2 / loopLen), //Also minimize rounding point imprecision, improvement is qualitative - _loopLen * Math.Floor(_chartLength / _loopLen) + loopLen * Math.Floor(_chartLength / loopLen) ); TimeKeeper.ChartWidth = _chartLength; From 11e8074c384dac1a60c9ac0ef50a41f74236f5be Mon Sep 17 00:00:00 2001 From: LifeHckr Date: Thu, 22 May 2025 17:41:23 -0700 Subject: [PATCH 02/14] Implement Memento Pattern for SongTemplate --- Classes/MidiMaestro/SongTemplate.cs | 55 +++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/Classes/MidiMaestro/SongTemplate.cs b/Classes/MidiMaestro/SongTemplate.cs index a45d2930..54d6ea8c 100644 --- a/Classes/MidiMaestro/SongTemplate.cs +++ b/Classes/MidiMaestro/SongTemplate.cs @@ -1,3 +1,6 @@ +using System.Text.Json; +using Godot; + namespace FunkEngine.Classes.MidiMaestro; /** @@ -15,4 +18,56 @@ public SongTemplate(string name = "", string[] enemyScenePath = null, NoteChart Chart = chart; EnemyScenePath = enemyScenePath; } + + private struct NoteChartMemento( + string name = "", + string[] enemyScenePath = null, + string chartPath = "" + ) + { + public string Name = name; + public string ChartPath = chartPath; + public string[] EnemyScenePath = enemyScenePath; + } + + public static string ToJSONString(SongTemplate template, string chartPath) + { + NoteChartMemento inbetween = new NoteChartMemento( + template.Name, + template.EnemyScenePath, + chartPath + ); + string result = JsonSerializer.Serialize(inbetween); + return result; + } + + public static SongTemplate CreateFromPath(string path, bool fromUserPath = true) + { + if (!FileAccess.FileExists(path)) + return new SongTemplate(); + + FileAccess file = FileAccess.Open(path, FileAccess.ModeFlags.Read); + string json = file.GetAsText(); + + file.Close(); + try + { + NoteChartMemento result = JsonSerializer.Deserialize(json); + if (string.IsNullOrEmpty(result.ChartPath)) + return new SongTemplate(); + if (!FileAccess.FileExists(result.ChartPath)) + return new SongTemplate(); + + return new SongTemplate( + result.Name, + result.EnemyScenePath, + ResourceLoader.Load(result.ChartPath) + ); + } + catch (JsonException) + { + GD.PushWarning("Cannot deserialize SongTemplate, returning null."); + return new SongTemplate(); + } + } } From 0e09f89eb56bddebdab5c30ea0922eb27cc5dcb0 Mon Sep 17 00:00:00 2001 From: LifeHckr Date: Thu, 22 May 2025 20:44:08 -0700 Subject: [PATCH 03/14] Base Custome Song Loading Functionality --- Classes/MidiMaestro/SongTemplate.cs | 30 ++-- Globals/FunkEngineNameSpace.cs | 1 + Globals/StageProducer.cs | 22 +++ .../BattleDirector/Scripts/BattleDirector.cs | 26 +++- Scenes/CustomSong/CustomSelection.tscn | 135 ++++++++++++++++++ Scenes/CustomSong/Scripts/CustomSelection.cs | 130 +++++++++++++++++ .../CustomSong/Scripts/CustomSelection.cs.uid | 1 + Scenes/Puppets/Enemies/Keythulu/P_Keythulu.cs | 5 +- Scenes/UI/TitleScreen/Scripts/TitleScreen.cs | 16 ++- Scenes/UI/TitleScreen/TitleScreen.tscn | 12 +- 10 files changed, 360 insertions(+), 18 deletions(-) create mode 100644 Scenes/CustomSong/CustomSelection.tscn create mode 100644 Scenes/CustomSong/Scripts/CustomSelection.cs create mode 100644 Scenes/CustomSong/Scripts/CustomSelection.cs.uid diff --git a/Classes/MidiMaestro/SongTemplate.cs b/Classes/MidiMaestro/SongTemplate.cs index 54d6ea8c..89d6e749 100644 --- a/Classes/MidiMaestro/SongTemplate.cs +++ b/Classes/MidiMaestro/SongTemplate.cs @@ -19,15 +19,15 @@ public SongTemplate(string name = "", string[] enemyScenePath = null, NoteChart EnemyScenePath = enemyScenePath; } - private struct NoteChartMemento( + public struct NoteChartMemento( string name = "", string[] enemyScenePath = null, string chartPath = "" ) { - public string Name = name; - public string ChartPath = chartPath; - public string[] EnemyScenePath = enemyScenePath; + public string Name { get; init; } = name; + public string ChartPath { get; init; } = chartPath; + public string[] EnemyScenePath { get; init; } = enemyScenePath; } public static string ToJSONString(SongTemplate template, string chartPath) @@ -44,7 +44,7 @@ public static string ToJSONString(SongTemplate template, string chartPath) public static SongTemplate CreateFromPath(string path, bool fromUserPath = true) { if (!FileAccess.FileExists(path)) - return new SongTemplate(); + return new SongTemplate("CUSTOM_SONTEM_NOT_FOUND", [path]); FileAccess file = FileAccess.Open(path, FileAccess.ModeFlags.Read); string json = file.GetAsText(); @@ -54,20 +54,22 @@ public static SongTemplate CreateFromPath(string path, bool fromUserPath = true) { NoteChartMemento result = JsonSerializer.Deserialize(json); if (string.IsNullOrEmpty(result.ChartPath)) - return new SongTemplate(); - if (!FileAccess.FileExists(result.ChartPath)) - return new SongTemplate(); + return new SongTemplate("CUSTOM_NO_CHART_PATH", [json]); + if (!FileAccess.FileExists(path.GetBaseDir() + "/" + result.ChartPath)) + return new SongTemplate( + "CUSTOM_CHART_NOT_FOUND", + [path.GetBaseDir() + "/" + result.ChartPath] + ); - return new SongTemplate( - result.Name, - result.EnemyScenePath, - ResourceLoader.Load(result.ChartPath) + NoteChart nc = ResourceLoader.Load( + path.GetBaseDir() + "/" + result.ChartPath ); + return new SongTemplate(result.Name, result.EnemyScenePath, nc); } catch (JsonException) { - GD.PushWarning("Cannot deserialize SongTemplate, returning null."); - return new SongTemplate(); + GD.PushWarning("Cannot deserialize SongTemplate, returning error object."); + return new SongTemplate("CUSTOM_COULD_NOT_READ", [json]); } } } diff --git a/Globals/FunkEngineNameSpace.cs b/Globals/FunkEngineNameSpace.cs index cad8bcbb..2c896daf 100644 --- a/Globals/FunkEngineNameSpace.cs +++ b/Globals/FunkEngineNameSpace.cs @@ -259,6 +259,7 @@ public enum Stages Load, Continue, Title, + Custom, } public enum Rarity diff --git a/Globals/StageProducer.cs b/Globals/StageProducer.cs index f9606d0a..28e87438 100644 --- a/Globals/StageProducer.cs +++ b/Globals/StageProducer.cs @@ -2,6 +2,7 @@ using System.Linq; using System.Threading.Tasks; using FunkEngine; +using FunkEngine.Classes.MidiMaestro; using Godot; /** @@ -218,8 +219,29 @@ public void TransitionStage(Stages nextStage, int nextRoomIdx = -1) _preloadStage = null; //Apply grayscale shader to all scenes GetTree().Root.AddChild(ContrastFilter); + LastStage = _curStage; _curStage = nextStage; } + + public Stages LastStage; //Hacky, purely to have title screen return to custom menu. + + public void TransitionToCustom(SongTemplate song) + { + GetTree().Root.RemoveChild(ContrastFilter); + GetTree().Root.AddChild(ContrastFilter); + GlobalRng.Randomize(); + PlayerStats = new PlayerStats(); + Config = new BattleConfig + { + BattleRoom = null, + RoomType = Stages.Custom, + CurSong = song, + EnemyScenePath = song.EnemyScenePath, + }; + GetTree().ChangeSceneToFile(BattleDirector.LoadPath); + _curStage = Stages.Custom; + } + #endregion private void RefreshBattlePool() diff --git a/Scenes/BattleDirector/Scripts/BattleDirector.cs b/Scenes/BattleDirector/Scripts/BattleDirector.cs index 6b33f7a9..cb84611f 100644 --- a/Scenes/BattleDirector/Scripts/BattleDirector.cs +++ b/Scenes/BattleDirector/Scripts/BattleDirector.cs @@ -89,7 +89,15 @@ private void BeginPlayback() public override void _Ready() { NoteChart curChart = StageProducer.Config.CurSong.Chart; - Audio.SetStream(GD.Load("Audio/" + curChart.SongMapLocation)); + + Audio.SetStream( + StageProducer.Config.RoomType == Stages.Custom + ? AudioStreamOggVorbis.LoadFromFile( + CustomSelection.UserSongDir + curChart.SongMapLocation + ) + : GD.Load("Audio/" + curChart.SongMapLocation) + ); + double songLen = Audio.Stream.GetLength(); TimeKeeper.InitVals(curChart.Bpm); @@ -98,6 +106,7 @@ public override void _Ready() InitEnemies(); InitScoringGuide(); CD.Initialize(curChart, songLen, _enemies); + CD.NoteInputEvent += OnTimedInput; FocusedButton.GrabFocus(); @@ -320,6 +329,11 @@ private bool IsBattleWon() private void OnBattleWon() { + if (StageProducer.Config.RoomType == Stages.Custom) + { + TransitionOutOfCustom(); + return; + } Harbinger.Instance.InvokeBattleEnded(); CleanUpRelics(); BattleScore.SetEndHp(Player.GetCurrentHealth()); @@ -332,6 +346,11 @@ private void OnBattleWon() private void OnBattleLost() { + if (StageProducer.Config.RoomType == Stages.Custom) + { + TransitionOutOfCustom(); + return; + } Audio.StreamPaused = true; SaveSystem.ClearSave(); AddChild(GD.Load(EndScreen.LoadPath).Instantiate()); @@ -350,6 +369,11 @@ private void ShowRewardSelection(int amount) rewardSelect.Selected += TransitionOutOfBattle; } + private void TransitionOutOfCustom() + { + StageProducer.LiveInstance.TransitionStage(Stages.Title); + } + private void TransitionOutOfBattle() { StageProducer.LiveInstance.TransitionStage(Stages.Map); diff --git a/Scenes/CustomSong/CustomSelection.tscn b/Scenes/CustomSong/CustomSelection.tscn new file mode 100644 index 00000000..abd0a16b --- /dev/null +++ b/Scenes/CustomSong/CustomSelection.tscn @@ -0,0 +1,135 @@ +[gd_scene load_steps=5 format=3 uid="uid://4afpdcupy6x"] + +[ext_resource type="Script" uid="uid://cvt1bucvy5o2b" path="res://Scenes/CustomSong/Scripts/CustomSelection.cs" id="1_2bets"] +[ext_resource type="Texture2D" uid="uid://ck16vyh1q68ri" path="res://Scenes/UI/Assets/UI_ForestBackground.png" id="1_2j36x"] +[ext_resource type="Texture2D" uid="uid://djd6iw2g84bba" path="res://Scenes/UI/Assets/UI_CenterFrame.png" id="2_2bets"] +[ext_resource type="Theme" uid="uid://d37e3tpsbxwak" path="res://Scenes/UI/Assets/GeneralTheme.tres" id="4_fvo50"] + +[node name="CustomSongMenu" type="CanvasLayer" node_paths=PackedStringArray("_returnButton", "_songList", "_songDescription", "_focused")] +process_mode = 3 +script = ExtResource("1_2bets") +_returnButton = NodePath("Control/ReturnButton") +_songList = NodePath("Control/Background/MarginContainer/HBoxContainer/MarginContainer2/ScrollContainer/Songs") +_songDescription = NodePath("Control/Background/MarginContainer/HBoxContainer/MarginContainer/OptionsBackground/MarginContainer/SongDetails") +_focused = NodePath("Control/ReturnButton") + +[node name="Control" type="Control" parent="."] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Background" type="NinePatchRect" parent="Control"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("1_2j36x") +patch_margin_left = 105 +patch_margin_top = 100 +patch_margin_right = 105 +patch_margin_bottom = 100 + +[node name="MarginContainer" type="MarginContainer" parent="Control/Background"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -255.0 +offset_top = -155.0 +offset_right = 255.0 +offset_bottom = 105.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/margin_left = 5 +theme_override_constants/margin_top = 5 +theme_override_constants/margin_right = 5 +theme_override_constants/margin_bottom = 5 + +[node name="OptionsBackground" type="NinePatchRect" parent="Control/Background/MarginContainer"] +layout_mode = 2 +texture = ExtResource("2_2bets") +patch_margin_left = 5 +patch_margin_top = 5 +patch_margin_right = 5 +patch_margin_bottom = 5 + +[node name="HBoxContainer" type="HBoxContainer" parent="Control/Background/MarginContainer"] +custom_minimum_size = Vector2(500, 250) +layout_mode = 2 + +[node name="MarginContainer2" type="MarginContainer" parent="Control/Background/MarginContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_constants/margin_left = 8 +theme_override_constants/margin_top = 8 +theme_override_constants/margin_bottom = 8 + +[node name="ScrollContainer" type="ScrollContainer" parent="Control/Background/MarginContainer/HBoxContainer/MarginContainer2"] +layout_mode = 2 +size_flags_horizontal = 3 +follow_focus = true +horizontal_scroll_mode = 0 + +[node name="Songs" type="VBoxContainer" parent="Control/Background/MarginContainer/HBoxContainer/MarginContainer2/ScrollContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="MarginContainer" type="MarginContainer" parent="Control/Background/MarginContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_constants/margin_top = 4 +theme_override_constants/margin_right = 4 +theme_override_constants/margin_bottom = 4 + +[node name="OptionsBackground" type="NinePatchRect" parent="Control/Background/MarginContainer/HBoxContainer/MarginContainer"] +layout_mode = 2 +texture = ExtResource("2_2bets") +patch_margin_left = 5 +patch_margin_top = 5 +patch_margin_right = 5 +patch_margin_bottom = 5 + +[node name="MarginContainer" type="MarginContainer" parent="Control/Background/MarginContainer/HBoxContainer/MarginContainer/OptionsBackground"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/margin_left = 4 +theme_override_constants/margin_top = 4 +theme_override_constants/margin_right = 4 +theme_override_constants/margin_bottom = 4 + +[node name="SongDetails" type="Label" parent="Control/Background/MarginContainer/HBoxContainer/MarginContainer/OptionsBackground/MarginContainer"] +layout_mode = 2 +size_flags_vertical = 1 +text = "Test" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="ReturnButton" type="Button" parent="Control"] +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -91.5 +offset_top = -59.0 +offset_right = 91.5 +offset_bottom = -22.0 +grow_horizontal = 2 +grow_vertical = 0 +theme = ExtResource("4_fvo50") +text = "CONTROLS_RETURN_BUTTON" diff --git a/Scenes/CustomSong/Scripts/CustomSelection.cs b/Scenes/CustomSong/Scripts/CustomSelection.cs new file mode 100644 index 00000000..cbfcb81e --- /dev/null +++ b/Scenes/CustomSong/Scripts/CustomSelection.cs @@ -0,0 +1,130 @@ +using System; +using System.Collections.Generic; +using System.IO; +using FunkEngine; +using FunkEngine.Classes.MidiMaestro; +using Godot; + +public partial class CustomSelection : CanvasLayer, IFocusableMenu +{ + public const string LoadPath = "res://Scenes/CustomSong/CustomSelection.tscn"; + public const string UserSongDir = "user://Exports/"; + + [Export] + private Button _returnButton; + + [Export] + private VBoxContainer _songList; + + [Export] + private Label _songDescription; + + private DirAccess _dirAccess = DirAccess.Open(UserSongDir); + readonly List _customSongs = new List(); + + public override void _EnterTree() + { + _returnButton.Pressed += ReturnToPrev; + + if (!DirAccess.DirExistsAbsolute(UserSongDir)) + DirAccess.Open("user://").MakeDirRecursive(UserSongDir); + _dirAccess = DirAccess.Open(UserSongDir); + if (_dirAccess == null) + { + GD.PushWarning("Could not open user song directory!"); + return; + } + foreach (string file in _dirAccess.GetFiles()) + { + if (file.GetExtension() == "sontem") + { + SongTemplate result = SongTemplate.CreateFromPath(UserSongDir + file); + _customSongs.Add(result); + } + } + } + + SongTemplate _selectedSong; + + public override void _Ready() + { + foreach (SongTemplate song in _customSongs) + { + DisplayButton newButton = GD.Load(DisplayButton.LoadPath) + .Instantiate(); + _songList.AddChild(newButton); + if (song.Chart == null) + { + newButton.Text = Tr(song.Name); + newButton.Disabled = true; + newButton.FocusEntered += () => + { + _songDescription.Text = song.EnemyScenePath[0]; + }; + continue; + } + newButton.Text = song.Name; + newButton.FocusEntered += () => + { + _songDescription.Text = + song.Name + "\n" + song.Chart.Bpm + "\n" + song.Chart.NumLoops; + _selectedSong = song; + }; + newButton.Pressed += StartCustomSelection; + } + } + + private void StartCustomSelection() + { + StageProducer.LiveInstance.TransitionToCustom(_selectedSong); + } + + #region IFocusableMenu + public IFocusableMenu Prev { get; set; } + private ProcessModeEnum _previousProcessMode; + + [Export] + private Control _focused; + + public void ResumeFocus() + { + ProcessMode = _previousProcessMode; + _focused.GrabFocus(); + } + + public void PauseFocus() + { + _focused = GetViewport().GuiGetFocusOwner(); + _previousProcessMode = ProcessMode; + ProcessMode = ProcessModeEnum.Disabled; + } + + public void OpenMenu(IFocusableMenu prev) + { + Prev = prev; + Prev.PauseFocus(); + _focused.GrabFocus(); + } + + public void ReturnToPrev() + { + StageProducer.LiveInstance.LastStage = Stages.Title; + Prev.ResumeFocus(); + QueueFree(); + } + + public override void _Input(InputEvent @event) + { + if (ControlSettings.IsOutOfFocus(this)) + { + GetViewport().SetInputAsHandled(); + return; + } + if (@event.IsActionPressed("ui_cancel")) + { + ReturnToPrev(); + GetViewport().SetInputAsHandled(); + } + } + #endregion +} diff --git a/Scenes/CustomSong/Scripts/CustomSelection.cs.uid b/Scenes/CustomSong/Scripts/CustomSelection.cs.uid new file mode 100644 index 00000000..87272ed3 --- /dev/null +++ b/Scenes/CustomSong/Scripts/CustomSelection.cs.uid @@ -0,0 +1 @@ +uid://cvt1bucvy5o2b diff --git a/Scenes/Puppets/Enemies/Keythulu/P_Keythulu.cs b/Scenes/Puppets/Enemies/Keythulu/P_Keythulu.cs index 587c878d..79edbfdc 100644 --- a/Scenes/Puppets/Enemies/Keythulu/P_Keythulu.cs +++ b/Scenes/Puppets/Enemies/Keythulu/P_Keythulu.cs @@ -65,7 +65,10 @@ public override void _Ready() 1, (e, eff, val) => { - if (e is not BattleDirector.Harbinger.OnDamageInstanceArgs dArgs) + if ( + StageProducer.Config.RoomType == Stages.Custom + || e is not BattleDirector.Harbinger.OnDamageInstanceArgs dArgs + ) return; if ( dArgs.Dmg.Target == this diff --git a/Scenes/UI/TitleScreen/Scripts/TitleScreen.cs b/Scenes/UI/TitleScreen/Scripts/TitleScreen.cs index 65dd551c..e611149e 100644 --- a/Scenes/UI/TitleScreen/Scripts/TitleScreen.cs +++ b/Scenes/UI/TitleScreen/Scripts/TitleScreen.cs @@ -15,6 +15,9 @@ public partial class TitleScreen : Control, IFocusableMenu [Export] public Button Options; + [Export] + private Button _customSelectionButton; + private Control _focused; public IFocusableMenu Prev { get; set; } @@ -36,11 +39,14 @@ public override void _UnhandledInput(InputEvent @event) public override void _EnterTree() { BgAudioPlayer.LiveInstance.PlayLevelMusic(); + Options.Pressed += OpenOptions; + _customSelectionButton.Pressed += OpenCustomSelection; } public override void _Ready() { - Options.Pressed += OpenOptions; + if (StageProducer.LiveInstance.LastStage == Stages.Custom) + OpenCustomSelection(); } public override void _Process(double delta) @@ -79,6 +85,14 @@ private void OpenOptions() optionsMenu.OpenMenu(this); } + private void OpenCustomSelection() + { + CustomSelection customMenu = GD.Load(CustomSelection.LoadPath) + .Instantiate(); + AddChild(customMenu); + customMenu.OpenMenu(this); + } + private void InitEffects() { if (_effectsPlaceholder is not InstancePlaceholder placeholder) diff --git a/Scenes/UI/TitleScreen/TitleScreen.tscn b/Scenes/UI/TitleScreen/TitleScreen.tscn index 96a32b3a..b9da2fae 100644 --- a/Scenes/UI/TitleScreen/TitleScreen.tscn +++ b/Scenes/UI/TitleScreen/TitleScreen.tscn @@ -26,7 +26,7 @@ shader_parameter/height = 10.0 shader_parameter/speed = 2.0 shader_parameter/freq = 10.0 -[node name="Title" type="Control" node_paths=PackedStringArray("_effectsPlaceholder", "Options")] +[node name="Title" type="Control" node_paths=PackedStringArray("_effectsPlaceholder", "Options", "_customSelectionButton")] layout_mode = 3 anchors_preset = 15 anchor_right = 1.0 @@ -38,6 +38,7 @@ size_flags_vertical = 3 script = ExtResource("1_r22ha") _effectsPlaceholder = NodePath("Effects") Options = NodePath("VBoxContainer/OptionsMargin/Options") +_customSelectionButton = NodePath("Custom") [node name="Effects" parent="." instance_placeholder="res://Scenes/UI/TitleScreen/TitleScreenEffects.tscn"] @@ -221,3 +222,12 @@ focus_neighbor_right = NodePath("../../HBoxContainer/MarginContainer2/Quit") theme = ExtResource("13_v0au1") theme_override_font_sizes/font_size = 24 text = "TITLE_OPTIONS" + +[node name="Custom" type="Button" parent="."] +z_index = 1 +layout_mode = 0 +offset_top = 1.0 +offset_right = 113.0 +offset_bottom = 40.0 +theme = ExtResource("13_v0au1") +text = "CUSTOM_SONG" From bf2a13e15d9fc79acc7062def79f5e4366e0972e Mon Sep 17 00:00:00 2001 From: LifeHckr Date: Thu, 22 May 2025 20:59:25 -0700 Subject: [PATCH 04/14] Custom Song Conditional Availability Custom Song can only be accessed if a run has been won --- Globals/SaveSystem.cs | 8 ++++++++ Scenes/Puppets/Enemies/Keythulu/P_Keythulu.cs | 1 + Scenes/UI/TitleScreen/Scripts/TitleScreen.cs | 2 ++ Scenes/UI/TitleScreen/TitleScreen.tscn | 1 + 4 files changed, 12 insertions(+) diff --git a/Globals/SaveSystem.cs b/Globals/SaveSystem.cs index 071e0255..63ea5acf 100644 --- a/Globals/SaveSystem.cs +++ b/Globals/SaveSystem.cs @@ -30,6 +30,7 @@ public static class SaveSystem private const string DefaultLanguage = "en"; private const bool DefaultHighCon = false; private const bool DefaultFirstTime = true; + private const bool DefaultHasWon = false; public enum ConfigSettings { @@ -50,6 +51,7 @@ public enum ConfigSettings LanguageKey, HighContrast, FirstTime, + HasWon, } /** @@ -75,6 +77,7 @@ private static void InitConfig() UpdateConfig(ConfigSettings.LanguageKey, DefaultLanguage); UpdateConfig(ConfigSettings.HighContrast, DefaultHighCon); UpdateConfig(ConfigSettings.FirstTime, DefaultFirstTime); + UpdateConfig(ConfigSettings.HasWon, DefaultHasWon); } private static void SaveConfig() @@ -139,6 +142,9 @@ public static void UpdateConfig(ConfigSettings setting, Variant value) case ConfigSettings.FirstTime: _curConfigData.SetValue("Game", "FirstTime", value); break; + case ConfigSettings.HasWon: + _curConfigData.SetValue("Game", "HasWon", value); + break; default: GD.PushError("SaveSystem.UpdateConfig: Invalid config setting passed. " + setting); break; @@ -278,6 +284,8 @@ public static Variant GetConfigValue(ConfigSettings setting) return _curConfigData.GetValue("Options", "HighContrast", DefaultHighCon); case ConfigSettings.FirstTime: return _curConfigData.GetValue("Game", "FirstTime", DefaultFirstTime); + case ConfigSettings.HasWon: + return _curConfigData.GetValue("Game", "HasWon", DefaultHasWon); default: GD.PushError("Invalid config setting passed. " + setting); return float.MinValue; diff --git a/Scenes/Puppets/Enemies/Keythulu/P_Keythulu.cs b/Scenes/Puppets/Enemies/Keythulu/P_Keythulu.cs index 79edbfdc..91fff8ea 100644 --- a/Scenes/Puppets/Enemies/Keythulu/P_Keythulu.cs +++ b/Scenes/Puppets/Enemies/Keythulu/P_Keythulu.cs @@ -76,6 +76,7 @@ public override void _Ready() ) { SteamWhisperer.PopAchievement("actTwoComp"); + SaveSystem.UpdateConfig(SaveSystem.ConfigSettings.HasWon, true); } } ), diff --git a/Scenes/UI/TitleScreen/Scripts/TitleScreen.cs b/Scenes/UI/TitleScreen/Scripts/TitleScreen.cs index e611149e..9966a0e6 100644 --- a/Scenes/UI/TitleScreen/Scripts/TitleScreen.cs +++ b/Scenes/UI/TitleScreen/Scripts/TitleScreen.cs @@ -47,6 +47,8 @@ public override void _Ready() { if (StageProducer.LiveInstance.LastStage == Stages.Custom) OpenCustomSelection(); + _customSelectionButton.Visible = (bool) + SaveSystem.GetConfigValue(SaveSystem.ConfigSettings.HasWon); } public override void _Process(double delta) diff --git a/Scenes/UI/TitleScreen/TitleScreen.tscn b/Scenes/UI/TitleScreen/TitleScreen.tscn index b9da2fae..cfc58e30 100644 --- a/Scenes/UI/TitleScreen/TitleScreen.tscn +++ b/Scenes/UI/TitleScreen/TitleScreen.tscn @@ -224,6 +224,7 @@ theme_override_font_sizes/font_size = 24 text = "TITLE_OPTIONS" [node name="Custom" type="Button" parent="."] +visible = false z_index = 1 layout_mode = 0 offset_top = 1.0 From f24e7394ccd02486ed9064d43d648ab3ba3ef9ac Mon Sep 17 00:00:00 2001 From: LifeHckr Date: Thu, 22 May 2025 22:20:16 -0700 Subject: [PATCH 05/14] Custom Level pauses BG Music Paused on transitioning to custom stage Unpaused on returning to menu --- Scenes/BattleDirector/Scripts/BattleDirector.cs | 1 + Scenes/CustomSong/Scripts/CustomSelection.cs | 1 + 2 files changed, 2 insertions(+) diff --git a/Scenes/BattleDirector/Scripts/BattleDirector.cs b/Scenes/BattleDirector/Scripts/BattleDirector.cs index cb84611f..c4dbba6a 100644 --- a/Scenes/BattleDirector/Scripts/BattleDirector.cs +++ b/Scenes/BattleDirector/Scripts/BattleDirector.cs @@ -371,6 +371,7 @@ private void ShowRewardSelection(int amount) private void TransitionOutOfCustom() { + BgAudioPlayer.LiveInstance.PlayLevelMusic(); StageProducer.LiveInstance.TransitionStage(Stages.Title); } diff --git a/Scenes/CustomSong/Scripts/CustomSelection.cs b/Scenes/CustomSong/Scripts/CustomSelection.cs index cbfcb81e..7c647655 100644 --- a/Scenes/CustomSong/Scripts/CustomSelection.cs +++ b/Scenes/CustomSong/Scripts/CustomSelection.cs @@ -76,6 +76,7 @@ public override void _Ready() private void StartCustomSelection() { + BgAudioPlayer.LiveInstance.StopMusic(); StageProducer.LiveInstance.TransitionToCustom(_selectedSong); } From 6dc90a01548989452d4319bceebfac480a51146c Mon Sep 17 00:00:00 2001 From: LifeHckr Date: Fri, 23 May 2025 11:46:04 -0700 Subject: [PATCH 06/14] Adjust ChartLength based on Desired Speed NoteCharts can keep a desired speed Adjust ChartLength based to approximate desired speed Updated notecharts --- Audio/songMaps/BossBlood.tres | 1 + Audio/songMaps/CyberFoxSong.tres | 9 +++++---- Audio/songMaps/EcholaneSong.tres | 9 +++++---- Audio/songMaps/FrostWaltz.tres | 9 +++++---- Audio/songMaps/GWS.tres | 9 +++++---- Audio/songMaps/Gobbler.tres | 9 +++++---- Audio/songMaps/HoloRepeat.tres | 9 +++++---- Audio/songMaps/KeythuluSong.tres | 9 +++++---- Audio/songMaps/Mushroom.tres | 9 +++++---- Audio/songMaps/ParasiflyDouble.tres | 9 +++++---- Audio/songMaps/ParasiflySingle.tres | 9 +++++---- Audio/songMaps/Shapes.tres | 9 +++++---- Audio/songMaps/Spider.tres | 9 +++++---- Audio/songMaps/SquirkelSong.tres | 9 +++++---- Audio/songMaps/TutorialBoss176_7.tres | 9 +++++---- Audio/songMaps/TutorialSong.tres | 9 +++++---- Classes/MidiMaestro/NoteChart.cs | 5 +++++ Scenes/ChartViewport/Scripts/ChartManager.cs | 5 +++-- 18 files changed, 84 insertions(+), 62 deletions(-) diff --git a/Audio/songMaps/BossBlood.tres b/Audio/songMaps/BossBlood.tres index b46ffee4..95693782 100644 --- a/Audio/songMaps/BossBlood.tres +++ b/Audio/songMaps/BossBlood.tres @@ -247,6 +247,7 @@ Length = 0.0 script = ExtResource("2_uhxkd") Bpm = 120 NumLoops = 5 +SongSpeed = -1.0 SongMapLocation = "Song1.ogg" UpLaneData = Array[ExtResource("1_mc06a")]([SubResource("Resource_fjllr"), SubResource("Resource_y2wfd"), SubResource("Resource_cb61k"), SubResource("Resource_hbkgo"), SubResource("Resource_80wib"), SubResource("Resource_jsm3m"), SubResource("Resource_ryg8k"), SubResource("Resource_gj6xo"), SubResource("Resource_112dg"), SubResource("Resource_eguul"), SubResource("Resource_tdy7a"), SubResource("Resource_d7de0")]) DownLaneData = Array[ExtResource("1_mc06a")]([SubResource("Resource_h1ijp"), SubResource("Resource_ysbfa"), SubResource("Resource_j4c1l"), SubResource("Resource_lktv3"), SubResource("Resource_b0kfm"), SubResource("Resource_xbckj"), SubResource("Resource_gs0vr"), SubResource("Resource_4ygvu"), SubResource("Resource_efsyh")]) diff --git a/Audio/songMaps/CyberFoxSong.tres b/Audio/songMaps/CyberFoxSong.tres index 16041d18..fa88c568 100644 --- a/Audio/songMaps/CyberFoxSong.tres +++ b/Audio/songMaps/CyberFoxSong.tres @@ -117,8 +117,9 @@ Length = 0.0 script = ExtResource("2_s63u8") Bpm = 180 NumLoops = 1 +SongSpeed = -1.0 SongMapLocation = "CyberFoxSong.ogg" -UpLaneData = Array[ExtResource("1_8ueh4")]([SubResource("Resource_50tbs"), SubResource("Resource_ttd2q"), SubResource("Resource_nnlde"), SubResource("Resource_rwedv"), SubResource("Resource_3eydr"), SubResource("Resource_83big")]) -DownLaneData = Array[ExtResource("1_8ueh4")]([SubResource("Resource_ljr32"), SubResource("Resource_bb3yp"), SubResource("Resource_852ml"), SubResource("Resource_38nu8"), SubResource("Resource_ct6sp"), SubResource("Resource_8ueh4"), SubResource("Resource_7lpnw")]) -LeftLaneData = Array[ExtResource("1_8ueh4")]([SubResource("Resource_yk705"), SubResource("Resource_oocdv"), SubResource("Resource_uswjw"), SubResource("Resource_e1hbr")]) -RightLaneData = Array[ExtResource("1_8ueh4")]([SubResource("Resource_gryrv"), SubResource("Resource_kwtfb"), SubResource("Resource_c2bxv"), SubResource("Resource_s63u8"), SubResource("Resource_lrc4j")]) +UpLaneData = [SubResource("Resource_50tbs"), SubResource("Resource_ttd2q"), SubResource("Resource_nnlde"), SubResource("Resource_rwedv"), SubResource("Resource_3eydr"), SubResource("Resource_83big")] +DownLaneData = [SubResource("Resource_ljr32"), SubResource("Resource_bb3yp"), SubResource("Resource_852ml"), SubResource("Resource_38nu8"), SubResource("Resource_ct6sp"), SubResource("Resource_8ueh4"), SubResource("Resource_7lpnw")] +LeftLaneData = [SubResource("Resource_yk705"), SubResource("Resource_oocdv"), SubResource("Resource_uswjw"), SubResource("Resource_e1hbr")] +RightLaneData = [SubResource("Resource_gryrv"), SubResource("Resource_kwtfb"), SubResource("Resource_c2bxv"), SubResource("Resource_s63u8"), SubResource("Resource_lrc4j")] diff --git a/Audio/songMaps/EcholaneSong.tres b/Audio/songMaps/EcholaneSong.tres index 2b740fe9..aac69093 100644 --- a/Audio/songMaps/EcholaneSong.tres +++ b/Audio/songMaps/EcholaneSong.tres @@ -222,8 +222,9 @@ Length = 0.0 script = ExtResource("2_ulihw") Bpm = 120 NumLoops = 4 +SongSpeed = -1.0 SongMapLocation = "EcholaneSong.ogg" -UpLaneData = Array[ExtResource("1_vkj58")]([SubResource("Resource_3lcfd"), SubResource("Resource_b1quw"), SubResource("Resource_lq0og"), SubResource("Resource_56y1a"), SubResource("Resource_jljr5"), SubResource("Resource_bxx88"), SubResource("Resource_bdoqu"), SubResource("Resource_cr07w")]) -DownLaneData = Array[ExtResource("1_vkj58")]([SubResource("Resource_vkj58"), SubResource("Resource_ulihw"), SubResource("Resource_t8863"), SubResource("Resource_6g1by"), SubResource("Resource_m02wy"), SubResource("Resource_t1nlw"), SubResource("Resource_iknre"), SubResource("Resource_icwn4"), SubResource("Resource_vkj1q"), SubResource("Resource_g5inb")]) -LeftLaneData = Array[ExtResource("1_vkj58")]([SubResource("Resource_7jmhk"), SubResource("Resource_plxvd"), SubResource("Resource_jva8p"), SubResource("Resource_pref2"), SubResource("Resource_3tvlw"), SubResource("Resource_iq4by"), SubResource("Resource_rekwa"), SubResource("Resource_xbnbk"), SubResource("Resource_byp8i"), SubResource("Resource_dime5")]) -RightLaneData = Array[ExtResource("1_vkj58")]([SubResource("Resource_dnuvc"), SubResource("Resource_n5nx3"), SubResource("Resource_y8tsg"), SubResource("Resource_msofk"), SubResource("Resource_8qmnl"), SubResource("Resource_w7vp2"), SubResource("Resource_kvr5u"), SubResource("Resource_6jc5o"), SubResource("Resource_14q1d"), SubResource("Resource_vixxy"), SubResource("Resource_ktvox"), SubResource("Resource_4vybl"), SubResource("Resource_hclfl"), SubResource("Resource_bmq0x"), SubResource("Resource_6hjh7")]) +UpLaneData = [SubResource("Resource_3lcfd"), SubResource("Resource_b1quw"), SubResource("Resource_lq0og"), SubResource("Resource_56y1a"), SubResource("Resource_jljr5"), SubResource("Resource_bxx88"), SubResource("Resource_bdoqu"), SubResource("Resource_cr07w")] +DownLaneData = [SubResource("Resource_vkj58"), SubResource("Resource_ulihw"), SubResource("Resource_t8863"), SubResource("Resource_6g1by"), SubResource("Resource_m02wy"), SubResource("Resource_t1nlw"), SubResource("Resource_iknre"), SubResource("Resource_icwn4"), SubResource("Resource_vkj1q"), SubResource("Resource_g5inb")] +LeftLaneData = [SubResource("Resource_7jmhk"), SubResource("Resource_plxvd"), SubResource("Resource_jva8p"), SubResource("Resource_pref2"), SubResource("Resource_3tvlw"), SubResource("Resource_iq4by"), SubResource("Resource_rekwa"), SubResource("Resource_xbnbk"), SubResource("Resource_byp8i"), SubResource("Resource_dime5")] +RightLaneData = [SubResource("Resource_dnuvc"), SubResource("Resource_n5nx3"), SubResource("Resource_y8tsg"), SubResource("Resource_msofk"), SubResource("Resource_8qmnl"), SubResource("Resource_w7vp2"), SubResource("Resource_kvr5u"), SubResource("Resource_6jc5o"), SubResource("Resource_14q1d"), SubResource("Resource_vixxy"), SubResource("Resource_ktvox"), SubResource("Resource_4vybl"), SubResource("Resource_hclfl"), SubResource("Resource_bmq0x"), SubResource("Resource_6hjh7")] diff --git a/Audio/songMaps/FrostWaltz.tres b/Audio/songMaps/FrostWaltz.tres index 81f0bdbc..e604c168 100644 --- a/Audio/songMaps/FrostWaltz.tres +++ b/Audio/songMaps/FrostWaltz.tres @@ -97,8 +97,9 @@ Length = 0.0 script = ExtResource("2_ipsne") Bpm = 99 NumLoops = 5 +SongSpeed = -1.0 SongMapLocation = "FrostWaltz.ogg" -UpLaneData = Array[ExtResource("1_8s5n5")]([SubResource("Resource_ffi45"), SubResource("Resource_3tfr0"), SubResource("Resource_ipsne")]) -DownLaneData = Array[ExtResource("1_8s5n5")]([SubResource("Resource_dwqep"), SubResource("Resource_ukqut"), SubResource("Resource_x1mw3"), SubResource("Resource_54umo"), SubResource("Resource_o0hqd"), SubResource("Resource_8s5n5"), SubResource("Resource_bsuy3")]) -LeftLaneData = Array[ExtResource("1_8s5n5")]([SubResource("Resource_828xi"), SubResource("Resource_gfy4r"), SubResource("Resource_716y2"), SubResource("Resource_6sju3"), SubResource("Resource_h8r3u")]) -RightLaneData = Array[ExtResource("1_8s5n5")]([SubResource("Resource_3skly"), SubResource("Resource_fe74b"), SubResource("Resource_1d04x")]) +UpLaneData = [SubResource("Resource_ffi45"), SubResource("Resource_3tfr0"), SubResource("Resource_ipsne")] +DownLaneData = [SubResource("Resource_dwqep"), SubResource("Resource_ukqut"), SubResource("Resource_x1mw3"), SubResource("Resource_54umo"), SubResource("Resource_o0hqd"), SubResource("Resource_8s5n5"), SubResource("Resource_bsuy3")] +LeftLaneData = [SubResource("Resource_828xi"), SubResource("Resource_gfy4r"), SubResource("Resource_716y2"), SubResource("Resource_6sju3"), SubResource("Resource_h8r3u")] +RightLaneData = [SubResource("Resource_3skly"), SubResource("Resource_fe74b"), SubResource("Resource_1d04x")] diff --git a/Audio/songMaps/GWS.tres b/Audio/songMaps/GWS.tres index a3c9d5c3..e670a6ee 100644 --- a/Audio/songMaps/GWS.tres +++ b/Audio/songMaps/GWS.tres @@ -292,8 +292,9 @@ Length = 0.0 script = ExtResource("2_4vdmh") Bpm = 120 NumLoops = 1 +SongSpeed = -1.0 SongMapLocation = "Song3.ogg" -UpLaneData = Array[ExtResource("1_6fik5")]([SubResource("Resource_3gjtl"), SubResource("Resource_vdnsu"), SubResource("Resource_3wyug"), SubResource("Resource_6kji1"), SubResource("Resource_w6jqv"), SubResource("Resource_083mg"), SubResource("Resource_dsf4k"), SubResource("Resource_2woca"), SubResource("Resource_jsj5h"), SubResource("Resource_qoqm3"), SubResource("Resource_nob8r"), SubResource("Resource_a6epf"), SubResource("Resource_ekjhc")]) -DownLaneData = Array[ExtResource("1_6fik5")]([SubResource("Resource_11qbm"), SubResource("Resource_hrrtc"), SubResource("Resource_rmog3"), SubResource("Resource_tnqsp"), SubResource("Resource_fldsc"), SubResource("Resource_ntp27"), SubResource("Resource_7nmxt"), SubResource("Resource_47jch"), SubResource("Resource_kp5f0"), SubResource("Resource_v8s33"), SubResource("Resource_hrafv"), SubResource("Resource_d50tw"), SubResource("Resource_a8amf"), SubResource("Resource_mbtm7"), SubResource("Resource_ynh6c"), SubResource("Resource_marsf")]) -LeftLaneData = Array[ExtResource("1_6fik5")]([SubResource("Resource_wkvcn"), SubResource("Resource_woki6"), SubResource("Resource_gm3ao"), SubResource("Resource_1qfq5"), SubResource("Resource_ywfrj"), SubResource("Resource_rxusk"), SubResource("Resource_r88cj"), SubResource("Resource_5e2go"), SubResource("Resource_s083v"), SubResource("Resource_jc0cy"), SubResource("Resource_3oete"), SubResource("Resource_b24fs"), SubResource("Resource_45x0b"), SubResource("Resource_x70wl"), SubResource("Resource_6e30o"), SubResource("Resource_8l6ei")]) -RightLaneData = Array[ExtResource("1_6fik5")]([SubResource("Resource_31o0y"), SubResource("Resource_2wwc7"), SubResource("Resource_m5e6q"), SubResource("Resource_v8sin"), SubResource("Resource_ykqor"), SubResource("Resource_cbmdd"), SubResource("Resource_ak0tp"), SubResource("Resource_pd2wi"), SubResource("Resource_11m2d"), SubResource("Resource_7totf"), SubResource("Resource_ob06q"), SubResource("Resource_s6r1b")]) +UpLaneData = [SubResource("Resource_3gjtl"), SubResource("Resource_vdnsu"), SubResource("Resource_3wyug"), SubResource("Resource_6kji1"), SubResource("Resource_w6jqv"), SubResource("Resource_083mg"), SubResource("Resource_dsf4k"), SubResource("Resource_2woca"), SubResource("Resource_jsj5h"), SubResource("Resource_qoqm3"), SubResource("Resource_nob8r"), SubResource("Resource_a6epf"), SubResource("Resource_ekjhc")] +DownLaneData = [SubResource("Resource_11qbm"), SubResource("Resource_hrrtc"), SubResource("Resource_rmog3"), SubResource("Resource_tnqsp"), SubResource("Resource_fldsc"), SubResource("Resource_ntp27"), SubResource("Resource_7nmxt"), SubResource("Resource_47jch"), SubResource("Resource_kp5f0"), SubResource("Resource_v8s33"), SubResource("Resource_hrafv"), SubResource("Resource_d50tw"), SubResource("Resource_a8amf"), SubResource("Resource_mbtm7"), SubResource("Resource_ynh6c"), SubResource("Resource_marsf")] +LeftLaneData = [SubResource("Resource_wkvcn"), SubResource("Resource_woki6"), SubResource("Resource_gm3ao"), SubResource("Resource_1qfq5"), SubResource("Resource_ywfrj"), SubResource("Resource_rxusk"), SubResource("Resource_r88cj"), SubResource("Resource_5e2go"), SubResource("Resource_s083v"), SubResource("Resource_jc0cy"), SubResource("Resource_3oete"), SubResource("Resource_b24fs"), SubResource("Resource_45x0b"), SubResource("Resource_x70wl"), SubResource("Resource_6e30o"), SubResource("Resource_8l6ei")] +RightLaneData = [SubResource("Resource_31o0y"), SubResource("Resource_2wwc7"), SubResource("Resource_m5e6q"), SubResource("Resource_v8sin"), SubResource("Resource_ykqor"), SubResource("Resource_cbmdd"), SubResource("Resource_ak0tp"), SubResource("Resource_pd2wi"), SubResource("Resource_11m2d"), SubResource("Resource_7totf"), SubResource("Resource_ob06q"), SubResource("Resource_s6r1b")] diff --git a/Audio/songMaps/Gobbler.tres b/Audio/songMaps/Gobbler.tres index d205f3ea..9931c118 100644 --- a/Audio/songMaps/Gobbler.tres +++ b/Audio/songMaps/Gobbler.tres @@ -217,8 +217,9 @@ Length = 0.0 script = ExtResource("2_hfiht") Bpm = 120 NumLoops = 6 +SongSpeed = -1.0 SongMapLocation = "Gobbler.ogg" -UpLaneData = Array[ExtResource("1_tuude")]([SubResource("Resource_8xjpx"), SubResource("Resource_wsgab"), SubResource("Resource_qwdig"), SubResource("Resource_66kxm"), SubResource("Resource_7ilo7"), SubResource("Resource_a20b3"), SubResource("Resource_pqrtt"), SubResource("Resource_pwr5v"), SubResource("Resource_rt0eg"), SubResource("Resource_8g5uo")]) -DownLaneData = Array[ExtResource("1_tuude")]([SubResource("Resource_i2qfq"), SubResource("Resource_clkmt"), SubResource("Resource_2yhqr"), SubResource("Resource_avloc"), SubResource("Resource_7ipoh"), SubResource("Resource_rc4vs"), SubResource("Resource_hsxfe"), SubResource("Resource_5uul0"), SubResource("Resource_20iwo")]) -LeftLaneData = Array[ExtResource("1_tuude")]([SubResource("Resource_q3mne"), SubResource("Resource_klde2"), SubResource("Resource_6wxhr"), SubResource("Resource_4fyoq"), SubResource("Resource_1hg6d"), SubResource("Resource_6on7t"), SubResource("Resource_eq4ob"), SubResource("Resource_2rtaq"), SubResource("Resource_t5na6")]) -RightLaneData = Array[ExtResource("1_tuude")]([SubResource("Resource_447id"), SubResource("Resource_5hmpv"), SubResource("Resource_xky58"), SubResource("Resource_sxqb5"), SubResource("Resource_ae4y0"), SubResource("Resource_j7a00"), SubResource("Resource_tbgdx"), SubResource("Resource_55ty7"), SubResource("Resource_meqji"), SubResource("Resource_bc4nj"), SubResource("Resource_i1t8w"), SubResource("Resource_qmi4l"), SubResource("Resource_ebk8g"), SubResource("Resource_cj46n")]) +UpLaneData = [SubResource("Resource_8xjpx"), SubResource("Resource_wsgab"), SubResource("Resource_qwdig"), SubResource("Resource_66kxm"), SubResource("Resource_7ilo7"), SubResource("Resource_a20b3"), SubResource("Resource_pqrtt"), SubResource("Resource_pwr5v"), SubResource("Resource_rt0eg"), SubResource("Resource_8g5uo")] +DownLaneData = [SubResource("Resource_i2qfq"), SubResource("Resource_clkmt"), SubResource("Resource_2yhqr"), SubResource("Resource_avloc"), SubResource("Resource_7ipoh"), SubResource("Resource_rc4vs"), SubResource("Resource_hsxfe"), SubResource("Resource_5uul0"), SubResource("Resource_20iwo")] +LeftLaneData = [SubResource("Resource_q3mne"), SubResource("Resource_klde2"), SubResource("Resource_6wxhr"), SubResource("Resource_4fyoq"), SubResource("Resource_1hg6d"), SubResource("Resource_6on7t"), SubResource("Resource_eq4ob"), SubResource("Resource_2rtaq"), SubResource("Resource_t5na6")] +RightLaneData = [SubResource("Resource_447id"), SubResource("Resource_5hmpv"), SubResource("Resource_xky58"), SubResource("Resource_sxqb5"), SubResource("Resource_ae4y0"), SubResource("Resource_j7a00"), SubResource("Resource_tbgdx"), SubResource("Resource_55ty7"), SubResource("Resource_meqji"), SubResource("Resource_bc4nj"), SubResource("Resource_i1t8w"), SubResource("Resource_qmi4l"), SubResource("Resource_ebk8g"), SubResource("Resource_cj46n")] diff --git a/Audio/songMaps/HoloRepeat.tres b/Audio/songMaps/HoloRepeat.tres index 4ff33e6a..72f2ed94 100644 --- a/Audio/songMaps/HoloRepeat.tres +++ b/Audio/songMaps/HoloRepeat.tres @@ -127,8 +127,9 @@ Length = 0.0 script = ExtResource("2_1kkot") Bpm = 130 NumLoops = 1 +SongSpeed = -1.0 SongMapLocation = "Holo_ThereItIs.ogg" -UpLaneData = Array[ExtResource("1_y4wy8")]([SubResource("Resource_rclq0"), SubResource("Resource_d15sy"), SubResource("Resource_xylpo"), SubResource("Resource_c4e5y"), SubResource("Resource_7lbis"), SubResource("Resource_8usgo")]) -DownLaneData = Array[ExtResource("1_y4wy8")]([SubResource("Resource_wxfu7"), SubResource("Resource_cjafy"), SubResource("Resource_jdotv"), SubResource("Resource_per1x"), SubResource("Resource_lw4uc"), SubResource("Resource_nxcmx")]) -LeftLaneData = Array[ExtResource("1_y4wy8")]([SubResource("Resource_x0uap"), SubResource("Resource_1m0i6"), SubResource("Resource_1mpgo"), SubResource("Resource_iuho0"), SubResource("Resource_uj1b6"), SubResource("Resource_fi760")]) -RightLaneData = Array[ExtResource("1_y4wy8")]([SubResource("Resource_1fc0d"), SubResource("Resource_0vl64"), SubResource("Resource_j64im"), SubResource("Resource_t15ay"), SubResource("Resource_v3dna"), SubResource("Resource_8lcjo")]) +UpLaneData = [SubResource("Resource_rclq0"), SubResource("Resource_d15sy"), SubResource("Resource_xylpo"), SubResource("Resource_c4e5y"), SubResource("Resource_7lbis"), SubResource("Resource_8usgo")] +DownLaneData = [SubResource("Resource_wxfu7"), SubResource("Resource_cjafy"), SubResource("Resource_jdotv"), SubResource("Resource_per1x"), SubResource("Resource_lw4uc"), SubResource("Resource_nxcmx")] +LeftLaneData = [SubResource("Resource_x0uap"), SubResource("Resource_1m0i6"), SubResource("Resource_1mpgo"), SubResource("Resource_iuho0"), SubResource("Resource_uj1b6"), SubResource("Resource_fi760")] +RightLaneData = [SubResource("Resource_1fc0d"), SubResource("Resource_0vl64"), SubResource("Resource_j64im"), SubResource("Resource_t15ay"), SubResource("Resource_v3dna"), SubResource("Resource_8lcjo")] diff --git a/Audio/songMaps/KeythuluSong.tres b/Audio/songMaps/KeythuluSong.tres index 7cfa9dfa..e73261f0 100644 --- a/Audio/songMaps/KeythuluSong.tres +++ b/Audio/songMaps/KeythuluSong.tres @@ -207,8 +207,9 @@ Length = 0.0 script = ExtResource("2_s63u8") Bpm = 170 NumLoops = 9 +SongSpeed = -1.0 SongMapLocation = "KeythuluSong.ogg" -UpLaneData = Array[ExtResource("1_8ueh4")]([SubResource("Resource_vkfw6"), SubResource("Resource_5vawl"), SubResource("Resource_wqml3"), SubResource("Resource_knus5"), SubResource("Resource_iyhat"), SubResource("Resource_e231o"), SubResource("Resource_u1ybv"), SubResource("Resource_s63u8"), SubResource("Resource_rwedv")]) -DownLaneData = Array[ExtResource("1_8ueh4")]([SubResource("Resource_ljr32"), SubResource("Resource_bb3yp"), SubResource("Resource_852ml"), SubResource("Resource_38nu8"), SubResource("Resource_3eydr"), SubResource("Resource_ct6sp"), SubResource("Resource_yk705"), SubResource("Resource_uswjw"), SubResource("Resource_e1hbr"), SubResource("Resource_8ueh4")]) -LeftLaneData = Array[ExtResource("1_8ueh4")]([SubResource("Resource_gryrv"), SubResource("Resource_kwtfb"), SubResource("Resource_c2bxv"), SubResource("Resource_7lpnw"), SubResource("Resource_50tbs"), SubResource("Resource_ttd2q"), SubResource("Resource_nnlde"), SubResource("Resource_lrc4j"), SubResource("Resource_83big"), SubResource("Resource_oocdv")]) -RightLaneData = Array[ExtResource("1_8ueh4")]([SubResource("Resource_lfmd3"), SubResource("Resource_x1ijp"), SubResource("Resource_6jgy8"), SubResource("Resource_oxq2d"), SubResource("Resource_3102k"), SubResource("Resource_j4fdm"), SubResource("Resource_5raac"), SubResource("Resource_c27cp"), SubResource("Resource_pfqra"), SubResource("Resource_2nxl5"), SubResource("Resource_67x67")]) +UpLaneData = [SubResource("Resource_vkfw6"), SubResource("Resource_5vawl"), SubResource("Resource_wqml3"), SubResource("Resource_knus5"), SubResource("Resource_iyhat"), SubResource("Resource_e231o"), SubResource("Resource_u1ybv"), SubResource("Resource_s63u8"), SubResource("Resource_rwedv")] +DownLaneData = [SubResource("Resource_ljr32"), SubResource("Resource_bb3yp"), SubResource("Resource_852ml"), SubResource("Resource_38nu8"), SubResource("Resource_3eydr"), SubResource("Resource_ct6sp"), SubResource("Resource_yk705"), SubResource("Resource_uswjw"), SubResource("Resource_e1hbr"), SubResource("Resource_8ueh4")] +LeftLaneData = [SubResource("Resource_gryrv"), SubResource("Resource_kwtfb"), SubResource("Resource_c2bxv"), SubResource("Resource_7lpnw"), SubResource("Resource_50tbs"), SubResource("Resource_ttd2q"), SubResource("Resource_nnlde"), SubResource("Resource_lrc4j"), SubResource("Resource_83big"), SubResource("Resource_oocdv")] +RightLaneData = [SubResource("Resource_lfmd3"), SubResource("Resource_x1ijp"), SubResource("Resource_6jgy8"), SubResource("Resource_oxq2d"), SubResource("Resource_3102k"), SubResource("Resource_j4fdm"), SubResource("Resource_5raac"), SubResource("Resource_c27cp"), SubResource("Resource_pfqra"), SubResource("Resource_2nxl5"), SubResource("Resource_67x67")] diff --git a/Audio/songMaps/Mushroom.tres b/Audio/songMaps/Mushroom.tres index dfc22e38..7c6ac43d 100644 --- a/Audio/songMaps/Mushroom.tres +++ b/Audio/songMaps/Mushroom.tres @@ -77,8 +77,9 @@ Length = 0.0 script = ExtResource("2_0c8vj") Bpm = 100 NumLoops = 4 +SongSpeed = -1.0 SongMapLocation = "Mushroom.ogg" -UpLaneData = Array[ExtResource("1_n1l5w")]([SubResource("Resource_ymucf"), SubResource("Resource_bmgju"), SubResource("Resource_sosma"), SubResource("Resource_3retf")]) -DownLaneData = Array[ExtResource("1_n1l5w")]([SubResource("Resource_pprmk"), SubResource("Resource_n1l5w"), SubResource("Resource_0c8vj")]) -LeftLaneData = Array[ExtResource("1_n1l5w")]([SubResource("Resource_4gn2h"), SubResource("Resource_aa728"), SubResource("Resource_olyge"), SubResource("Resource_rjl7u")]) -RightLaneData = Array[ExtResource("1_n1l5w")]([SubResource("Resource_ea4gl"), SubResource("Resource_seepc"), SubResource("Resource_xdem2")]) +UpLaneData = [SubResource("Resource_ymucf"), SubResource("Resource_bmgju"), SubResource("Resource_sosma"), SubResource("Resource_3retf")] +DownLaneData = [SubResource("Resource_pprmk"), SubResource("Resource_n1l5w"), SubResource("Resource_0c8vj")] +LeftLaneData = [SubResource("Resource_4gn2h"), SubResource("Resource_aa728"), SubResource("Resource_olyge"), SubResource("Resource_rjl7u")] +RightLaneData = [SubResource("Resource_ea4gl"), SubResource("Resource_seepc"), SubResource("Resource_xdem2")] diff --git a/Audio/songMaps/ParasiflyDouble.tres b/Audio/songMaps/ParasiflyDouble.tres index 4521dfaa..6a4e498b 100644 --- a/Audio/songMaps/ParasiflyDouble.tres +++ b/Audio/songMaps/ParasiflyDouble.tres @@ -122,8 +122,9 @@ Length = 0.0 script = ExtResource("2_p8lx2") Bpm = 120 NumLoops = 2 +SongSpeed = -1.0 SongMapLocation = "Song2.ogg" -UpLaneData = Array[ExtResource("1_2gxac")]([SubResource("Resource_3viwm"), SubResource("Resource_mcgpp"), SubResource("Resource_olklg"), SubResource("Resource_57g2b")]) -DownLaneData = Array[ExtResource("1_2gxac")]([SubResource("Resource_svc5u"), SubResource("Resource_ienox"), SubResource("Resource_ax4q1"), SubResource("Resource_663rs"), SubResource("Resource_86xei"), SubResource("Resource_w3gx2"), SubResource("Resource_t01kg")]) -LeftLaneData = Array[ExtResource("1_2gxac")]([SubResource("Resource_rnhdg"), SubResource("Resource_of7dy"), SubResource("Resource_xq1dl")]) -RightLaneData = Array[ExtResource("1_2gxac")]([SubResource("Resource_ym0tj"), SubResource("Resource_1vvgc"), SubResource("Resource_wjmqy"), SubResource("Resource_64q4o"), SubResource("Resource_rubmr"), SubResource("Resource_ejow0"), SubResource("Resource_pbett"), SubResource("Resource_gru0r"), SubResource("Resource_wljiu")]) +UpLaneData = [SubResource("Resource_3viwm"), SubResource("Resource_mcgpp"), SubResource("Resource_olklg"), SubResource("Resource_57g2b")] +DownLaneData = [SubResource("Resource_svc5u"), SubResource("Resource_ienox"), SubResource("Resource_ax4q1"), SubResource("Resource_663rs"), SubResource("Resource_86xei"), SubResource("Resource_w3gx2"), SubResource("Resource_t01kg")] +LeftLaneData = [SubResource("Resource_rnhdg"), SubResource("Resource_of7dy"), SubResource("Resource_xq1dl")] +RightLaneData = [SubResource("Resource_ym0tj"), SubResource("Resource_1vvgc"), SubResource("Resource_wjmqy"), SubResource("Resource_64q4o"), SubResource("Resource_rubmr"), SubResource("Resource_ejow0"), SubResource("Resource_pbett"), SubResource("Resource_gru0r"), SubResource("Resource_wljiu")] diff --git a/Audio/songMaps/ParasiflySingle.tres b/Audio/songMaps/ParasiflySingle.tres index f78d9197..c33068e5 100644 --- a/Audio/songMaps/ParasiflySingle.tres +++ b/Audio/songMaps/ParasiflySingle.tres @@ -122,8 +122,9 @@ Length = 0.0 script = ExtResource("2_qfjvo") Bpm = 60 NumLoops = 1 +SongSpeed = -1.0 SongMapLocation = "Song2.ogg" -UpLaneData = Array[ExtResource("1_qiqje")]([SubResource("Resource_3viwm"), SubResource("Resource_mcgpp"), SubResource("Resource_olklg"), SubResource("Resource_57g2b")]) -DownLaneData = Array[ExtResource("1_qiqje")]([SubResource("Resource_svc5u"), SubResource("Resource_ienox"), SubResource("Resource_ax4q1"), SubResource("Resource_663rs"), SubResource("Resource_86xei"), SubResource("Resource_w3gx2"), SubResource("Resource_t01kg")]) -LeftLaneData = Array[ExtResource("1_qiqje")]([SubResource("Resource_rnhdg"), SubResource("Resource_of7dy"), SubResource("Resource_xq1dl")]) -RightLaneData = Array[ExtResource("1_qiqje")]([SubResource("Resource_ym0tj"), SubResource("Resource_1vvgc"), SubResource("Resource_wjmqy"), SubResource("Resource_64q4o"), SubResource("Resource_rubmr"), SubResource("Resource_ejow0"), SubResource("Resource_pbett"), SubResource("Resource_gru0r"), SubResource("Resource_wljiu")]) +UpLaneData = [SubResource("Resource_3viwm"), SubResource("Resource_mcgpp"), SubResource("Resource_olklg"), SubResource("Resource_57g2b")] +DownLaneData = [SubResource("Resource_svc5u"), SubResource("Resource_ienox"), SubResource("Resource_ax4q1"), SubResource("Resource_663rs"), SubResource("Resource_86xei"), SubResource("Resource_w3gx2"), SubResource("Resource_t01kg")] +LeftLaneData = [SubResource("Resource_rnhdg"), SubResource("Resource_of7dy"), SubResource("Resource_xq1dl")] +RightLaneData = [SubResource("Resource_ym0tj"), SubResource("Resource_1vvgc"), SubResource("Resource_wjmqy"), SubResource("Resource_64q4o"), SubResource("Resource_rubmr"), SubResource("Resource_ejow0"), SubResource("Resource_pbett"), SubResource("Resource_gru0r"), SubResource("Resource_wljiu")] diff --git a/Audio/songMaps/Shapes.tres b/Audio/songMaps/Shapes.tres index 1c07c49b..ac1ea63a 100644 --- a/Audio/songMaps/Shapes.tres +++ b/Audio/songMaps/Shapes.tres @@ -187,8 +187,9 @@ Length = 0.0 script = ExtResource("2_j6rk8") Bpm = 107 NumLoops = 7 +SongSpeed = -1.0 SongMapLocation = "Shapes.ogg" -UpLaneData = Array[ExtResource("1_egl41")]([SubResource("Resource_20ma1"), SubResource("Resource_t2x17"), SubResource("Resource_hsyk0"), SubResource("Resource_txx7m"), SubResource("Resource_uic3e"), SubResource("Resource_fy78b"), SubResource("Resource_p1dmw"), SubResource("Resource_7k1m6"), SubResource("Resource_e223l")]) -DownLaneData = Array[ExtResource("1_egl41")]([SubResource("Resource_egl41"), SubResource("Resource_j6rk8"), SubResource("Resource_61fe8"), SubResource("Resource_dmlrl"), SubResource("Resource_xny5e"), SubResource("Resource_sybk5"), SubResource("Resource_cs7yi"), SubResource("Resource_xv7yd"), SubResource("Resource_pfidy"), SubResource("Resource_n0y2d")]) -LeftLaneData = Array[ExtResource("1_egl41")]([SubResource("Resource_i5oul"), SubResource("Resource_qnkk3"), SubResource("Resource_oqhlp"), SubResource("Resource_af8di"), SubResource("Resource_p5qx0"), SubResource("Resource_5ddno"), SubResource("Resource_ep11h")]) -RightLaneData = Array[ExtResource("1_egl41")]([SubResource("Resource_yjewp"), SubResource("Resource_pn3jr"), SubResource("Resource_yxbuu"), SubResource("Resource_5ue8d"), SubResource("Resource_kjeyd"), SubResource("Resource_pljkl"), SubResource("Resource_0h2yl"), SubResource("Resource_ijt06"), SubResource("Resource_61fei"), SubResource("Resource_vxhs1")]) +UpLaneData = [SubResource("Resource_20ma1"), SubResource("Resource_t2x17"), SubResource("Resource_hsyk0"), SubResource("Resource_txx7m"), SubResource("Resource_uic3e"), SubResource("Resource_fy78b"), SubResource("Resource_p1dmw"), SubResource("Resource_7k1m6"), SubResource("Resource_e223l")] +DownLaneData = [SubResource("Resource_egl41"), SubResource("Resource_j6rk8"), SubResource("Resource_61fe8"), SubResource("Resource_dmlrl"), SubResource("Resource_xny5e"), SubResource("Resource_sybk5"), SubResource("Resource_cs7yi"), SubResource("Resource_xv7yd"), SubResource("Resource_pfidy"), SubResource("Resource_n0y2d")] +LeftLaneData = [SubResource("Resource_i5oul"), SubResource("Resource_qnkk3"), SubResource("Resource_oqhlp"), SubResource("Resource_af8di"), SubResource("Resource_p5qx0"), SubResource("Resource_5ddno"), SubResource("Resource_ep11h")] +RightLaneData = [SubResource("Resource_yjewp"), SubResource("Resource_pn3jr"), SubResource("Resource_yxbuu"), SubResource("Resource_5ue8d"), SubResource("Resource_kjeyd"), SubResource("Resource_pljkl"), SubResource("Resource_0h2yl"), SubResource("Resource_ijt06"), SubResource("Resource_61fei"), SubResource("Resource_vxhs1")] diff --git a/Audio/songMaps/Spider.tres b/Audio/songMaps/Spider.tres index 97b092ba..816c1b3d 100644 --- a/Audio/songMaps/Spider.tres +++ b/Audio/songMaps/Spider.tres @@ -137,8 +137,9 @@ Length = 0.0 script = ExtResource("2_ojgcg") Bpm = 130 NumLoops = 3 +SongSpeed = -1.0 SongMapLocation = "Spider.ogg" -UpLaneData = Array[ExtResource("1_kilos")]([SubResource("Resource_j42ns"), SubResource("Resource_kihon"), SubResource("Resource_j43rp"), SubResource("Resource_3j8yo"), SubResource("Resource_vk213"), SubResource("Resource_dsydf")]) -DownLaneData = Array[ExtResource("1_kilos")]([SubResource("Resource_kilos"), SubResource("Resource_ojgcg"), SubResource("Resource_e2i3v"), SubResource("Resource_bxgte"), SubResource("Resource_7c41j"), SubResource("Resource_ibasm"), SubResource("Resource_57q1g")]) -LeftLaneData = Array[ExtResource("1_kilos")]([SubResource("Resource_5kf2q"), SubResource("Resource_klick"), SubResource("Resource_ncgpb"), SubResource("Resource_58gsr"), SubResource("Resource_cuxey"), SubResource("Resource_uqtyg"), SubResource("Resource_8wxpt"), SubResource("Resource_7xcdg")]) -RightLaneData = Array[ExtResource("1_kilos")]([SubResource("Resource_erw8g"), SubResource("Resource_ka8yr"), SubResource("Resource_8jxfc"), SubResource("Resource_al1ha"), SubResource("Resource_heg8m")]) +UpLaneData = [SubResource("Resource_j42ns"), SubResource("Resource_kihon"), SubResource("Resource_j43rp"), SubResource("Resource_3j8yo"), SubResource("Resource_vk213"), SubResource("Resource_dsydf")] +DownLaneData = [SubResource("Resource_kilos"), SubResource("Resource_ojgcg"), SubResource("Resource_e2i3v"), SubResource("Resource_bxgte"), SubResource("Resource_7c41j"), SubResource("Resource_ibasm"), SubResource("Resource_57q1g")] +LeftLaneData = [SubResource("Resource_5kf2q"), SubResource("Resource_klick"), SubResource("Resource_ncgpb"), SubResource("Resource_58gsr"), SubResource("Resource_cuxey"), SubResource("Resource_uqtyg"), SubResource("Resource_8wxpt"), SubResource("Resource_7xcdg")] +RightLaneData = [SubResource("Resource_erw8g"), SubResource("Resource_ka8yr"), SubResource("Resource_8jxfc"), SubResource("Resource_al1ha"), SubResource("Resource_heg8m")] diff --git a/Audio/songMaps/SquirkelSong.tres b/Audio/songMaps/SquirkelSong.tres index 34fe1b40..7fa60430 100644 --- a/Audio/songMaps/SquirkelSong.tres +++ b/Audio/songMaps/SquirkelSong.tres @@ -87,8 +87,9 @@ Length = 0.0 script = ExtResource("2_s63u8") Bpm = 180 NumLoops = 5 +SongSpeed = -1.0 SongMapLocation = "SquirkelSong.ogg" -UpLaneData = Array[ExtResource("1_8ueh4")]([SubResource("Resource_50tbs"), SubResource("Resource_ttd2q")]) -DownLaneData = Array[ExtResource("1_8ueh4")]([SubResource("Resource_ljr32"), SubResource("Resource_bb3yp"), SubResource("Resource_852ml"), SubResource("Resource_38nu8"), SubResource("Resource_3eydr"), SubResource("Resource_ct6sp"), SubResource("Resource_yk705"), SubResource("Resource_oocdv")]) -LeftLaneData = Array[ExtResource("1_8ueh4")]([]) -RightLaneData = Array[ExtResource("1_8ueh4")]([SubResource("Resource_uswjw"), SubResource("Resource_e1hbr"), SubResource("Resource_gryrv"), SubResource("Resource_kwtfb"), SubResource("Resource_c2bxv"), SubResource("Resource_7lpnw")]) +UpLaneData = [SubResource("Resource_50tbs"), SubResource("Resource_ttd2q")] +DownLaneData = [SubResource("Resource_ljr32"), SubResource("Resource_bb3yp"), SubResource("Resource_852ml"), SubResource("Resource_38nu8"), SubResource("Resource_3eydr"), SubResource("Resource_ct6sp"), SubResource("Resource_yk705"), SubResource("Resource_oocdv")] +LeftLaneData = [] +RightLaneData = [SubResource("Resource_uswjw"), SubResource("Resource_e1hbr"), SubResource("Resource_gryrv"), SubResource("Resource_kwtfb"), SubResource("Resource_c2bxv"), SubResource("Resource_7lpnw")] diff --git a/Audio/songMaps/TutorialBoss176_7.tres b/Audio/songMaps/TutorialBoss176_7.tres index 55ab4673..fc22a24b 100644 --- a/Audio/songMaps/TutorialBoss176_7.tres +++ b/Audio/songMaps/TutorialBoss176_7.tres @@ -292,8 +292,9 @@ Length = 0.0 script = ExtResource("2_gbai3") Bpm = 176 NumLoops = 7 +SongSpeed = -1.0 SongMapLocation = "District_Four.ogg" -UpLaneData = Array[ExtResource("1_w1u0b")]([SubResource("Resource_w1u0b"), SubResource("Resource_gbai3"), SubResource("Resource_bcwc6"), SubResource("Resource_0k2f6"), SubResource("Resource_tgoco"), SubResource("Resource_x1j4d"), SubResource("Resource_e76xg"), SubResource("Resource_vhygb"), SubResource("Resource_unq76"), SubResource("Resource_cn75w"), SubResource("Resource_3pobr"), SubResource("Resource_43v1q"), SubResource("Resource_2i0ix"), SubResource("Resource_eo1b6"), SubResource("Resource_ehfsr"), SubResource("Resource_05gdy"), SubResource("Resource_b164v"), SubResource("Resource_86j1n"), SubResource("Resource_p6bp3"), SubResource("Resource_7erhr"), SubResource("Resource_n6xrx"), SubResource("Resource_75ujr"), SubResource("Resource_mlxr3"), SubResource("Resource_5vw1o"), SubResource("Resource_suuru")]) -DownLaneData = Array[ExtResource("1_w1u0b")]([SubResource("Resource_sxt82"), SubResource("Resource_j5ca6"), SubResource("Resource_cfyig"), SubResource("Resource_oq2fs"), SubResource("Resource_bv13m"), SubResource("Resource_lg6ov"), SubResource("Resource_eg7rs"), SubResource("Resource_x3k65"), SubResource("Resource_d5g7d"), SubResource("Resource_1cpsm"), SubResource("Resource_giltv")]) -LeftLaneData = Array[ExtResource("1_w1u0b")]([SubResource("Resource_oqa5e"), SubResource("Resource_kk6vq"), SubResource("Resource_3scxn"), SubResource("Resource_p5ohh"), SubResource("Resource_dxorp"), SubResource("Resource_pm5wf"), SubResource("Resource_biar7"), SubResource("Resource_bnjg0"), SubResource("Resource_7gvq1")]) -RightLaneData = Array[ExtResource("1_w1u0b")]([SubResource("Resource_pgga6"), SubResource("Resource_gr1jk"), SubResource("Resource_w2pru"), SubResource("Resource_wgekv"), SubResource("Resource_qsagv"), SubResource("Resource_gmjq8"), SubResource("Resource_35mcn"), SubResource("Resource_pwkkg"), SubResource("Resource_gks01"), SubResource("Resource_vp8wv"), SubResource("Resource_ur61o"), SubResource("Resource_71lt2")]) +UpLaneData = [SubResource("Resource_w1u0b"), SubResource("Resource_gbai3"), SubResource("Resource_bcwc6"), SubResource("Resource_0k2f6"), SubResource("Resource_tgoco"), SubResource("Resource_x1j4d"), SubResource("Resource_e76xg"), SubResource("Resource_vhygb"), SubResource("Resource_unq76"), SubResource("Resource_cn75w"), SubResource("Resource_3pobr"), SubResource("Resource_43v1q"), SubResource("Resource_2i0ix"), SubResource("Resource_eo1b6"), SubResource("Resource_ehfsr"), SubResource("Resource_05gdy"), SubResource("Resource_b164v"), SubResource("Resource_86j1n"), SubResource("Resource_p6bp3"), SubResource("Resource_7erhr"), SubResource("Resource_n6xrx"), SubResource("Resource_75ujr"), SubResource("Resource_mlxr3"), SubResource("Resource_5vw1o"), SubResource("Resource_suuru")] +DownLaneData = [SubResource("Resource_sxt82"), SubResource("Resource_j5ca6"), SubResource("Resource_cfyig"), SubResource("Resource_oq2fs"), SubResource("Resource_bv13m"), SubResource("Resource_lg6ov"), SubResource("Resource_eg7rs"), SubResource("Resource_x3k65"), SubResource("Resource_d5g7d"), SubResource("Resource_1cpsm"), SubResource("Resource_giltv")] +LeftLaneData = [SubResource("Resource_oqa5e"), SubResource("Resource_kk6vq"), SubResource("Resource_3scxn"), SubResource("Resource_p5ohh"), SubResource("Resource_dxorp"), SubResource("Resource_pm5wf"), SubResource("Resource_biar7"), SubResource("Resource_bnjg0"), SubResource("Resource_7gvq1")] +RightLaneData = [SubResource("Resource_pgga6"), SubResource("Resource_gr1jk"), SubResource("Resource_w2pru"), SubResource("Resource_wgekv"), SubResource("Resource_qsagv"), SubResource("Resource_gmjq8"), SubResource("Resource_35mcn"), SubResource("Resource_pwkkg"), SubResource("Resource_gks01"), SubResource("Resource_vp8wv"), SubResource("Resource_ur61o"), SubResource("Resource_71lt2")] diff --git a/Audio/songMaps/TutorialSong.tres b/Audio/songMaps/TutorialSong.tres index c3b3e5b4..fd0a10f4 100644 --- a/Audio/songMaps/TutorialSong.tres +++ b/Audio/songMaps/TutorialSong.tres @@ -107,8 +107,9 @@ Length = 0.0 script = ExtResource("2_bsw0b") Bpm = 90 NumLoops = 1 +SongSpeed = -1.0 SongMapLocation = "TutorialSong.ogg" -UpLaneData = Array[ExtResource("1_roxhp")]([SubResource("Resource_bnbk2"), SubResource("Resource_t2mc0"), SubResource("Resource_xl4h8"), SubResource("Resource_7i220"), SubResource("Resource_txc3y"), SubResource("Resource_iixj3"), SubResource("Resource_5o1tj"), SubResource("Resource_l3ivu"), SubResource("Resource_d6d5y")]) -DownLaneData = Array[ExtResource("1_roxhp")]([SubResource("Resource_a0ovt"), SubResource("Resource_ahash"), SubResource("Resource_6gc2p"), SubResource("Resource_tjsh3"), SubResource("Resource_s18ys"), SubResource("Resource_wcsgu"), SubResource("Resource_r81qg"), SubResource("Resource_roxhp")]) -LeftLaneData = Array[ExtResource("1_roxhp")]([SubResource("Resource_ifw8a"), SubResource("Resource_d0m6p"), SubResource("Resource_owwlp")]) -RightLaneData = Array[ExtResource("1_roxhp")]([]) +UpLaneData = [SubResource("Resource_bnbk2"), SubResource("Resource_t2mc0"), SubResource("Resource_xl4h8"), SubResource("Resource_7i220"), SubResource("Resource_txc3y"), SubResource("Resource_iixj3"), SubResource("Resource_5o1tj"), SubResource("Resource_l3ivu"), SubResource("Resource_d6d5y")] +DownLaneData = [SubResource("Resource_a0ovt"), SubResource("Resource_ahash"), SubResource("Resource_6gc2p"), SubResource("Resource_tjsh3"), SubResource("Resource_s18ys"), SubResource("Resource_wcsgu"), SubResource("Resource_r81qg"), SubResource("Resource_roxhp")] +LeftLaneData = [SubResource("Resource_ifw8a"), SubResource("Resource_d0m6p"), SubResource("Resource_owwlp")] +RightLaneData = [] diff --git a/Classes/MidiMaestro/NoteChart.cs b/Classes/MidiMaestro/NoteChart.cs index 49174be4..d5f9fc85 100644 --- a/Classes/MidiMaestro/NoteChart.cs +++ b/Classes/MidiMaestro/NoteChart.cs @@ -14,6 +14,11 @@ public partial class NoteChart : Resource [Export] public int NumLoops { get; set; } + //178 is average for most fights + //<= 0 means go with default chart speed based on song length + [Export] + public float SongSpeed { get; set; } = -1; + [Export] public string SongMapLocation { get; set; } = ""; diff --git a/Scenes/ChartViewport/Scripts/ChartManager.cs b/Scenes/ChartViewport/Scripts/ChartManager.cs index d1750645..2d28aaab 100644 --- a/Scenes/ChartViewport/Scripts/ChartManager.cs +++ b/Scenes/ChartViewport/Scripts/ChartManager.cs @@ -83,6 +83,8 @@ public void Initialize(NoteChart songData, double songLen) double loopLen = songLen / songData.NumLoops; + if (songData.SongSpeed > 0) + _chartLength = songData.SongSpeed * loopLen; //99% sure chart length can never be less than (chart viewport width) * 2, //otherwise there isn't room for things to loop from off and on screen _chartLength = Math.Max( @@ -90,7 +92,6 @@ public void Initialize(NoteChart songData, double songLen) //Also minimize rounding point imprecision, improvement is qualitative loopLen * Math.Floor(_chartLength / loopLen) ); - TimeKeeper.ChartWidth = _chartLength; TimeKeeper.Bpm = songData.Bpm; @@ -102,7 +103,7 @@ public void Initialize(NoteChart songData, double songLen) public void BeginTweens() { if (ArrowTween != null) - this.ArrowTween.Kill(); + ArrowTween.Kill(); //This could be good as a function to call on something, to have many things animated to the beat. ArrowTween = CreateTween(); ArrowTween From 0d3b455a4285ef172add860b0065766d8a60515c Mon Sep 17 00:00:00 2001 From: LifeHckr Date: Fri, 23 May 2025 13:18:00 -0700 Subject: [PATCH 07/14] Updated NoteQueue Sprite --- .../BattleDirector/Assets/NoteQueue_Frame.png | Bin 673 -> 612 bytes Scenes/BattleDirector/NotePlacementBar.tscn | 18 +++++++----------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/Scenes/BattleDirector/Assets/NoteQueue_Frame.png b/Scenes/BattleDirector/Assets/NoteQueue_Frame.png index 8ce76dec7f185f6d1973be6de748216cb4e63b44..25ae06b2203b5aed59e81b51567237f85dd3a90a 100644 GIT binary patch delta 220 zcmZ3;`h-QXGr-TCmrII^fq{Y7)59eQNGkxb0|y(BtnMpaw^4C2WBqJT7srr{#% z3LY`wV7>VCSgA#zYKWies-x5AJPuY8uBcxlIZs81R_Pu! zF6P}(Tz}ynGgDtZ@3!jtD~8*a?7IAq6{HKI{SN;gaf4$F9p^sUFzkD@T fh{w@^Hl|>#!^|%@|K?`J00000NkvXXu0mjf&@^>E diff --git a/Scenes/BattleDirector/NotePlacementBar.tscn b/Scenes/BattleDirector/NotePlacementBar.tscn index 1fc0ddd2..54d676b3 100644 --- a/Scenes/BattleDirector/NotePlacementBar.tscn +++ b/Scenes/BattleDirector/NotePlacementBar.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=15 format=3 uid="uid://duhiilcv4tat3"] +[gd_scene load_steps=14 format=3 uid="uid://duhiilcv4tat3"] [ext_resource type="Script" uid="uid://gj666xe815py" path="res://Scenes/BattleDirector/Scripts/NotePlacementBar.cs" id="1_456es"] [ext_resource type="Texture2D" uid="uid://cnyr5usjdv0ni" path="res://Scenes/BattleDirector/Assets/NoteQueue_Frame.png" id="2_3tw16"] [ext_resource type="Texture2D" uid="uid://gcst7q2acsqm" path="res://Scenes/BattleDirector/Assets/PlacementBar_Under.png" id="2_5a8x5"] [ext_resource type="Shader" uid="uid://difiiwiddwutp" path="res://Scenes/BattleDirector/Assets/wave.gdshader" id="2_kb2co"] -[ext_resource type="Texture2D" uid="uid://c3chrsxrulapd" path="res://Classes/Notes/Assets/Note_PlayerBasic.png" id="3_6ylx6"] [ext_resource type="Texture2D" uid="uid://bi4tbiovlm2g1" path="res://Scenes/BattleDirector/Assets/PlacementBar_Over.png" id="3_kb2co"] [ext_resource type="Texture2D" uid="uid://caw70lr5e1yiq" path="res://Classes/Notes/Assets/Note_PlayerDouble.png" id="4_6w8ha"] @@ -127,16 +126,13 @@ scale_amount_max = 2.0 color = Color(1, 1, 0.0745098, 1) [node name="NoteQueueSprite" type="Sprite2D" parent="."] -position = Vector2(23, 66) -rotation = -1.5708 +position = Vector2(23, 69) texture = ExtResource("2_3tw16") -[node name="NextNote" type="Sprite2D" parent="NoteQueueSprite"] -position = Vector2(-16, 0) -rotation = 1.5708 -texture = ExtResource("3_6ylx6") - [node name="CurrentNote" type="Sprite2D" parent="NoteQueueSprite"] -position = Vector2(16, 0) -rotation = 1.5708 +position = Vector2(1, -19) +texture = ExtResource("4_6w8ha") + +[node name="NextNote" type="Sprite2D" parent="NoteQueueSprite"] +position = Vector2(1, 14) texture = ExtResource("4_6w8ha") From 21359edf17fe2652bbca6016fc19f0ce11c2c175 Mon Sep 17 00:00:00 2001 From: LifeHckr Date: Fri, 23 May 2025 16:41:01 -0700 Subject: [PATCH 08/14] Add Splash Screen --- SharedAssets/SplashScreenGodot.png | Bin 0 -> 253540 bytes SharedAssets/SplashScreenGodot.png.import | 34 ++++++++++++++++++++++ project.godot | 2 ++ 3 files changed, 36 insertions(+) create mode 100644 SharedAssets/SplashScreenGodot.png create mode 100644 SharedAssets/SplashScreenGodot.png.import diff --git a/SharedAssets/SplashScreenGodot.png b/SharedAssets/SplashScreenGodot.png new file mode 100644 index 0000000000000000000000000000000000000000..b327574732791cd2453a1ac2b3033a2f3fa618a8 GIT binary patch literal 253540 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�M#jp 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 literal 0 HcmV?d00001 diff --git a/SharedAssets/SplashScreenGodot.png.import b/SharedAssets/SplashScreenGodot.png.import new file mode 100644 index 00000000..c498deb2 --- /dev/null +++ b/SharedAssets/SplashScreenGodot.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://buc2vne427up1" +path="res://.godot/imported/SplashScreenGodot.png-d169252b8ad42d7ed1f93c8536ff8bdd.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://SharedAssets/SplashScreenGodot.png" +dest_files=["res://.godot/imported/SplashScreenGodot.png-d169252b8ad42d7ed1f93c8536ff8bdd.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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 9fb978b4..d9217cef 100644 --- a/project.godot +++ b/project.godot @@ -14,6 +14,8 @@ config/name="ProjectFunkEngine" config/tags=PackedStringArray("cool") run/main_scene="res://Scenes/UI/TitleScreen/TitleScreen.tscn" config/features=PackedStringArray("4.4", "C#", "Forward Plus") +boot_splash/bg_color=Color(0.103744, 0.103744, 0.103744, 1) +boot_splash/image="uid://buc2vne427up1" config/icon="res://SharedAssets/Character1.png" [audio] From ff50001fb8937436256ef855fa4c4a34b19ec6df Mon Sep 17 00:00:00 2001 From: LifeHckr Date: Fri, 23 May 2025 17:52:14 -0700 Subject: [PATCH 09/14] Add styling to hslider and dropdownmenu --- Scenes/UI/Assets/GeneralTheme.tres | 94 ++++++++++++++++++++++++++++-- Scenes/UI/Inventory.tscn | 11 +++- Scenes/UI/Options/OptionsMenu.tscn | 1 + 3 files changed, 100 insertions(+), 6 deletions(-) diff --git a/Scenes/UI/Assets/GeneralTheme.tres b/Scenes/UI/Assets/GeneralTheme.tres index cdbaff2f..3b35e005 100644 --- a/Scenes/UI/Assets/GeneralTheme.tres +++ b/Scenes/UI/Assets/GeneralTheme.tres @@ -1,8 +1,9 @@ -[gd_resource type="Theme" load_steps=12 format=3 uid="uid://d37e3tpsbxwak"] +[gd_resource type="Theme" load_steps=22 format=3 uid="uid://d37e3tpsbxwak"] [ext_resource type="Texture2D" uid="uid://dj0nfgig1kd5l" path="res://Scenes/UI/Assets/3DButton.png" id="1_nsq46"] [ext_resource type="Texture2D" uid="uid://cegasble5d7uw" path="res://Scenes/UI/Assets/UI_Selection.png" id="2_d2tmw"] [ext_resource type="Texture2D" uid="uid://b5jfffpaextmp" path="res://Scenes/UI/Assets/3DButtonPressed.png" id="2_i0sgk"] +[ext_resource type="Texture2D" uid="uid://djd6iw2g84bba" path="res://Scenes/UI/Assets/UI_CenterFrame.png" id="4_fcxv1"] [sub_resource type="StyleBoxTexture" id="StyleBoxTexture_agpvv"] texture = ExtResource("1_nsq46") @@ -51,13 +52,90 @@ texture_margin_right = 9.0 texture_margin_bottom = 13.0 modulate_color = Color(0.801938, 0.00206308, 0.972656, 0.8) +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_fcxv1"] +texture = ExtResource("2_d2tmw") +texture_margin_left = 20.0 +texture_margin_top = 20.0 +texture_margin_right = 20.0 +texture_margin_bottom = 20.0 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_o3ngu"] +content_margin_left = 4.0 +content_margin_top = 4.0 +content_margin_right = 4.0 +content_margin_bottom = 4.0 +bg_color = Color(0.584, 0.004, 0.725, 0.4) +corner_radius_top_left = 4 +corner_radius_top_right = 4 +corner_radius_bottom_right = 4 +corner_radius_bottom_left = 4 +corner_detail = 6 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_x6kye"] +content_margin_left = 4.0 +content_margin_top = 4.0 +content_margin_right = 4.0 +content_margin_bottom = 4.0 +bg_color = Color(0.754963, 0.0147022, 0.93338, 0.9) +corner_radius_top_left = 4 +corner_radius_top_right = 4 +corner_radius_bottom_right = 4 +corner_radius_bottom_left = 4 +corner_detail = 6 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_gstb8"] +content_margin_left = 4.0 +content_margin_top = 4.0 +content_margin_right = 4.0 +content_margin_bottom = 4.0 +bg_color = Color(0.89, 0.8, 1, 0.2) +corner_radius_top_left = 4 +corner_radius_top_right = 4 +corner_radius_bottom_right = 4 +corner_radius_bottom_left = 4 +corner_detail = 6 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_a72e7"] +bg_color = Color(1, 1, 1, 0.25) + +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_o3ngu"] +texture = ExtResource("4_fcxv1") +texture_margin_left = 6.0 +texture_margin_top = 6.0 +texture_margin_right = 6.0 +texture_margin_bottom = 6.0 + +[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_fcxv1"] +load_path = "res://.godot/imported/UI_Selection.png-8c5709c8210ccab47a36d274ec2686c0.ctex" + +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_a72e7"] +texture = SubResource("CompressedTexture2D_fcxv1") +texture_margin_left = 20.0 +texture_margin_top = 21.0 +texture_margin_right = 20.0 +expand_margin_left = 1.0 +expand_margin_top = 2.0 +expand_margin_right = 1.0 +expand_margin_bottom = 2.0 +region_rect = Rect2(0, 0, 98, 20) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_fcxv1"] +content_margin_left = 10.0 +content_margin_top = 4.0 +content_margin_right = 10.0 +content_margin_bottom = 4.0 +bg_color = Color(0.039, 0.012, 0.149, 0.75) +border_color = Color(0.175, 0.175, 0.175, 1) +corner_detail = 1 + [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_crcjn"] content_margin_left = 10.0 content_margin_top = 4.0 content_margin_right = 10.0 content_margin_bottom = 4.0 -bg_color = Color(0.1, 0.1, 0.1, 1) +bg_color = Color(0.0392157, 0.0117647, 0.145098, 1) border_width_top = 2 +border_color = Color(0.890196, 0.8, 1, 1) corner_detail = 1 [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_gxcar"] @@ -65,9 +143,7 @@ content_margin_left = 10.0 content_margin_top = 4.0 content_margin_right = 10.0 content_margin_bottom = 4.0 -bg_color = Color(0, 0, 0, 0.8) -border_width_left = 1 -border_width_right = 1 +bg_color = Color(0.039, 0.012, 0.149, 0.75) border_color = Color(0.175, 0.175, 0.175, 1) corner_detail = 1 @@ -91,5 +167,13 @@ Button/styles/hover = SubResource("StyleBoxTexture_crcjn") Button/styles/hover_pressed = SubResource("StyleBoxTexture_gxcar") Button/styles/normal = SubResource("StyleBoxTexture_a6bcw") Button/styles/pressed = SubResource("StyleBoxTexture_3eh60") +CheckBox/styles/focus = SubResource("StyleBoxTexture_fcxv1") +HSlider/styles/grabber_area = SubResource("StyleBoxFlat_o3ngu") +HSlider/styles/grabber_area_highlight = SubResource("StyleBoxFlat_x6kye") +HSlider/styles/slider = SubResource("StyleBoxFlat_gstb8") +PopupMenu/styles/hover = SubResource("StyleBoxFlat_a72e7") +PopupMenu/styles/panel = SubResource("StyleBoxTexture_o3ngu") +TabContainer/styles/tab_focus = SubResource("StyleBoxTexture_a72e7") +TabContainer/styles/tab_hovered = SubResource("StyleBoxFlat_fcxv1") TabContainer/styles/tab_selected = SubResource("StyleBoxFlat_crcjn") TabContainer/styles/tab_unselected = SubResource("StyleBoxFlat_gxcar") diff --git a/Scenes/UI/Inventory.tscn b/Scenes/UI/Inventory.tscn index 7fa6e6ab..c7d67602 100644 --- a/Scenes/UI/Inventory.tscn +++ b/Scenes/UI/Inventory.tscn @@ -1,10 +1,13 @@ -[gd_scene load_steps=6 format=3 uid="uid://be6fb2sr5i515"] +[gd_scene load_steps=9 format=3 uid="uid://be6fb2sr5i515"] [ext_resource type="Script" uid="uid://kqa0ovjph1hd" path="res://Scenes/UI/Scripts/Inventory.cs" id="1_8rcwd"] [ext_resource type="Texture2D" uid="uid://ck16vyh1q68ri" path="res://Scenes/UI/Assets/UI_ForestBackground.png" id="2_s6pj7"] +[ext_resource type="Theme" uid="uid://d37e3tpsbxwak" path="res://Scenes/UI/Assets/GeneralTheme.tres" id="3_e51wb"] [ext_resource type="Texture2D" uid="uid://8u3xvcma81d" path="res://Scenes/UI/Assets/UI_CrystalFrame.png" id="3_s6pj7"] [ext_resource type="Texture2D" uid="uid://burj10os057fx" path="res://Scenes/UI/Assets/UI_CrystalFrameInset.png" id="4_b6trj"] +[ext_resource type="PackedScene" uid="uid://cymo26khpw4m1" path="res://Scenes/UI/DisplayButton.tscn" id="5_fv6l5"] [ext_resource type="Texture2D" uid="uid://dyt1cvag13aik" path="res://SharedAssets/Money.png" id="5_si1x5"] +[ext_resource type="Texture2D" uid="uid://bqng2uofbio1x" path="res://Classes/Notes/Assets/Note_GWS.png" id="6_0txfk"] [node name="Inventory" type="Control" node_paths=PackedStringArray("_relics", "_notes", "_description", "_tabs", "_moneyLabel")] process_mode = 1 @@ -53,6 +56,7 @@ layout_mode = 2 [node name="Tabs" type="TabContainer" parent="MarginContainer/InvenVBox"] layout_mode = 2 size_flags_vertical = 3 +theme = ExtResource("3_e51wb") current_tab = 0 clip_tabs = false @@ -91,6 +95,11 @@ layout_mode = 2 size_flags_vertical = 4 columns = 10 +[node name="DisplayButton" parent="MarginContainer/InvenVBox/Tabs/INVENTORY_TAB_NOTES/SelectionBG/MarginContainer/NotesBox/NotesGrid" instance=ExtResource("5_fv6l5")] +layout_mode = 2 +theme_type_variation = &"FlatButton" +icon = ExtResource("6_0txfk") + [node name="INVENTORY_TAB_RELICS" type="MarginContainer" parent="MarginContainer/InvenVBox/Tabs"] visible = false layout_mode = 2 diff --git a/Scenes/UI/Options/OptionsMenu.tscn b/Scenes/UI/Options/OptionsMenu.tscn index 7ae34a3c..f883c248 100644 --- a/Scenes/UI/Options/OptionsMenu.tscn +++ b/Scenes/UI/Options/OptionsMenu.tscn @@ -106,6 +106,7 @@ horizontal_alignment = 1 [node name="Volume" type="HSlider" parent="Control/CenterContainer/MarginContainer/MarginContainer/VBoxContainer/Container"] layout_mode = 2 tooltip_text = "OPTIONS_VOLUME_LABEL" +theme = ExtResource("4_r616m") max_value = 1.0 step = 0.01 value = 1.0 From fcf2fb98f41ade4a1a729344b5591747c5c3be93 Mon Sep 17 00:00:00 2001 From: LifeHckr Date: Fri, 23 May 2025 18:29:42 -0700 Subject: [PATCH 10/14] Inventory Buttons are less clickable Attempt to avoid confusion thinking inventory items are useable --- Scenes/UI/Assets/DisplayButtonTheme.tres | 54 +++++++++++++++++++++++- Scenes/UI/Inventory.tscn | 9 +--- Scenes/UI/Scripts/Inventory.cs | 1 + 3 files changed, 55 insertions(+), 9 deletions(-) diff --git a/Scenes/UI/Assets/DisplayButtonTheme.tres b/Scenes/UI/Assets/DisplayButtonTheme.tres index 723e48bd..2d54291a 100644 --- a/Scenes/UI/Assets/DisplayButtonTheme.tres +++ b/Scenes/UI/Assets/DisplayButtonTheme.tres @@ -1,4 +1,4 @@ -[gd_resource type="Theme" load_steps=9 format=3 uid="uid://ckecvh3spna35"] +[gd_resource type="Theme" load_steps=15 format=3 uid="uid://ckecvh3spna35"] [ext_resource type="Texture2D" uid="uid://cegasble5d7uw" path="res://Scenes/UI/Assets/UI_Selection.png" id="1_2cv7a"] [ext_resource type="Texture2D" uid="uid://burj10os057fx" path="res://Scenes/UI/Assets/UI_CrystalFrameInset.png" id="1_cx0nq"] @@ -49,6 +49,51 @@ texture_margin_right = 6.0 texture_margin_bottom = 6.0 modulate_color = Color(2, 2, 2, 0.8) +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_m0rnd"] +texture = ExtResource("1_cx0nq") +texture_margin_left = 6.0 +texture_margin_top = 6.0 +texture_margin_right = 6.0 +texture_margin_bottom = 6.0 +modulate_color = Color(1, 1, 1, 0.8) + +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_juphm"] +texture = ExtResource("1_2cv7a") +texture_margin_left = 20.0 +texture_margin_top = 20.0 +texture_margin_right = 20.0 +texture_margin_bottom = 20.0 + +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_nysmq"] +texture = ExtResource("1_cx0nq") +texture_margin_left = 6.0 +texture_margin_top = 6.0 +texture_margin_right = 6.0 +texture_margin_bottom = 6.0 + +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_p2uoo"] +texture = ExtResource("1_cx0nq") +texture_margin_left = 6.0 +texture_margin_top = 6.0 +texture_margin_right = 6.0 +texture_margin_bottom = 6.0 + +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_5a8h5"] +texture = ExtResource("1_cx0nq") +texture_margin_left = 6.0 +texture_margin_top = 6.0 +texture_margin_right = 6.0 +texture_margin_bottom = 6.0 +modulate_color = Color(1, 1, 1, 0.8) + +[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_bo0wt"] +texture = ExtResource("1_cx0nq") +texture_margin_left = 6.0 +texture_margin_top = 6.0 +texture_margin_right = 6.0 +texture_margin_bottom = 6.0 +modulate_color = Color(1, 1, 1, 0.8) + [resource] Button/styles/disabled = SubResource("StyleBoxTexture_7041q") Button/styles/focus = SubResource("StyleBoxTexture_2t3ig") @@ -56,3 +101,10 @@ Button/styles/hover = SubResource("StyleBoxTexture_qs7pc") Button/styles/hover_pressed = SubResource("StyleBoxTexture_yqny2") Button/styles/normal = SubResource("StyleBoxTexture_2cv7a") Button/styles/pressed = SubResource("StyleBoxTexture_5plxl") +nopress/base_type = &"Button" +nopress/styles/disabled = SubResource("StyleBoxTexture_m0rnd") +nopress/styles/focus = SubResource("StyleBoxTexture_juphm") +nopress/styles/hover = SubResource("StyleBoxTexture_nysmq") +nopress/styles/hover_pressed = SubResource("StyleBoxTexture_p2uoo") +nopress/styles/normal = SubResource("StyleBoxTexture_5a8h5") +nopress/styles/pressed = SubResource("StyleBoxTexture_bo0wt") diff --git a/Scenes/UI/Inventory.tscn b/Scenes/UI/Inventory.tscn index c7d67602..123d27ab 100644 --- a/Scenes/UI/Inventory.tscn +++ b/Scenes/UI/Inventory.tscn @@ -1,13 +1,11 @@ -[gd_scene load_steps=9 format=3 uid="uid://be6fb2sr5i515"] +[gd_scene load_steps=7 format=3 uid="uid://be6fb2sr5i515"] [ext_resource type="Script" uid="uid://kqa0ovjph1hd" path="res://Scenes/UI/Scripts/Inventory.cs" id="1_8rcwd"] [ext_resource type="Texture2D" uid="uid://ck16vyh1q68ri" path="res://Scenes/UI/Assets/UI_ForestBackground.png" id="2_s6pj7"] [ext_resource type="Theme" uid="uid://d37e3tpsbxwak" path="res://Scenes/UI/Assets/GeneralTheme.tres" id="3_e51wb"] [ext_resource type="Texture2D" uid="uid://8u3xvcma81d" path="res://Scenes/UI/Assets/UI_CrystalFrame.png" id="3_s6pj7"] [ext_resource type="Texture2D" uid="uid://burj10os057fx" path="res://Scenes/UI/Assets/UI_CrystalFrameInset.png" id="4_b6trj"] -[ext_resource type="PackedScene" uid="uid://cymo26khpw4m1" path="res://Scenes/UI/DisplayButton.tscn" id="5_fv6l5"] [ext_resource type="Texture2D" uid="uid://dyt1cvag13aik" path="res://SharedAssets/Money.png" id="5_si1x5"] -[ext_resource type="Texture2D" uid="uid://bqng2uofbio1x" path="res://Classes/Notes/Assets/Note_GWS.png" id="6_0txfk"] [node name="Inventory" type="Control" node_paths=PackedStringArray("_relics", "_notes", "_description", "_tabs", "_moneyLabel")] process_mode = 1 @@ -95,11 +93,6 @@ layout_mode = 2 size_flags_vertical = 4 columns = 10 -[node name="DisplayButton" parent="MarginContainer/InvenVBox/Tabs/INVENTORY_TAB_NOTES/SelectionBG/MarginContainer/NotesBox/NotesGrid" instance=ExtResource("5_fv6l5")] -layout_mode = 2 -theme_type_variation = &"FlatButton" -icon = ExtResource("6_0txfk") - [node name="INVENTORY_TAB_RELICS" type="MarginContainer" parent="MarginContainer/InvenVBox/Tabs"] visible = false layout_mode = 2 diff --git a/Scenes/UI/Scripts/Inventory.cs b/Scenes/UI/Scripts/Inventory.cs index 71dd4d93..e28979a8 100644 --- a/Scenes/UI/Scripts/Inventory.cs +++ b/Scenes/UI/Scripts/Inventory.cs @@ -40,6 +40,7 @@ private void AddDisplayButtons(IDisplayable[] displayables, Node parentNode) var newButton = GD.Load(DisplayButton.LoadPath) .Instantiate(); newButton.Display(item.Texture, item.Name, true); + newButton.ThemeTypeVariation = "nopress"; newButton.Pressed += () => { DoDescription(newButton); From 31904a94c7ce46da5d987a19ed564e8d2a338777 Mon Sep 17 00:00:00 2001 From: LifeHckr Date: Sat, 24 May 2025 19:55:54 -0700 Subject: [PATCH 11/14] Improve Selection Screen Add translations Added labels Added a simply calculated difficulty --- Audio/songMaps/KeythuluSong.tres | 8 ++--- Globals/Translations/Translations.csv | 12 ++++++- Scenes/CustomSong/CustomSelection.tscn | 1 - Scenes/CustomSong/Scripts/CustomSelection.cs | 35 +++++++++++++++++++- Scenes/UI/TitleScreen/TitleScreen.tscn | 2 +- 5 files changed, 50 insertions(+), 8 deletions(-) diff --git a/Audio/songMaps/KeythuluSong.tres b/Audio/songMaps/KeythuluSong.tres index e73261f0..4e4f2257 100644 --- a/Audio/songMaps/KeythuluSong.tres +++ b/Audio/songMaps/KeythuluSong.tres @@ -209,7 +209,7 @@ Bpm = 170 NumLoops = 9 SongSpeed = -1.0 SongMapLocation = "KeythuluSong.ogg" -UpLaneData = [SubResource("Resource_vkfw6"), SubResource("Resource_5vawl"), SubResource("Resource_wqml3"), SubResource("Resource_knus5"), SubResource("Resource_iyhat"), SubResource("Resource_e231o"), SubResource("Resource_u1ybv"), SubResource("Resource_s63u8"), SubResource("Resource_rwedv")] -DownLaneData = [SubResource("Resource_ljr32"), SubResource("Resource_bb3yp"), SubResource("Resource_852ml"), SubResource("Resource_38nu8"), SubResource("Resource_3eydr"), SubResource("Resource_ct6sp"), SubResource("Resource_yk705"), SubResource("Resource_uswjw"), SubResource("Resource_e1hbr"), SubResource("Resource_8ueh4")] -LeftLaneData = [SubResource("Resource_gryrv"), SubResource("Resource_kwtfb"), SubResource("Resource_c2bxv"), SubResource("Resource_7lpnw"), SubResource("Resource_50tbs"), SubResource("Resource_ttd2q"), SubResource("Resource_nnlde"), SubResource("Resource_lrc4j"), SubResource("Resource_83big"), SubResource("Resource_oocdv")] -RightLaneData = [SubResource("Resource_lfmd3"), SubResource("Resource_x1ijp"), SubResource("Resource_6jgy8"), SubResource("Resource_oxq2d"), SubResource("Resource_3102k"), SubResource("Resource_j4fdm"), SubResource("Resource_5raac"), SubResource("Resource_c27cp"), SubResource("Resource_pfqra"), SubResource("Resource_2nxl5"), SubResource("Resource_67x67")] +UpLaneData = Array[ExtResource("1_8ueh4")]([SubResource("Resource_vkfw6"), SubResource("Resource_5vawl"), SubResource("Resource_wqml3"), SubResource("Resource_knus5"), SubResource("Resource_iyhat"), SubResource("Resource_e231o"), SubResource("Resource_u1ybv"), SubResource("Resource_s63u8"), SubResource("Resource_rwedv")]) +DownLaneData = Array[ExtResource("1_8ueh4")]([SubResource("Resource_ljr32"), SubResource("Resource_bb3yp"), SubResource("Resource_852ml"), SubResource("Resource_38nu8"), SubResource("Resource_3eydr"), SubResource("Resource_ct6sp"), SubResource("Resource_yk705"), SubResource("Resource_uswjw"), SubResource("Resource_e1hbr"), SubResource("Resource_8ueh4")]) +LeftLaneData = Array[ExtResource("1_8ueh4")]([SubResource("Resource_gryrv"), SubResource("Resource_kwtfb"), SubResource("Resource_c2bxv"), SubResource("Resource_7lpnw"), SubResource("Resource_50tbs"), SubResource("Resource_ttd2q"), SubResource("Resource_nnlde"), SubResource("Resource_lrc4j"), SubResource("Resource_83big"), SubResource("Resource_oocdv")]) +RightLaneData = Array[ExtResource("1_8ueh4")]([SubResource("Resource_lfmd3"), SubResource("Resource_x1ijp"), SubResource("Resource_6jgy8"), SubResource("Resource_oxq2d"), SubResource("Resource_3102k"), SubResource("Resource_j4fdm"), SubResource("Resource_5raac"), SubResource("Resource_c27cp"), SubResource("Resource_pfqra"), SubResource("Resource_2nxl5"), SubResource("Resource_67x67")]) diff --git a/Globals/Translations/Translations.csv b/Globals/Translations/Translations.csv index b6923eea..f8cd8e54 100644 --- a/Globals/Translations/Translations.csv +++ b/Globals/Translations/Translations.csv @@ -163,4 +163,14 @@ EVENT_EVENT3_OPTION2,Increase bar charge rate.,提高能量条充能速度 EVENT_EVENT3_OPTION3,Purchase 2 heal notes (30g),购买2个治疗音符 (30硬币) EVENT_EVENT3_OUTCOME1,The medic patched you up.\nYou restored 10 Health.,医生为你包扎了伤口。\n你恢复了10点生命值。 EVENT_EVENT3_OUTCOME2,The medic gave you a shot of adrenaline.\nFreestyle bar fills 8% faster!,医生给你注射了一针肾上腺素。\n风格条充能速度提升8%! -EVENT_EVENT3_OUTCOME3,The medic sold you some healing supplies.\nAdded 2 heal notes to your inventory.,医生卖给你一些治疗用品。\n你的背包中增加了2个治疗音符。 \ No newline at end of file +EVENT_EVENT3_OUTCOME3,The medic sold you some healing supplies.\nAdded 2 heal notes to your inventory.,医生卖给你一些治疗用品。\n你的背包中增加了2个治疗音符。 +CUSTOM_DIFFICULTY,Difficulty: ,困难: +CUSTOM_SONG,Song: ,歌曲: +CUSTOM_BPM,BPM: ,BPM: +CUSTOM_LOOPS,Number of Loops: , 循环次数: +CUSTOM_SONG_SELECT,Custom Song,自定义歌曲 +CUSTOM_SONG_NOT_FOUND,Could not find song file!,(TODO) +CUSTOM_SONTEM_NOT_FOUND,Could not find .sontem file!,(TODO) +CUSTOM_NO_CHART_PATH,There was no chart file path!,(TODO) +CUSTOM_CHART_NOT_FOUND,Could not find chart files at path!,(TODO) +CUSTOM_COULD_NOT_READ,Invalid/broken sontem file!,(TODO) \ No newline at end of file diff --git a/Scenes/CustomSong/CustomSelection.tscn b/Scenes/CustomSong/CustomSelection.tscn index abd0a16b..270bb5b2 100644 --- a/Scenes/CustomSong/CustomSelection.tscn +++ b/Scenes/CustomSong/CustomSelection.tscn @@ -114,7 +114,6 @@ theme_override_constants/margin_bottom = 4 [node name="SongDetails" type="Label" parent="Control/Background/MarginContainer/HBoxContainer/MarginContainer/OptionsBackground/MarginContainer"] layout_mode = 2 size_flags_vertical = 1 -text = "Test" horizontal_alignment = 1 vertical_alignment = 1 diff --git a/Scenes/CustomSong/Scripts/CustomSelection.cs b/Scenes/CustomSong/Scripts/CustomSelection.cs index 7c647655..da7dc166 100644 --- a/Scenes/CustomSong/Scripts/CustomSelection.cs +++ b/Scenes/CustomSong/Scripts/CustomSelection.cs @@ -4,6 +4,7 @@ using FunkEngine; using FunkEngine.Classes.MidiMaestro; using Godot; +using FileAccess = Godot.FileAccess; public partial class CustomSelection : CanvasLayer, IFocusableMenu { @@ -63,11 +64,43 @@ public override void _Ready() }; continue; } + if (!FileAccess.FileExists(UserSongDir + song.Chart.SongMapLocation)) + { + newButton.Text = Tr("CUSTOM_SONG_NOT_FOUND"); + newButton.Disabled = true; + newButton.FocusEntered += () => + { + _songDescription.Text = UserSongDir + song.Chart.SongMapLocation; + }; + continue; + } + + float arbitraryDifficulty = 0; + arbitraryDifficulty += (float)song.Chart.Bpm / 120; + arbitraryDifficulty += (float)song.Chart.GetLane(ArrowType.Up).Count / 10; + arbitraryDifficulty += (float)song.Chart.GetLane(ArrowType.Right).Count / 10; + arbitraryDifficulty += (float)song.Chart.GetLane(ArrowType.Left).Count / 10; + arbitraryDifficulty += (float)song.Chart.GetLane(ArrowType.Down).Count / 10; + arbitraryDifficulty = (float)Math.Floor(arbitraryDifficulty); + newButton.Text = song.Name; newButton.FocusEntered += () => { _songDescription.Text = - song.Name + "\n" + song.Chart.Bpm + "\n" + song.Chart.NumLoops; + song.Name + + "\n \n" + + Tr("CUSTOM_SONG") + + song.Chart.SongMapLocation + + "\n" + + Tr("CUSTOM_BPM") + + song.Chart.Bpm + + "\n" + + Tr("CUSTOM_LOOPS") + + song.Chart.NumLoops + + "\n" + + Tr("CUSTOM_DIFFICULTY") + + new string('\u2605', (int)arbitraryDifficulty); + _selectedSong = song; }; newButton.Pressed += StartCustomSelection; diff --git a/Scenes/UI/TitleScreen/TitleScreen.tscn b/Scenes/UI/TitleScreen/TitleScreen.tscn index cfc58e30..a7092d37 100644 --- a/Scenes/UI/TitleScreen/TitleScreen.tscn +++ b/Scenes/UI/TitleScreen/TitleScreen.tscn @@ -231,4 +231,4 @@ offset_top = 1.0 offset_right = 113.0 offset_bottom = 40.0 theme = ExtResource("13_v0au1") -text = "CUSTOM_SONG" +text = "CUSTOM_SONG_SELECT" From 044ada803d157e410e72eda7da32a993a921f464 Mon Sep 17 00:00:00 2001 From: LifeHckr Date: Sat, 24 May 2025 20:43:51 -0700 Subject: [PATCH 12/14] Added Custom Song Results Screen --- Globals/Translations/Translations.csv | 9 +- .../BattleDirector/Scripts/BattleDirector.cs | 13 +- Scenes/CustomSong/CustomScore.cs | 89 ++++++++ Scenes/CustomSong/CustomScore.cs.uid | 1 + Scenes/CustomSong/CustomScoreScreen.tscn | 207 ++++++++++++++++++ Scenes/UI/TitleScreen/Scripts/TitleScreen.cs | 24 +- 6 files changed, 336 insertions(+), 7 deletions(-) create mode 100644 Scenes/CustomSong/CustomScore.cs create mode 100644 Scenes/CustomSong/CustomScore.cs.uid create mode 100644 Scenes/CustomSong/CustomScoreScreen.tscn diff --git a/Globals/Translations/Translations.csv b/Globals/Translations/Translations.csv index f8cd8e54..42eef59b 100644 --- a/Globals/Translations/Translations.csv +++ b/Globals/Translations/Translations.csv @@ -173,4 +173,11 @@ CUSTOM_SONG_NOT_FOUND,Could not find song file!,(TODO) CUSTOM_SONTEM_NOT_FOUND,Could not find .sontem file!,(TODO) CUSTOM_NO_CHART_PATH,There was no chart file path!,(TODO) CUSTOM_CHART_NOT_FOUND,Could not find chart files at path!,(TODO) -CUSTOM_COULD_NOT_READ,Invalid/broken sontem file!,(TODO) \ No newline at end of file +CUSTOM_COULD_NOT_READ,Invalid/broken sontem file!,(TODO) +CUSTOM_RESULTS,Results,(TODO) +CUSTOM_PLAYER_HP,HP Remaining: ,(TODO) +CUSTOM_ENEMY_HP,Enemy HP Remaining: ,(TODO) +CUSTOM_NOTES_PLACED,Notes Placed: ,(TODO) +CUSTOM_PERFECTS,Perfect Hits: ,(TODO) +CUSTOM_MISSES,Missed Notes: ,(TODO) +CUSTOM_LOOPS_TAKEN,Loops Taken: ,(TODO) \ No newline at end of file diff --git a/Scenes/BattleDirector/Scripts/BattleDirector.cs b/Scenes/BattleDirector/Scripts/BattleDirector.cs index c4dbba6a..f4ec3395 100644 --- a/Scenes/BattleDirector/Scripts/BattleDirector.cs +++ b/Scenes/BattleDirector/Scripts/BattleDirector.cs @@ -118,6 +118,11 @@ public override void _Ready() }; Harbinger.Instance.InvokeBattleStarted(); + if (StageProducer.Config.RoomType != Stages.Custom) + return; + _customSongResultsScene = GD.Load(CustomScore.LoadPath) + .Instantiate(); + _customSongResultsScene.ListenToDirector(); } public ScoringScreen.ScoreGuide BattleScore; @@ -331,7 +336,8 @@ private void OnBattleWon() { if (StageProducer.Config.RoomType == Stages.Custom) { - TransitionOutOfCustom(); + _customSongResultsScene.ShowResults(this, (float)_enemies[0].GetCurrentHealth() / 500); + _customSongResultsScene.Finished += TransitionOutOfCustom; return; } Harbinger.Instance.InvokeBattleEnded(); @@ -348,7 +354,8 @@ private void OnBattleLost() { if (StageProducer.Config.RoomType == Stages.Custom) { - TransitionOutOfCustom(); + _customSongResultsScene.ShowResults(this, (float)_enemies[0].GetCurrentHealth() / 500); + _customSongResultsScene.Finished += TransitionOutOfCustom; return; } Audio.StreamPaused = true; @@ -369,6 +376,8 @@ private void ShowRewardSelection(int amount) rewardSelect.Selected += TransitionOutOfBattle; } + private CustomScore _customSongResultsScene; + private void TransitionOutOfCustom() { BgAudioPlayer.LiveInstance.PlayLevelMusic(); diff --git a/Scenes/CustomSong/CustomScore.cs b/Scenes/CustomSong/CustomScore.cs new file mode 100644 index 00000000..83a1c8af --- /dev/null +++ b/Scenes/CustomSong/CustomScore.cs @@ -0,0 +1,89 @@ +using System; +using System.Globalization; +using FunkEngine; +using Godot; + +public partial class CustomScore : CanvasLayer +{ + public const string LoadPath = "res://Scenes/CustomSong/CustomScoreScreen.tscn"; + + private enum ScoringVals + { + PlayerHP = 0, + EnemyHP = 1, + NotesPlaced = 2, + Perfects = 3, + Misses = 4, + Loops = 5, + } + + private float[] score = new float[6]; + + [Export] + private Label[] _amtLabels = new Label[6]; + + [Export] + private Button _acceptButton; + + public delegate void FinishedHandler(); + public event FinishedHandler Finished; + + public void ListenToDirector() + { + BattleDirector.Harbinger.Instance.NoteHit += e => + { + if (e is not BattleDirector.Harbinger.NoteHitArgs nArgs) + return; + switch (nArgs.Timing) + { + case Timing.Perfect: + score[(int)ScoringVals.Perfects] += 1; + break; + case Timing.Miss: + score[(int)ScoringVals.Misses] += 1; + break; + } + }; + BattleDirector.Harbinger.Instance.NotePlaced += _ => + { + score[(int)ScoringVals.NotesPlaced] += 1; + }; + } + + public CustomScore ShowResults(BattleDirector battleDirector, float enemyPercent) + { + score[(int)ScoringVals.Loops] = TimeKeeper.LastBeat.Loop; + score[(int)ScoringVals.PlayerHP] = + (float)battleDirector.Player.GetCurrentHealth() + / StageProducer.PlayerStats.MaxHealth + * 100; + score[(int)ScoringVals.EnemyHP] = enemyPercent * 100; + + for (int i = 0; i < 6; i++) + { + _amtLabels[i].Text = score[i].ToString("0"); + if (i == (int)ScoringVals.PlayerHP || i == (int)ScoringVals.EnemyHP) + _amtLabels[i].Text += "%"; + } + battleDirector.AddChild(this); + battleDirector.ProcessMode = ProcessModeEnum.Disabled; + + return this; + } + + public override void _Ready() + { + _acceptButton.Pressed += FinishScoring; + } + + public override void _Process(double delta) + { + _acceptButton.GrabFocus(); + } + + private void FinishScoring() + { + Finished?.Invoke(); + QueueFree(); + } +} diff --git a/Scenes/CustomSong/CustomScore.cs.uid b/Scenes/CustomSong/CustomScore.cs.uid new file mode 100644 index 00000000..0253254f --- /dev/null +++ b/Scenes/CustomSong/CustomScore.cs.uid @@ -0,0 +1 @@ +uid://d2wb4jlf3iphf diff --git a/Scenes/CustomSong/CustomScoreScreen.tscn b/Scenes/CustomSong/CustomScoreScreen.tscn new file mode 100644 index 00000000..c653cf9d --- /dev/null +++ b/Scenes/CustomSong/CustomScoreScreen.tscn @@ -0,0 +1,207 @@ +[gd_scene load_steps=6 format=3 uid="uid://de8eb06i6ftr"] + +[ext_resource type="Script" uid="uid://d2wb4jlf3iphf" path="res://Scenes/CustomSong/CustomScore.cs" id="1_qqyeb"] +[ext_resource type="Texture2D" uid="uid://ck16vyh1q68ri" path="res://Scenes/UI/Assets/UI_ForestBackground.png" id="2_f5eg8"] +[ext_resource type="Texture2D" uid="uid://8u3xvcma81d" path="res://Scenes/UI/Assets/UI_CrystalFrame.png" id="3_5fo4y"] +[ext_resource type="Texture2D" uid="uid://burj10os057fx" path="res://Scenes/UI/Assets/UI_CrystalFrameInset.png" id="4_pghd5"] +[ext_resource type="Theme" uid="uid://d37e3tpsbxwak" path="res://Scenes/UI/Assets/GeneralTheme.tres" id="6_ql2an"] + +[node name="ScoreScreen" type="CanvasLayer" node_paths=PackedStringArray("_amtLabels", "_acceptButton")] +process_mode = 3 +script = ExtResource("1_qqyeb") +_amtLabels = [NodePath("Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/ScoreMargin/LabelVbox/PlayerHPPercent"), NodePath("Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/ScoreMargin/LabelVbox/EnemyHPPercent"), NodePath("Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/ScoreMargin/LabelVbox/NotesPlacedAmt"), NodePath("Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/ScoreMargin/LabelVbox/PerfectAmt"), NodePath("Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/ScoreMargin/LabelVbox/MissedAmt"), NodePath("Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/ScoreMargin/LabelVbox/LoopsAmt")] +_acceptButton = NodePath("Bg/WindowMargin/PanelBg/VBoxContainer/ButtonMargin/AcceptButton") + +[node name="Bg" type="NinePatchRect" parent="."] +self_modulate = Color(1, 1, 1, 0.75) +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("2_f5eg8") +patch_margin_left = 100 +patch_margin_top = 100 +patch_margin_right = 102 +patch_margin_bottom = 100 + +[node name="WindowMargin" type="MarginContainer" parent="Bg"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/margin_left = 175 +theme_override_constants/margin_top = 50 +theme_override_constants/margin_right = 175 +theme_override_constants/margin_bottom = 50 + +[node name="PanelBg" type="NinePatchRect" parent="Bg/WindowMargin"] +self_modulate = Color(1, 1, 1, 0.75) +layout_mode = 2 +texture = ExtResource("3_5fo4y") +patch_margin_left = 30 +patch_margin_top = 10 +patch_margin_right = 20 +patch_margin_bottom = 27 + +[node name="VBoxContainer" type="VBoxContainer" parent="Bg/WindowMargin/PanelBg"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="TopPanelBg" type="NinePatchRect" parent="Bg/WindowMargin/PanelBg/VBoxContainer"] +self_modulate = Color(1, 1, 1, 0.5) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +size_flags_stretch_ratio = 0.25 +texture = ExtResource("3_5fo4y") +patch_margin_left = 30 +patch_margin_top = 10 +patch_margin_right = 20 +patch_margin_bottom = 27 + +[node name="Title" type="CenterContainer" parent="Bg/WindowMargin/PanelBg/VBoxContainer/TopPanelBg"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="TitleText" type="RichTextLabel" parent="Bg/WindowMargin/PanelBg/VBoxContainer/TopPanelBg/Title"] +custom_minimum_size = Vector2(400, 47) +layout_mode = 2 +theme_override_font_sizes/normal_font_size = 32 +bbcode_enabled = true +text = "CUSTOM_RESULTS" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="MarginContainer" type="MarginContainer" parent="Bg/WindowMargin/PanelBg/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_constants/margin_left = 4 +theme_override_constants/margin_top = 0 +theme_override_constants/margin_right = 4 +theme_override_constants/margin_bottom = 4 + +[node name="BottomPanelBg" type="NinePatchRect" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer"] +self_modulate = Color(1, 1, 1, 0.5) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +texture = ExtResource("4_pghd5") +patch_margin_left = 30 +patch_margin_top = 10 +patch_margin_right = 20 +patch_margin_bottom = 27 + +[node name="HBoxContainer" type="HBoxContainer" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_vertical = 3 + +[node name="LabelMargin" type="MarginContainer" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_constants/margin_left = 8 +theme_override_constants/margin_top = 8 +theme_override_constants/margin_right = 8 +theme_override_constants/margin_bottom = 8 + +[node name="LabelVbox" type="VBoxContainer" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/LabelMargin"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_constants/separation = 11 +alignment = 1 + +[node name="PlayerHP" type="Label" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/LabelMargin/LabelVbox"] +layout_mode = 2 +text = "CUSTOM_PLAYER_HP" + +[node name="EnemyHP" type="Label" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/LabelMargin/LabelVbox"] +layout_mode = 2 +text = "CUSTOM_ENEMY_HP" + +[node name="NotesPlaced" type="Label" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/LabelMargin/LabelVbox"] +layout_mode = 2 +text = "CUSTOM_NOTES_PLACED" + +[node name="Perfects" type="Label" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/LabelMargin/LabelVbox"] +layout_mode = 2 +text = "CUSTOM_PERFECTS" + +[node name="Misses" type="Label" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/LabelMargin/LabelVbox"] +layout_mode = 2 +text = "CUSTOM_MISSES" + +[node name="LoopsTake" type="Label" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/LabelMargin/LabelVbox"] +layout_mode = 2 +text = "CUSTOM_LOOPS_TAKEN" + +[node name="ScoreMargin" type="MarginContainer" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_stretch_ratio = 0.25 +theme_override_constants/margin_left = 8 +theme_override_constants/margin_top = 8 +theme_override_constants/margin_right = 8 +theme_override_constants/margin_bottom = 8 + +[node name="LabelVbox" type="VBoxContainer" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/ScoreMargin"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_constants/separation = 11 +alignment = 1 + +[node name="PlayerHPPercent" type="Label" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/ScoreMargin/LabelVbox"] +layout_mode = 2 +text = "999" +horizontal_alignment = 2 + +[node name="EnemyHPPercent" type="Label" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/ScoreMargin/LabelVbox"] +layout_mode = 2 +text = "999" +horizontal_alignment = 2 + +[node name="NotesPlacedAmt" type="Label" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/ScoreMargin/LabelVbox"] +layout_mode = 2 +text = "999" +horizontal_alignment = 2 + +[node name="PerfectAmt" type="Label" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/ScoreMargin/LabelVbox"] +layout_mode = 2 +text = "999" +horizontal_alignment = 2 + +[node name="MissedAmt" type="Label" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/ScoreMargin/LabelVbox"] +layout_mode = 2 +text = "999" +horizontal_alignment = 2 + +[node name="LoopsAmt" type="Label" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/ScoreMargin/LabelVbox"] +layout_mode = 2 +size_flags_horizontal = 10 +text = "999" +horizontal_alignment = 2 + +[node name="ButtonMargin" type="MarginContainer" parent="Bg/WindowMargin/PanelBg/VBoxContainer"] +layout_mode = 2 +theme_override_constants/margin_top = -3 +theme_override_constants/margin_bottom = 9 + +[node name="AcceptButton" type="Button" parent="Bg/WindowMargin/PanelBg/VBoxContainer/ButtonMargin"] +layout_mode = 2 +size_flags_horizontal = 6 +theme = ExtResource("6_ql2an") +text = "ESCAPE_MENU_TITLE" diff --git a/Scenes/UI/TitleScreen/Scripts/TitleScreen.cs b/Scenes/UI/TitleScreen/Scripts/TitleScreen.cs index 9966a0e6..50f6c12d 100644 --- a/Scenes/UI/TitleScreen/Scripts/TitleScreen.cs +++ b/Scenes/UI/TitleScreen/Scripts/TitleScreen.cs @@ -1,3 +1,4 @@ +using System.Threading.Tasks; using FunkEngine; using Godot; @@ -95,13 +96,28 @@ private void OpenCustomSelection() customMenu.OpenMenu(this); } + private bool taskStarted = false; + private void InitEffects() { - if (_effectsPlaceholder is not InstancePlaceholder placeholder) + if (taskStarted || _effectsPlaceholder is not InstancePlaceholder placeholder) return; - _effectsRoot = placeholder.CreateInstance(true, GD.Load(EffectsLoadPath)); - TextLight = _effectsRoot.GetNode("TextLight"); - TweenLight(); + + taskStarted = true; + Task.Run(() => //Will need to monitor to make sure this is safe + { + Callable + .From(() => + { + _effectsRoot = placeholder.CreateInstance( + true, + GD.Load(EffectsLoadPath) + ); + TextLight = _effectsRoot.GetNode("TextLight"); + TweenLight(); + }) + .CallDeferred(); + }); } private void TweenLight() From 2ad038109cc6b39f462bdf77c8b2b3b4b955150a Mon Sep 17 00:00:00 2001 From: LifeHckr Date: Sat, 24 May 2025 20:50:03 -0700 Subject: [PATCH 13/14] Added Translations --- Globals/Translations/Translations.csv | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Globals/Translations/Translations.csv b/Globals/Translations/Translations.csv index 42eef59b..48b4b286 100644 --- a/Globals/Translations/Translations.csv +++ b/Globals/Translations/Translations.csv @@ -169,15 +169,15 @@ CUSTOM_SONG,Song: ,歌曲: CUSTOM_BPM,BPM: ,BPM: CUSTOM_LOOPS,Number of Loops: , 循环次数: CUSTOM_SONG_SELECT,Custom Song,自定义歌曲 -CUSTOM_SONG_NOT_FOUND,Could not find song file!,(TODO) -CUSTOM_SONTEM_NOT_FOUND,Could not find .sontem file!,(TODO) -CUSTOM_NO_CHART_PATH,There was no chart file path!,(TODO) -CUSTOM_CHART_NOT_FOUND,Could not find chart files at path!,(TODO) -CUSTOM_COULD_NOT_READ,Invalid/broken sontem file!,(TODO) -CUSTOM_RESULTS,Results,(TODO) -CUSTOM_PLAYER_HP,HP Remaining: ,(TODO) -CUSTOM_ENEMY_HP,Enemy HP Remaining: ,(TODO) -CUSTOM_NOTES_PLACED,Notes Placed: ,(TODO) -CUSTOM_PERFECTS,Perfect Hits: ,(TODO) -CUSTOM_MISSES,Missed Notes: ,(TODO) -CUSTOM_LOOPS_TAKEN,Loops Taken: ,(TODO) \ No newline at end of file +CUSTOM_SONG_NOT_FOUND,Could not find song file!,无法找到歌曲文件! +CUSTOM_SONTEM_NOT_FOUND,Could not find .sontem file!,无法找到 .sontem 文件! +CUSTOM_NO_CHART_PATH,There was no chart file path!,未提供谱面文件路径! +CUSTOM_CHART_NOT_FOUND,Could not find chart files at path!,无法在指定路径下找到谱面文件! +CUSTOM_COULD_NOT_READ,Invalid/broken sontem file!,无效或损坏的 .sontem 文件! +CUSTOM_RESULTS,Results,自定义歌曲结算 +CUSTOM_PLAYER_HP,HP Remaining: ,剩余HP: +CUSTOM_ENEMY_HP,Enemy HP Remaining: ,敌人剩余HP: +CUSTOM_NOTES_PLACED,Notes Placed: ,已放置音符: +CUSTOM_PERFECTS,Perfect Hits: ,Perfect 命中: +CUSTOM_MISSES,Missed Notes: ,失误音符: +CUSTOM_LOOPS_TAKEN,Loops Taken: ,循环次数: \ No newline at end of file From 1e835a0a9752a7eec647a3d5d8a6e23922834972 Mon Sep 17 00:00:00 2001 From: LifeHckr Date: Sat, 24 May 2025 21:01:52 -0700 Subject: [PATCH 14/14] Adjust and Fix Scoring Screens --- Scenes/CustomSong/CustomScoreScreen.tscn | 130 +++++++++++------------ Scenes/UI/ScoreScreen.tscn | 5 +- 2 files changed, 65 insertions(+), 70 deletions(-) diff --git a/Scenes/CustomSong/CustomScoreScreen.tscn b/Scenes/CustomSong/CustomScoreScreen.tscn index c653cf9d..39602b92 100644 --- a/Scenes/CustomSong/CustomScoreScreen.tscn +++ b/Scenes/CustomSong/CustomScoreScreen.tscn @@ -9,8 +9,8 @@ [node name="ScoreScreen" type="CanvasLayer" node_paths=PackedStringArray("_amtLabels", "_acceptButton")] process_mode = 3 script = ExtResource("1_qqyeb") -_amtLabels = [NodePath("Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/ScoreMargin/LabelVbox/PlayerHPPercent"), NodePath("Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/ScoreMargin/LabelVbox/EnemyHPPercent"), NodePath("Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/ScoreMargin/LabelVbox/NotesPlacedAmt"), NodePath("Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/ScoreMargin/LabelVbox/PerfectAmt"), NodePath("Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/ScoreMargin/LabelVbox/MissedAmt"), NodePath("Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/ScoreMargin/LabelVbox/LoopsAmt")] -_acceptButton = NodePath("Bg/WindowMargin/PanelBg/VBoxContainer/ButtonMargin/AcceptButton") +_amtLabels = [NodePath("Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox/HBoxContainer/PlayerHPPercent"), NodePath("Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox/HBoxContainer2/EnemyHPPercent"), NodePath("Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox/HBoxContainer3/NotesPlacedAmt"), NodePath("Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox/HBoxContainer4/PerfectAmt"), NodePath("Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox/HBoxContainer5/MissedAmt"), NodePath("Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox/HBoxContainer6/LoopsAmt")] +_acceptButton = NodePath("Bg/WindowMargin/VBoxContainer/ButtonMargin/AcceptButton") [node name="Bg" type="NinePatchRect" parent="."] self_modulate = Color(1, 1, 1, 0.75) @@ -46,16 +46,13 @@ patch_margin_top = 10 patch_margin_right = 20 patch_margin_bottom = 27 -[node name="VBoxContainer" type="VBoxContainer" parent="Bg/WindowMargin/PanelBg"] -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 +[node name="VBoxContainer" type="VBoxContainer" parent="Bg/WindowMargin"] +layout_mode = 2 + +[node name="TitleContainer" type="MarginContainer" parent="Bg/WindowMargin/VBoxContainer"] +layout_mode = 2 -[node name="TopPanelBg" type="NinePatchRect" parent="Bg/WindowMargin/PanelBg/VBoxContainer"] -self_modulate = Color(1, 1, 1, 0.5) +[node name="TopPanelBg" type="NinePatchRect" parent="Bg/WindowMargin/VBoxContainer/TitleContainer"] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 @@ -66,15 +63,10 @@ patch_margin_top = 10 patch_margin_right = 20 patch_margin_bottom = 27 -[node name="Title" type="CenterContainer" parent="Bg/WindowMargin/PanelBg/VBoxContainer/TopPanelBg"] -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 +[node name="Title" type="CenterContainer" parent="Bg/WindowMargin/VBoxContainer/TitleContainer"] +layout_mode = 2 -[node name="TitleText" type="RichTextLabel" parent="Bg/WindowMargin/PanelBg/VBoxContainer/TopPanelBg/Title"] +[node name="TitleText" type="RichTextLabel" parent="Bg/WindowMargin/VBoxContainer/TitleContainer/Title"] custom_minimum_size = Vector2(400, 47) layout_mode = 2 theme_override_font_sizes/normal_font_size = 32 @@ -83,16 +75,15 @@ text = "CUSTOM_RESULTS" horizontal_alignment = 1 vertical_alignment = 1 -[node name="MarginContainer" type="MarginContainer" parent="Bg/WindowMargin/PanelBg/VBoxContainer"] +[node name="MarginContainer" type="MarginContainer" parent="Bg/WindowMargin/VBoxContainer"] layout_mode = 2 size_flags_vertical = 3 -theme_override_constants/margin_left = 4 +theme_override_constants/margin_left = 6 theme_override_constants/margin_top = 0 -theme_override_constants/margin_right = 4 +theme_override_constants/margin_right = 6 theme_override_constants/margin_bottom = 4 -[node name="BottomPanelBg" type="NinePatchRect" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer"] -self_modulate = Color(1, 1, 1, 0.5) +[node name="BottomPanelBg" type="NinePatchRect" parent="Bg/WindowMargin/VBoxContainer/MarginContainer"] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 @@ -102,16 +93,11 @@ patch_margin_top = 10 patch_margin_right = 20 patch_margin_bottom = 27 -[node name="HBoxContainer" type="HBoxContainer" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg"] -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 +[node name="HBoxContainer" type="HBoxContainer" parent="Bg/WindowMargin/VBoxContainer/MarginContainer"] +layout_mode = 2 size_flags_vertical = 3 -[node name="LabelMargin" type="MarginContainer" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer"] +[node name="LabelMargin" type="MarginContainer" parent="Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer"] layout_mode = 2 size_flags_horizontal = 3 theme_override_constants/margin_left = 8 @@ -119,88 +105,96 @@ theme_override_constants/margin_top = 8 theme_override_constants/margin_right = 8 theme_override_constants/margin_bottom = 8 -[node name="LabelVbox" type="VBoxContainer" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/LabelMargin"] +[node name="LabelVbox" type="VBoxContainer" parent="Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin"] layout_mode = 2 size_flags_horizontal = 3 theme_override_constants/separation = 11 alignment = 1 -[node name="PlayerHP" type="Label" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/LabelMargin/LabelVbox"] +[node name="HBoxContainer" type="HBoxContainer" parent="Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox"] layout_mode = 2 -text = "CUSTOM_PLAYER_HP" -[node name="EnemyHP" type="Label" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/LabelMargin/LabelVbox"] +[node name="PlayerHP" type="Label" parent="Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox/HBoxContainer"] layout_mode = 2 -text = "CUSTOM_ENEMY_HP" +text = "CUSTOM_PLAYER_HP" -[node name="NotesPlaced" type="Label" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/LabelMargin/LabelVbox"] +[node name="PlayerHPPercent" type="Label" parent="Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox/HBoxContainer"] layout_mode = 2 -text = "CUSTOM_NOTES_PLACED" +size_flags_horizontal = 10 +text = "999" +horizontal_alignment = 2 -[node name="Perfects" type="Label" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/LabelMargin/LabelVbox"] +[node name="HBoxContainer2" type="HBoxContainer" parent="Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox"] layout_mode = 2 -text = "CUSTOM_PERFECTS" -[node name="Misses" type="Label" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/LabelMargin/LabelVbox"] +[node name="EnemyHP" type="Label" parent="Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox/HBoxContainer2"] layout_mode = 2 -text = "CUSTOM_MISSES" +text = "CUSTOM_ENEMY_HP" -[node name="LoopsTake" type="Label" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/LabelMargin/LabelVbox"] +[node name="EnemyHPPercent" type="Label" parent="Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox/HBoxContainer2"] layout_mode = 2 -text = "CUSTOM_LOOPS_TAKEN" +size_flags_horizontal = 10 +text = "999" +horizontal_alignment = 2 -[node name="ScoreMargin" type="MarginContainer" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer"] +[node name="HBoxContainer3" type="HBoxContainer" parent="Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox"] layout_mode = 2 -size_flags_horizontal = 3 -size_flags_stretch_ratio = 0.25 -theme_override_constants/margin_left = 8 -theme_override_constants/margin_top = 8 -theme_override_constants/margin_right = 8 -theme_override_constants/margin_bottom = 8 -[node name="LabelVbox" type="VBoxContainer" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/ScoreMargin"] +[node name="NotesPlaced" type="Label" parent="Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox/HBoxContainer3"] layout_mode = 2 -size_flags_horizontal = 3 -theme_override_constants/separation = 11 -alignment = 1 +text = "CUSTOM_NOTES_PLACED" -[node name="PlayerHPPercent" type="Label" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/ScoreMargin/LabelVbox"] +[node name="NotesPlacedAmt" type="Label" parent="Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox/HBoxContainer3"] layout_mode = 2 +size_flags_horizontal = 10 text = "999" horizontal_alignment = 2 -[node name="EnemyHPPercent" type="Label" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/ScoreMargin/LabelVbox"] +[node name="HBoxContainer4" type="HBoxContainer" parent="Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox"] layout_mode = 2 -text = "999" -horizontal_alignment = 2 -[node name="NotesPlacedAmt" type="Label" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/ScoreMargin/LabelVbox"] +[node name="Perfects" type="Label" parent="Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox/HBoxContainer4"] layout_mode = 2 -text = "999" -horizontal_alignment = 2 +text = "CUSTOM_PERFECTS" -[node name="PerfectAmt" type="Label" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/ScoreMargin/LabelVbox"] +[node name="PerfectAmt" type="Label" parent="Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox/HBoxContainer4"] layout_mode = 2 +size_flags_horizontal = 10 text = "999" horizontal_alignment = 2 -[node name="MissedAmt" type="Label" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/ScoreMargin/LabelVbox"] +[node name="HBoxContainer5" type="HBoxContainer" parent="Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox"] +layout_mode = 2 + +[node name="Misses" type="Label" parent="Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox/HBoxContainer5"] +layout_mode = 2 +text = "CUSTOM_MISSES" + +[node name="MissedAmt" type="Label" parent="Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox/HBoxContainer5"] layout_mode = 2 +size_flags_horizontal = 10 text = "999" horizontal_alignment = 2 -[node name="LoopsAmt" type="Label" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer/BottomPanelBg/HBoxContainer/ScoreMargin/LabelVbox"] +[node name="HBoxContainer6" type="HBoxContainer" parent="Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox"] +layout_mode = 2 + +[node name="LoopsTake" type="Label" parent="Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox/HBoxContainer6"] +layout_mode = 2 +text = "CUSTOM_LOOPS_TAKEN" + +[node name="LoopsAmt" type="Label" parent="Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox/HBoxContainer6"] layout_mode = 2 size_flags_horizontal = 10 text = "999" horizontal_alignment = 2 -[node name="ButtonMargin" type="MarginContainer" parent="Bg/WindowMargin/PanelBg/VBoxContainer"] +[node name="ButtonMargin" type="MarginContainer" parent="Bg/WindowMargin/VBoxContainer"] layout_mode = 2 theme_override_constants/margin_top = -3 theme_override_constants/margin_bottom = 9 -[node name="AcceptButton" type="Button" parent="Bg/WindowMargin/PanelBg/VBoxContainer/ButtonMargin"] +[node name="AcceptButton" type="Button" parent="Bg/WindowMargin/VBoxContainer/ButtonMargin"] layout_mode = 2 size_flags_horizontal = 6 theme = ExtResource("6_ql2an") diff --git a/Scenes/UI/ScoreScreen.tscn b/Scenes/UI/ScoreScreen.tscn index 5fa20eb6..53b3715c 100644 --- a/Scenes/UI/ScoreScreen.tscn +++ b/Scenes/UI/ScoreScreen.tscn @@ -49,6 +49,7 @@ theme_override_constants/margin_bottom = 50 [node name="PanelBg" type="NinePatchRect" parent="Bg/WindowMargin"] self_modulate = Color(1, 1, 1, 0.75) +custom_minimum_size = Vector2(0, 280) layout_mode = 2 texture = ExtResource("2_usavq") patch_margin_left = 30 @@ -65,7 +66,7 @@ grow_horizontal = 2 grow_vertical = 2 [node name="TopPanelBg" type="NinePatchRect" parent="Bg/WindowMargin/PanelBg/VBoxContainer"] -self_modulate = Color(1, 1, 1, 0.5) +custom_minimum_size = Vector2(0, 45) layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 @@ -102,7 +103,7 @@ theme_override_constants/margin_right = 4 theme_override_constants/margin_bottom = 4 [node name="BottomPanelBg" type="NinePatchRect" parent="Bg/WindowMargin/PanelBg/VBoxContainer/MarginContainer"] -self_modulate = Color(1, 1, 1, 0.5) +custom_minimum_size = Vector2(0, 175) layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3