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..95693782 100644 --- a/Audio/songMaps/Song1.tres +++ b/Audio/songMaps/BossBlood.tres @@ -1,251 +1,255 @@ -[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 +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")]) +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..fa88c568 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,7 +115,11 @@ Length = 0.0 [resource] script = ExtResource("2_s63u8") -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")]) +Bpm = 180 +NumLoops = 1 +SongSpeed = -1.0 +SongMapLocation = "CyberFoxSong.ogg" +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 3713f118..aac69093 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,7 +220,11 @@ Length = 0.0 [resource] script = ExtResource("2_ulihw") -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")]) +Bpm = 120 +NumLoops = 4 +SongSpeed = -1.0 +SongMapLocation = "EcholaneSong.ogg" +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 6562d14b..e604c168 100644 --- a/Audio/songMaps/FrostWaltz.tres +++ b/Audio/songMaps/FrostWaltz.tres @@ -95,7 +95,11 @@ Length = 0.0 [resource] script = ExtResource("2_ipsne") -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")]) +Bpm = 99 +NumLoops = 5 +SongSpeed = -1.0 +SongMapLocation = "FrostWaltz.ogg" +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/Song3.tres b/Audio/songMaps/GWS.tres similarity index 73% rename from Audio/songMaps/Song3.tres rename to Audio/songMaps/GWS.tres index c8e3c520..e670a6ee 100644 --- a/Audio/songMaps/Song3.tres +++ b/Audio/songMaps/GWS.tres @@ -1,295 +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") +script = ExtResource("2_4vdmh") +Bpm = 120 +NumLoops = 1 +SongSpeed = -1.0 +SongMapLocation = "Song3.ogg" 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")] diff --git a/Audio/songMaps/Gobbler.tres b/Audio/songMaps/Gobbler.tres index ec3b18b5..9931c118 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,7 +215,11 @@ Length = 0.0 [resource] script = ExtResource("2_hfiht") -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")]) +Bpm = 120 +NumLoops = 6 +SongSpeed = -1.0 +SongMapLocation = "Gobbler.ogg" +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 a51e8538..72f2ed94 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,6 +125,10 @@ Length = 0.0 [resource] script = ExtResource("2_1kkot") +Bpm = 130 +NumLoops = 1 +SongSpeed = -1.0 +SongMapLocation = "Holo_ThereItIs.ogg" 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")] diff --git a/Audio/songMaps/KeythuluSong.tres b/Audio/songMaps/KeythuluSong.tres index 3eec9775..4e4f2257 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,10 @@ Length = 0.0 [resource] 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")]) diff --git a/Audio/songMaps/Mushroom.tres b/Audio/songMaps/Mushroom.tres index 76fd946b..7c6ac43d 100644 --- a/Audio/songMaps/Mushroom.tres +++ b/Audio/songMaps/Mushroom.tres @@ -75,7 +75,11 @@ Length = 0.0 [resource] script = ExtResource("2_0c8vj") -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")]) +Bpm = 100 +NumLoops = 4 +SongSpeed = -1.0 +SongMapLocation = "Mushroom.ogg" +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 new file mode 100644 index 00000000..6a4e498b --- /dev/null +++ b/Audio/songMaps/ParasiflyDouble.tres @@ -0,0 +1,130 @@ +[gd_resource type="Resource" load_steps=26 format=3 uid="uid://vdkolb7ylhcu"] + +[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_2gxac") +Beat = 2.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_ienox"] +script = ExtResource("1_2gxac") +Beat = 6.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_ax4q1"] +script = ExtResource("1_2gxac") +Beat = 10.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_663rs"] +script = ExtResource("1_2gxac") +Beat = 15.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_86xei"] +script = ExtResource("1_2gxac") +Beat = 20.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_w3gx2"] +script = ExtResource("1_2gxac") +Beat = 12.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_t01kg"] +script = ExtResource("1_2gxac") +Beat = 18.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_rnhdg"] +script = ExtResource("1_2gxac") +Beat = 8.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_of7dy"] +script = ExtResource("1_2gxac") +Beat = 22.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_xq1dl"] +script = ExtResource("1_2gxac") +Beat = 11.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_ym0tj"] +script = ExtResource("1_2gxac") +Beat = 4.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_1vvgc"] +script = ExtResource("1_2gxac") +Beat = 11.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_wjmqy"] +script = ExtResource("1_2gxac") +Beat = 14.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_64q4o"] +script = ExtResource("1_2gxac") +Beat = 16.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_rubmr"] +script = ExtResource("1_2gxac") +Beat = 19.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_ejow0"] +script = ExtResource("1_2gxac") +Beat = 20.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_pbett"] +script = ExtResource("1_2gxac") +Beat = 8.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_gru0r"] +script = ExtResource("1_2gxac") +Beat = 22.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_wljiu"] +script = ExtResource("1_2gxac") +Beat = 10.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_3viwm"] +script = ExtResource("1_2gxac") +Beat = 2.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_mcgpp"] +script = ExtResource("1_2gxac") +Beat = 4.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_olklg"] +script = ExtResource("1_2gxac") +Beat = 12.0 +Length = 0.0 + +[sub_resource type="Resource" id="Resource_57g2b"] +script = ExtResource("1_2gxac") +Beat = 18.0 +Length = 0.0 + +[resource] +script = ExtResource("2_p8lx2") +Bpm = 120 +NumLoops = 2 +SongSpeed = -1.0 +SongMapLocation = "Song2.ogg" +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 new file mode 100644 index 00000000..c33068e5 --- /dev/null +++ b/Audio/songMaps/ParasiflySingle.tres @@ -0,0 +1,130 @@ +[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 +SongSpeed = -1.0 +SongMapLocation = "Song2.ogg" +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 5e567069..ac1ea63a 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,7 +185,11 @@ Length = 0.0 [resource] script = ExtResource("2_j6rk8") -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")]) +Bpm = 107 +NumLoops = 7 +SongSpeed = -1.0 +SongMapLocation = "Shapes.ogg" +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/Song2.tres b/Audio/songMaps/Song2.tres deleted file mode 100644 index 93e6a038..00000000 --- a/Audio/songMaps/Song2.tres +++ /dev/null @@ -1,126 +0,0 @@ -[gd_resource type="Resource" load_steps=26 format=3] - -[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"] - -[sub_resource type="Resource" id="Resource_svc5u"] -script = ExtResource("1_vo5rw") -Beat = 2.0 -Length = 0.0 - -[sub_resource type="Resource" id="Resource_ienox"] -script = ExtResource("1_vo5rw") -Beat = 6.0 -Length = 0.0 - -[sub_resource type="Resource" id="Resource_ax4q1"] -script = ExtResource("1_vo5rw") -Beat = 10.0 -Length = 0.0 - -[sub_resource type="Resource" id="Resource_663rs"] -script = ExtResource("1_vo5rw") -Beat = 15.0 -Length = 0.0 - -[sub_resource type="Resource" id="Resource_86xei"] -script = ExtResource("1_vo5rw") -Beat = 20.0 -Length = 0.0 - -[sub_resource type="Resource" id="Resource_w3gx2"] -script = ExtResource("1_vo5rw") -Beat = 12.0 -Length = 0.0 - -[sub_resource type="Resource" id="Resource_t01kg"] -script = ExtResource("1_vo5rw") -Beat = 18.0 -Length = 0.0 - -[sub_resource type="Resource" id="Resource_rnhdg"] -script = ExtResource("1_vo5rw") -Beat = 8.0 -Length = 0.0 - -[sub_resource type="Resource" id="Resource_of7dy"] -script = ExtResource("1_vo5rw") -Beat = 22.0 -Length = 0.0 - -[sub_resource type="Resource" id="Resource_xq1dl"] -script = ExtResource("1_vo5rw") -Beat = 11.0 -Length = 0.0 - -[sub_resource type="Resource" id="Resource_ym0tj"] -script = ExtResource("1_vo5rw") -Beat = 4.0 -Length = 0.0 - -[sub_resource type="Resource" id="Resource_1vvgc"] -script = ExtResource("1_vo5rw") -Beat = 11.0 -Length = 0.0 - -[sub_resource type="Resource" id="Resource_wjmqy"] -script = ExtResource("1_vo5rw") -Beat = 14.0 -Length = 0.0 - -[sub_resource type="Resource" id="Resource_64q4o"] -script = ExtResource("1_vo5rw") -Beat = 16.0 -Length = 0.0 - -[sub_resource type="Resource" id="Resource_rubmr"] -script = ExtResource("1_vo5rw") -Beat = 19.0 -Length = 0.0 - -[sub_resource type="Resource" id="Resource_ejow0"] -script = ExtResource("1_vo5rw") -Beat = 20.0 -Length = 0.0 - -[sub_resource type="Resource" id="Resource_pbett"] -script = ExtResource("1_vo5rw") -Beat = 8.0 -Length = 0.0 - -[sub_resource type="Resource" id="Resource_gru0r"] -script = ExtResource("1_vo5rw") -Beat = 22.0 -Length = 0.0 - -[sub_resource type="Resource" id="Resource_wljiu"] -script = ExtResource("1_vo5rw") -Beat = 10.0 -Length = 0.0 - -[sub_resource type="Resource" id="Resource_3viwm"] -script = ExtResource("1_vo5rw") -Beat = 2.0 -Length = 0.0 - -[sub_resource type="Resource" id="Resource_mcgpp"] -script = ExtResource("1_vo5rw") -Beat = 4.0 -Length = 0.0 - -[sub_resource type="Resource" id="Resource_olklg"] -script = ExtResource("1_vo5rw") -Beat = 12.0 -Length = 0.0 - -[sub_resource type="Resource" id="Resource_57g2b"] -script = ExtResource("1_vo5rw") -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")]) diff --git a/Audio/songMaps/Spider.tres b/Audio/songMaps/Spider.tres index 7e666dc5..816c1b3d 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,7 +135,11 @@ Length = 0.0 [resource] script = ExtResource("2_ojgcg") -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")]) +Bpm = 130 +NumLoops = 3 +SongSpeed = -1.0 +SongMapLocation = "Spider.ogg" +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 ff14f0c3..7fa60430 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,7 +85,11 @@ Length = 0.0 [resource] script = ExtResource("2_s63u8") -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")]) +Bpm = 180 +NumLoops = 5 +SongSpeed = -1.0 +SongMapLocation = "SquirkelSong.ogg" +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 b90c3588..fc22a24b 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,7 +290,11 @@ Length = 0.0 [resource] script = ExtResource("2_gbai3") -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")]) +Bpm = 176 +NumLoops = 7 +SongSpeed = -1.0 +SongMapLocation = "District_Four.ogg" +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 a24d6ee3..fd0a10f4 100644 --- a/Audio/songMaps/TutorialSong.tres +++ b/Audio/songMaps/TutorialSong.tres @@ -105,7 +105,11 @@ Length = 0.0 [resource] script = ExtResource("2_bsw0b") -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")]([]) +Bpm = 90 +NumLoops = 1 +SongSpeed = -1.0 +SongMapLocation = "TutorialSong.ogg" +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/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..d5f9fc85 100644 --- a/Classes/MidiMaestro/NoteChart.cs +++ b/Classes/MidiMaestro/NoteChart.cs @@ -8,6 +8,20 @@ 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; } + + //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; } = ""; + [Export] Array UpLaneData = []; diff --git a/Classes/MidiMaestro/SongTemplate.cs b/Classes/MidiMaestro/SongTemplate.cs index 9cff9f5d..89d6e749 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; /** @@ -6,23 +9,67 @@ 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; } + + public struct NoteChartMemento( + string name = "", + string[] enemyScenePath = null, + string chartPath = "" + ) + { + 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) + { + 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("CUSTOM_SONTEM_NOT_FOUND", [path]); + + 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("CUSTOM_NO_CHART_PATH", [json]); + if (!FileAccess.FileExists(path.GetBaseDir() + "/" + result.ChartPath)) + return new SongTemplate( + "CUSTOM_CHART_NOT_FOUND", + [path.GetBaseDir() + "/" + 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 error object."); + return new SongTemplate("CUSTOM_COULD_NOT_READ", [json]); + } + } } diff --git a/Globals/FunkEngineNameSpace.cs b/Globals/FunkEngineNameSpace.cs index 78b98bd0..2c896daf 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. @@ -268,6 +259,7 @@ public enum Stages Load, Continue, Title, + Custom, } public enum Rarity 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/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/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/Globals/Translations/Translations.csv b/Globals/Translations/Translations.csv index b6923eea..48b4b286 100644 --- a/Globals/Translations/Translations.csv +++ b/Globals/Translations/Translations.csv @@ -163,4 +163,21 @@ 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!,无法找到歌曲文件! +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 diff --git a/Scenes/BattleDirector/Assets/NoteQueue_Frame.png b/Scenes/BattleDirector/Assets/NoteQueue_Frame.png index 8ce76dec..25ae06b2 100644 Binary files a/Scenes/BattleDirector/Assets/NoteQueue_Frame.png and b/Scenes/BattleDirector/Assets/NoteQueue_Frame.png differ 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") diff --git a/Scenes/BattleDirector/Scripts/BattleDirector.cs b/Scenes/BattleDirector/Scripts/BattleDirector.cs index 65cff2a4..f4ec3395 100644 --- a/Scenes/BattleDirector/Scripts/BattleDirector.cs +++ b/Scenes/BattleDirector/Scripts/BattleDirector.cs @@ -88,19 +88,25 @@ 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( + StageProducer.Config.RoomType == Stages.Custom + ? AudioStreamOggVorbis.LoadFromFile( + CustomSelection.UserSongDir + curChart.SongMapLocation + ) + : 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(); @@ -112,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; @@ -323,6 +334,12 @@ private bool IsBattleWon() private void OnBattleWon() { + if (StageProducer.Config.RoomType == Stages.Custom) + { + _customSongResultsScene.ShowResults(this, (float)_enemies[0].GetCurrentHealth() / 500); + _customSongResultsScene.Finished += TransitionOutOfCustom; + return; + } Harbinger.Instance.InvokeBattleEnded(); CleanUpRelics(); BattleScore.SetEndHp(Player.GetCurrentHealth()); @@ -335,6 +352,12 @@ private void OnBattleWon() private void OnBattleLost() { + if (StageProducer.Config.RoomType == Stages.Custom) + { + _customSongResultsScene.ShowResults(this, (float)_enemies[0].GetCurrentHealth() / 500); + _customSongResultsScene.Finished += TransitionOutOfCustom; + return; + } Audio.StreamPaused = true; SaveSystem.ClearSave(); AddChild(GD.Load(EndScreen.LoadPath).Instantiate()); @@ -353,6 +376,14 @@ private void ShowRewardSelection(int amount) rewardSelect.Selected += TransitionOutOfBattle; } + private CustomScore _customSongResultsScene; + + private void TransitionOutOfCustom() + { + BgAudioPlayer.LiveInstance.PlayLevelMusic(); + StageProducer.LiveInstance.TransitionStage(Stages.Title); + } + private void TransitionOutOfBattle() { StageProducer.LiveInstance.TransitionStage(Stages.Map); 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..2d28aaab 100644 --- a/Scenes/ChartViewport/Scripts/ChartManager.cs +++ b/Scenes/ChartViewport/Scripts/ChartManager.cs @@ -74,23 +74,24 @@ 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; + 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( - _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; TimeKeeper.Bpm = songData.Bpm; @@ -102,7 +103,7 @@ public void Initialize(SongData songData) 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 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..39602b92 --- /dev/null +++ b/Scenes/CustomSong/CustomScoreScreen.tscn @@ -0,0 +1,201 @@ +[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/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) +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"] +layout_mode = 2 + +[node name="TitleContainer" type="MarginContainer" parent="Bg/WindowMargin/VBoxContainer"] +layout_mode = 2 + +[node name="TopPanelBg" type="NinePatchRect" parent="Bg/WindowMargin/VBoxContainer/TitleContainer"] +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/VBoxContainer/TitleContainer"] +layout_mode = 2 + +[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 +bbcode_enabled = true +text = "CUSTOM_RESULTS" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="MarginContainer" type="MarginContainer" parent="Bg/WindowMargin/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +theme_override_constants/margin_left = 6 +theme_override_constants/margin_top = 0 +theme_override_constants/margin_right = 6 +theme_override_constants/margin_bottom = 4 + +[node name="BottomPanelBg" type="NinePatchRect" parent="Bg/WindowMargin/VBoxContainer/MarginContainer"] +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/VBoxContainer/MarginContainer"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="LabelMargin" type="MarginContainer" parent="Bg/WindowMargin/VBoxContainer/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_right = 8 +theme_override_constants/margin_bottom = 8 + +[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="HBoxContainer" type="HBoxContainer" parent="Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox"] +layout_mode = 2 + +[node name="PlayerHP" type="Label" parent="Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox/HBoxContainer"] +layout_mode = 2 +text = "CUSTOM_PLAYER_HP" + +[node name="PlayerHPPercent" type="Label" parent="Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 10 +text = "999" +horizontal_alignment = 2 + +[node name="HBoxContainer2" type="HBoxContainer" parent="Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox"] +layout_mode = 2 + +[node name="EnemyHP" type="Label" parent="Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox/HBoxContainer2"] +layout_mode = 2 +text = "CUSTOM_ENEMY_HP" + +[node name="EnemyHPPercent" type="Label" parent="Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox/HBoxContainer2"] +layout_mode = 2 +size_flags_horizontal = 10 +text = "999" +horizontal_alignment = 2 + +[node name="HBoxContainer3" type="HBoxContainer" parent="Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox"] +layout_mode = 2 + +[node name="NotesPlaced" type="Label" parent="Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox/HBoxContainer3"] +layout_mode = 2 +text = "CUSTOM_NOTES_PLACED" + +[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="HBoxContainer4" type="HBoxContainer" parent="Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox"] +layout_mode = 2 + +[node name="Perfects" type="Label" parent="Bg/WindowMargin/VBoxContainer/MarginContainer/HBoxContainer/LabelMargin/LabelVbox/HBoxContainer4"] +layout_mode = 2 +text = "CUSTOM_PERFECTS" + +[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="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="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/VBoxContainer"] +layout_mode = 2 +theme_override_constants/margin_top = -3 +theme_override_constants/margin_bottom = 9 + +[node name="AcceptButton" type="Button" parent="Bg/WindowMargin/VBoxContainer/ButtonMargin"] +layout_mode = 2 +size_flags_horizontal = 6 +theme = ExtResource("6_ql2an") +text = "ESCAPE_MENU_TITLE" diff --git a/Scenes/CustomSong/CustomSelection.tscn b/Scenes/CustomSong/CustomSelection.tscn new file mode 100644 index 00000000..270bb5b2 --- /dev/null +++ b/Scenes/CustomSong/CustomSelection.tscn @@ -0,0 +1,134 @@ +[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 +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..da7dc166 --- /dev/null +++ b/Scenes/CustomSong/Scripts/CustomSelection.cs @@ -0,0 +1,164 @@ +using System; +using System.Collections.Generic; +using System.IO; +using FunkEngine; +using FunkEngine.Classes.MidiMaestro; +using Godot; +using FileAccess = Godot.FileAccess; + +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; + } + 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 \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; + } + } + + private void StartCustomSelection() + { + BgAudioPlayer.LiveInstance.StopMusic(); + 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..91fff8ea 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 @@ -73,6 +76,7 @@ public override void _Ready() ) { SteamWhisperer.PopAchievement("actTwoComp"); + SaveSystem.UpdateConfig(SaveSystem.ConfigSettings.HasWon, true); } } ), 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/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..123d27ab 100644 --- a/Scenes/UI/Inventory.tscn +++ b/Scenes/UI/Inventory.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=6 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="Texture2D" uid="uid://dyt1cvag13aik" path="res://SharedAssets/Money.png" id="5_si1x5"] @@ -53,6 +54,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 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 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 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); diff --git a/Scenes/UI/TitleScreen/Scripts/TitleScreen.cs b/Scenes/UI/TitleScreen/Scripts/TitleScreen.cs index 65dd551c..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; @@ -15,6 +16,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 +40,16 @@ 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(); + _customSelectionButton.Visible = (bool) + SaveSystem.GetConfigValue(SaveSystem.ConfigSettings.HasWon); } public override void _Process(double delta) @@ -79,13 +88,36 @@ private void OpenOptions() optionsMenu.OpenMenu(this); } + private void OpenCustomSelection() + { + CustomSelection customMenu = GD.Load(CustomSelection.LoadPath) + .Instantiate(); + AddChild(customMenu); + 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() diff --git a/Scenes/UI/TitleScreen/TitleScreen.tscn b/Scenes/UI/TitleScreen/TitleScreen.tscn index 96a32b3a..a7092d37 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,13 @@ 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="."] +visible = false +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_SELECT" diff --git a/SharedAssets/SplashScreenGodot.png b/SharedAssets/SplashScreenGodot.png new file mode 100644 index 00000000..b3275747 Binary files /dev/null and b/SharedAssets/SplashScreenGodot.png differ 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]