aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--levels/Apathetic Empathy/Medium/leaderboard.json2
-rw-r--r--levels/Apathetic Empathy/Medium/notes.txt1195
-rw-r--r--levels/Book Betrayal/Easy/metadata.json2
-rw-r--r--levels/Book Betrayal/Easy/notes.txt1156
-rw-r--r--levels/testLevel/easy/leaderboard.json18
-rw-r--r--src/assets/fairyfountain.wavbin0 -> 31539988 bytes
-rw-r--r--src/devmenu/DebugMenu.java2
-rw-r--r--src/devmenu/DiffEditor.java12
-rw-r--r--src/devmenu/NotesEditor.java13
-rw-r--r--src/gameplay/SongPlayer.java76
-rw-r--r--src/gui/Driver.java18
-rw-r--r--src/gui/GameOver.java6
-rw-r--r--src/gui/Leaderboard.java2
-rw-r--r--src/gui/LevelDetails.java4
-rw-r--r--src/gui/LevelSelector.java2
-rw-r--r--src/gui/LevelSurround.java7
-rw-r--r--src/gui/MainMenu.java6
-rw-r--r--src/gui/Settings.java16
-rw-r--r--src/main/Level.java2
-rw-r--r--src/main/ScoreController.java8
-rw-r--r--src/main/SettingsController.java9
-rw-r--r--src/main/SoundController.java69
-rw-r--r--src/sound/AudioFilePlayer.java148
-rw-r--r--src/sound/ShortAudioPlayer.java73
24 files changed, 1465 insertions, 1381 deletions
diff --git a/levels/Apathetic Empathy/Medium/leaderboard.json b/levels/Apathetic Empathy/Medium/leaderboard.json
index b09061e..f395957 100644
--- a/levels/Apathetic Empathy/Medium/leaderboard.json
+++ b/levels/Apathetic Empathy/Medium/leaderboard.json
@@ -1 +1 @@
-[{"date":"2023-06-04","score":705500,"name":"zbone"},{"date":"2023-06-04","score":573500,"name":"zbone"}] \ No newline at end of file
+[{"date":"2023-06-04","score":926300,"name":"ZBONE RAAAAH"}] \ No newline at end of file
diff --git a/levels/Apathetic Empathy/Medium/notes.txt b/levels/Apathetic Empathy/Medium/notes.txt
index aae53a2..7077d8a 100644
--- a/levels/Apathetic Empathy/Medium/notes.txt
+++ b/levels/Apathetic Empathy/Medium/notes.txt
@@ -1,532 +1,685 @@
-f4.3
-j4.3
-d11.9
-k12.0
-s18.9
-s19.3
-s20.2
-s21.1
-s21.7
-f23.1
-j24.2
-d25.2
-f26.2
-j27.1
-k28.1
-j29.1
-f30.1
-k31.1
-d32.1
-f33.1
-j34.0
-j35.0
-j36.2
-j37.1
-j37.5
-s39.0
-f40.0
-j41.0
-k42.0
-d43.0
-s44.0
-s45.0
+s3.4
+k3.4
+d3.4
+j11.2
+f11.2
+s11.2
+s17.5
+s18.1
+s19.4
+s20.4
+s21.0
+s22.4
+s23.6
+s24.5
+s25.5
+s26.5
+s27.4
+d27.4
+k27.4
+s28.4
+s29.5
+s30.4
+s31.3
+s32.3
+f32.3
+j32.3
+s33.8
+s34.8
+s35.4
+k35.4
+d35.5
+s36.5
+s37.4
+s38.3
+s39.4
+s40.4
+s41.4
+s42.3
+s43.3
+j43.3
+f43.3
+s44.5
+f44.5
s45.5
-j47.0
-f48.0
-k49.0
-s50.5
-s51.5
-d52.1
-f53.1
-j54.0
-k55.0
-d56.0
-f56.5
-j57.0
-k57.5
-s58.2
-j59.1
+s46.3
+s47.3
+k47.3
+d47.3
+s48.4
+f48.4
+j48.4
+s49.4
+k49.4
+d49.4
+f50.4
+s51.3
+s52.4
+s53.5
+s54.5
+s55.4
+d55.4
+k55.4
+f56.4
+s57.4
+s58.4
+s59.5
s60.5
-s61.0
-s62.0
-s63.0
-s64.0
-s64.5
-s65.1
-s65.6
-s66.1
-s66.6
-s67.1
-s67.6
-d68.1
-f69.0
-j69.6
-k70.1
-d70.7
-f71.2
-j72.1
-j73.0
-j74.1
-j75.1
-f76.0
-f77.0
-f77.5
-j79.1
-s79.9
-f81.0
-s82.5
+s61.4
+s62.3
+s63.4
+s64.3
+s65.3
+s65.8
+s66.3
+s66.9
+s67.4
+j67.4
+s68.3
+s68.8
+s70.3
+s71.3
+j71.4
+k71.4
+f71.4
+d71.4
+s72.4
+s73.3
+s74.4
+s75.4
+k75.4
+j75.4
+f75.4
+d75.5
+s76.3
+s76.9
+s77.5
+s78.4
+d79.3
+k79.3
+s80.3
+s81.8
+j81.8
+f81.8
+f82.8
+s82.8
+j82.8
s83.5
-d84.2
-f85.1
-j86.1
-k87.0
-f88.0
-j88.1
-d90
-k90
-s92.1
-s93.1
-s93.6
+s84.4
+s84.9
+s86.1
+s86.7
+s87.3
+d87.3
+k87.4
+s88.3
+s89.4
+s90.4
+s91.4
+j91.4
+k91.4
+s92.3
+s93.4
s94.3
-s95.5
-s96.0
-s96.5
-s97.2
-s98.5
+s95.4
+f95.4
+d95.4
+s96.3
+s97.7
+j97.8
+k97.8
+j98.8
+k98.8
+s98.8
s99.4
-f100.0
-f101.0
-j101.5
-k103
-d105
-d105.4
-f107.0
-j109.0
-j109.5
-s111.0
-s113.0
-s114.6
-s115.5
-f116.1
-j117.0
-d117.6
-k118.5
-f119.9
-d121.0
-f121.5
-j122.5
-k123
-j125
-k125.6
-f126.2
-s126.7
-s128.0
-s129.1
-s130.1
-s131.0
-f132.1
-j132.1
-k133.0
-k134.0
-k135
-k136
-k137
-k138
-k139
-k140
-d140
-j141
-j142.2
-d143.1
-k144.1
-d145.1
-s146.1
-j147.1
-s148.1
-j149.1
-f149.2
-j150.2
-j151.1
-f152.1
-j152.1
-f153.1
-j153.1
-f154.1
-j154.2
-f155.0
-j155.1
-j156.0
-j157.1
+s100.4
+s101.4
+s102.3
+s103.3
+d103.4
+k103.4
+s104.4
+s105.4
+s106.3
+s107.4
+f107.4
+j107.4
+s108.3
+s109.3
+s110.3
+s111.4
+k111.4
+d111.4
+s112.4
+s113.3
+s114.3
+s115.4
+k115.4
+j115.4
+s116.3
+s117.4
+s118.4
+k119.4
+j119.4
+s119.4
+s120.4
+s121.4
+s122.4
+s123.3
+s123.9
+s124.4
+s125.0
+s125.4
+s126.0
+s126.4
+s126.8
+s127.1
+s127.5
+s129.5
+s130.5
+s131.4
+j131.4
+s132.3
+s133.4
+s134.4
+s135.3
+d135.4
+k135.4
+f136.4
+s136.4
+j136.4
+s137.4
+s138.3
+j139.5
+f140.5
+k141.5
+d142.0
+j142.4
+d143.4
+k144.0
+f144.5
+j144.9
+d145.5
+k145.9
+f146.5
+j147.0
+d147.5
+s148.6
+s149.6
+s150.6
+s151.5
+s152.5
+s153.5
+s154.4
+k155.4
+j156.4
+f156.9
j157.5
-f158.2
-j158.6
-s159.1
-s160.0
-s161.0
-s162.5
-s163.5
-j164.9
-k166.0
-k167.1
-j168.0
-j169.1
-j170.0
-j171.1
-f172.0
-f173.1
-f174.1
-f175.1
-d176.1
-d177.1
-d178.0
-d179.0
-s179.7
-s181.0
-s183.0
-s185.1
-s185.6
-s187.1
-s189.0
-s190.6
-s192.1
-s192.6
-s193.1
-s193.3
-s193.6
-s193.9
+d157.9
+k158.4
+f159.1
+j159.5
+d160.4
+k161.0
+f161.5
+j161.9
+d162.3
+k162.8
+f163.4
+s164.5
+s166.4
+s168.4
+s169.9
+s170.9
+s172.5
+s174.5
+s176.4
+s177.8
+s178.8
+j179.4
+f180.4
+f181.7
+f182.4
+d183.4
+f184.4
+j185.4
+k186.3
+s187.5
+k187.6
+d187.6
+j188.4
+s188.4
+f188.4
+s189.4
+k189.4
+d189.4
+j190.4
+s190.4
+f190.4
+s191.4
+s192.4
+s192.9
+s193.4
+s194.0
s194.5
s195.0
-s195.6
-s196.0
-s197.0
-s197.5
-s198.1
-s199.0
-s201.1
+f195.5
+j195.6
+s196.3
+s196.8
+s198.4
+s200.3
+k200.3
+d200.3
s201.5
-s203.1
-s205.0
-s205.5
-s207.1
-f208.2
-j209.1
-k210.0
-d211.0
-f212.1
-j212.1
-d215.1
-k215.2
-s217.1
-s217.5
-k219.0
-d219.1
-j221.0
-f221.0
-f221.5
-j221.5
-s223.0
-k225.1
-d225.1
-d225.6
-k225.6
-s226.7
-s227.6
-j228.2
-f229.2
-k230.1
-s232.1
-j233.1
-f233.5
-k234.1
-d234.6
-k235.1
-s236.2
-j237.1
-f237.5
-k238.0
-d238.5
-j239.0
-f239.6
-k240.0
-d240.6
-j241.0
-f241.5
-d242.1
-f243.1
-s244.0
-j245.1
-k245.5
-d247.1
-f247.6
-s248.1
-j249.0
-k249.4
-d250.0
-f250.5
-s250.9
-j251.5
-k252.1
-f253.1
-f253.6
-f254.0
-f254.4
-f254.8
-f255.1
-f256.0
-f256.9
-f257.9
-f258.9
-s259.9
-s261.1
-s262.2
-s263.1
-s264.1
-s265.1
-s266.0
-f266.9
-j266.9
-d268.1
-k268.1
-s268.9
-s270.0
-s271.0
-s272.1
-s273.0
-s274.0
-s275.0
-f275.9
-j275.9
-s276.9
-s278.1
-s279.0
-d280.0
-k280.0
-s281.0
-s282.1
-s283.0
-d284.0
-j284.1
-s284.9
-s286.0
-s286.8
-f288.1
-d288.1
-j288.1
-k288.1
-s289.0
-s290.1
-s291.0
-f292.1
-d292.1
-k292.1
-j292.1
-s293.0
-s294.2
-s295.1
-k296.0
-j296.0
-f296.1
-d296.1
-s297.0
-s298.1
-s299.1
-f300.1
-j301.2
-k302.2
-d303.1
-f304.0
-j304.1
-k305.2
-k306.2
-k307.1
-f308.0
-j308.0
-k309.1
-k310.2
-k311.0
-s312.0
-d313.1
-s315.0
-d316.0
-k316.1
-f317.6
-j317.6
-k319.0
-d319.0
-f320.6
-j322.1
-k323.1
-s324.1
-s325.2
-s326.2
-s327.2
-j328.1
-f328.1
-d329.0
-k329.1
-k330.1
-d330.2
-d331.1
-k331.1
-s332.0
-j333.0
-f333.1
-j334.1
-f334.1
-d334.8
-k334.8
-k335.5
-d335.5
-s336.0
-s337.0
-s338.1
-s339.0
-j340.0
-f340.1
-k341.0
-d341.0
-k342.1
-d342.1
-d343.0
-k343.0
-s344.0
-s345.1
-s346.1
-s346.7
-s347.6
-d348.1
-d350.1
-d351.1
-f352.0
-f353.1
-f354.0
-f355.1
-j355.9
-j357.0
-d357.2
-j358.1
-j358.6
-j359.5
-s360.0
-s361.1
-s362.1
-s363.0
-f364.1
-f365.0
-f366.1
-f367.1
-j368.0
-j369.0
-j370.1
-j371.1
-s372.1
-s373.1
-s374.1
-s375.0
-f376.0
-j376.0
-s377.0
-s378.1
-s379.0
-d380.1
-f381.0
-j382.1
+s202.4
+k203.4
+s203.4
+j203.4
+f203.4
+d203.4
+s204.3
+s204.9
+s205.4
+s206.1
+s206.5
+s207.4
+d207.4
+k207.5
+s208.3
+s209.9
+s210.9
+s211.4
+j211.4
+d211.4
+s212.4
+s212.9
+s214.3
+k215.4
+s215.4
+f215.5
+j215.6
+s216.3
+s216.9
+s218.4
+s219.4
+d219.5
+k219.5
+j219.5
+s220.4
+s220.8
+s222.4
+s223.3
+f223.3
+d223.4
+k223.4
+j223.4
+s224.3
+s224.8
+s225.9
+s226.4
+s226.9
+s227.4
+f227.5
+k227.5
+j227.5
+d227.6
+s228.3
+f228.4
+s228.9
+k230.3
+j230.3
+s230.4
+f230.4
+d230.4
+s231.4
+s232.4
+s233.4
+s234.4
+k235.4
+j235.4
+s235.4
+s236.4
+s237.3
+s238.1
+s239.3
+k239.3
+d239.3
+s240.3
+s241.5
+s242.4
+s243.4
+f243.4
+j243.5
+s244.3
+s245.3
+s246.3
+s247.3
+k247.4
+d247.4
+s248.3
+s249.4
+s250.4
+s251.4
+j251.4
+d251.4
+s252.3
+s252.7
+s253.1
+s253.4
+s253.7
+s254.0
+s254.3
+s254.6
+s255.0
+s255.3
+s256.4
+s257.3
+s258.3
+s259.3
+s260.4
+s261.5
+s262.4
+s263.5
+s264.4
+s265.3
+k266.3
+s266.3
+d266.4
+j267.4
+f267.4
+s267.5
+s268.4
+s269.5
+s270.3
+s271.3
+s272.4
+s273.4
+s274.3
+s275.4
+d275.4
+k275.4
+s276.4
+s277.3
+s278.4
+s279.3
+j279.3
+f279.3
+s280.4
+s281.4
+s282.3
+k282.4
+d282.4
+j283.5
+f283.5
+s283.6
+s284.4
+s285.3
+s286.3
+s287.3
+d287.3
+k287.3
+s288.3
+s289.3
+s290.3
+d291.4
+f294.5
+j295.4
+k296.5
+k298.4
+s299.4
+j299.5
+k302.3
+s302.3
+f303.4
+j303.4
+s311.4
+k311.4
+d311.4
+j314.4
+f314.4
+d315.4
+k315.4
+k319.7
+k320.5
+k321.4
+k322.4
+s323.5
+s324.5
+s325.6
+s326.4
+d326.4
+j326.4
+f327.4
+k327.5
+s327.5
+s328.5
+s329.5
+s330.5
+s331.4
+s332.4
+s333.4
+s334.0
+j334.0
+k334.0
+d334.0
+f334.0
+s334.9
+d334.9
+f334.9
+k334.9
+j334.9
+s335.6
+s336.6
+s337.5
+s338.4
+k338.4
+f339.5
+j339.5
+s339.5
+s340.4
+s341.5
+s342.5
+j343.3
+j344.4
+j345.5
+f346.0
+f346.9
+s347.5
+s348.5
+s349.4
+s350.4
+k351.3
+d352.4
+f353.4
+j354.4
+k355.4
+j356.4
+f357.5
+d357.8
+d359.4
+f360.5
+j361.3
+k362.4
+f363.4
+d364.4
+f365.5
+j366.4
+k367.5
+s368.5
+j369.4
+s369.9
+s370.8
+j371.4
+f372.6
+d373.4
+f374.4
+j375.4
+k376.4
+j377.4
+k378.4
+s378.4
+d378.4
+f379.4
+j379.4
+s380.4
+s381.5
+k382.0
+j382.0
+s382.0
+d382.0
+s383.0
k383.0
-d384.0
-f385.0
-j386.1
-s387.1
-k388.1
-d389.1
-f390.0
-j391.0
-s392.0
-s393.0
-s394.1
-s395.1
-d396.2
-d399.0
-f399.9
-j401.0
-k402.0
-s403.0
-d404.0
-f405.0
-s406.8
-s407.5
-d408.2
-f409.1
-j410.1
-k411.0
-d412.0
-f413.0
-j414.1
-k415.0
-s416.0
-d417.0
-f418.0
-j418.5
+j383.0
+s384.5
+s385.5
+s386.4
+s387.5
+s388.4
+s389.4
+d390.1
+f390.5
+j391.4
+s392.3
+k393.5
+j394.5
+f395.6
+d396.5
+f397.4
+j398.5
+k399.4
+s400.4
+d400.4
+k400.4
+f401.4
+j401.4
+s401.4
+d402.4
+s402.4
+k402.4
+s403.4
+f403.4
+j403.4
+k404.4
+j404.4
+s405.9
+s406.9
+k407.6
+j407.6
+d407.6
+f407.7
+s408.5
+s409.4
+d410.5
+f411.4
+j412.4
+k413.5
+d414.4
+k414.4
+j414.4
+f414.4
+s415.3
+d416.4
+k416.4
+j416.4
+f416.4
+d417.4
+f417.5
+f418.5
+j419.5
k419.5
-f420.1
-s421.1
-s422.1
-s423.1
-d424.0
-f424.9
-j426.0
-k427.0
-d428.0
-f429.1
-j430.1
-s430.5
-s431.5
-f432.2
-d433.2
-f434.1
-j435.1
-k436.1
-d437.0
-f438.1
-j439.0
-k440.1
-f441.1
-s442.1
-s442.5
-s443.0
-s443.6
-d444.1
-f445.1
-f446.2
-j447.1
-k448.1
-d449.1
-f450.1
-j451.1
-d452.5
-f454.0
-j455.1
-k456.1
-d457.5
-f458.9
-s460.6
-j461.6
-k463.0
-f464.4
-d466.0
-j467.1
-k468.1
-d469.6
-f471.0
-j471.9
-k473.5
-d475.0
-f476.5
-s477.8
-j478.8
-k480.1
-f481.4
-d483.0
-s484.0
-f485.4
-j487.0
-k488.2
+s420.5
+s421.5
+s422.4
+j423.4
+s423.4
+s424.2
+s425.4
+s426.4
+k427.3
+s427.4
+s428.3
+s429.5
+s430.4
+d431.4
+j431.5
+k431.5
+f431.5
+s432.3
+s433.4
+k434.3
+f434.3
+d434.3
+j434.3
+s434.3
+s435.4
+s436.4
+s437.4
+s438.4
+s439.4
+s440.4
+s441.4
+s442.4
+f443.5
+d444.6
+f445.6
+j446.4
+k447.6
+d448.9
+f450.3
+j451.8
+s453.4
+j454.3
+d455.4
+s455.4
+k455.4
+s456.9
+f456.9
+j456.9
+k458.4
+d458.4
+f459.3
+j459.3
+s460.8
+s462.3
+k462.3
+d462.3
+f463.9
+d463.9
+j463.9
+k463.9
+s465.4
+f466.4
+k466.4
+j466.4
+d466.4
+s467.4
+f469.0
+k469.0
+j469.0
+s470.4
+d471.4
+s471.4
+k471.4
+f473.0
+s473.0
+j473.1
+k474.5
+d474.5
+s474.5
+s475.8
+f475.8
+j475.8
+k477.6
+s477.6
+d477.6
+f478.5
+j478.5
+s478.5
+j479.5
+f480.8
+d482.4
+f483.3
+j484.8
+d486.3
+s487.7
diff --git a/levels/Book Betrayal/Easy/metadata.json b/levels/Book Betrayal/Easy/metadata.json
index 6259435..a0369fd 100644
--- a/levels/Book Betrayal/Easy/metadata.json
+++ b/levels/Book Betrayal/Easy/metadata.json
@@ -1 +1 @@
-{"numBeats":652,"title":"Easy","bpm":166.0} \ No newline at end of file
+{"numBeats":652,"title":"Medium","bpm":166.0} \ No newline at end of file
diff --git a/levels/Book Betrayal/Easy/notes.txt b/levels/Book Betrayal/Easy/notes.txt
index fcb8c6d..32bc64d 100644
--- a/levels/Book Betrayal/Easy/notes.txt
+++ b/levels/Book Betrayal/Easy/notes.txt
@@ -1,518 +1,640 @@
-s6.9
-s10.1
-s11.5
-s12.9
-d17.9
-f20.0
-s22.1
-s24.1
-j26.1
-j27.1
-j28.1
-j29.1
-k30.2
-k32.1
-d34.4
-d35.3
-d36.3
-d37.3
-s38.3
-d42.3
-f42.8
-j43.8
-k44.3
-s46.3
-s48.2
-s50.4
-s52.4
-s54.5
-s56.5
-s58.5
-j60.7
-f62.6
-f64.5
-k66.6
-k68.5
-d70.6
-d71.6
-d72.6
-d73.7
-f74.8
-j76.8
-k78.8
-k79.8
-k80.8
-k81.7
-d82.8
-d83.7
-d84.7
-d85.7
-f86.8
-f88.8
-f90.8
-f92.8
-s94.9
-s96.0
-s97.0
-s98.0
-s99.0
-s100.0
-s101.0
-s102.0
-d103.0
-f103.9
-j105.0
-k105.5
-j106.5
-k107.1
-j108.1
-k108.7
-j109.7
-k110.3
-j111.3
-j112.2
-j113.3
-j114.2
-s115.2
-s116.3
-s117.3
-s118.2
-s119.4
-s121.4
-s123.3
-s125.3
-s127.4
-s128.5
-s129.4
-s130.4
-s131.4
-s132.4
-s133.4
-s134.3
-j135.0
-f135.1
-f136.3
-j136.3
-f137.4
-j137.5
-d142.7
-k142.7
-s142.7
-k144.6
-s144.6
-d144.6
-s145.6
-d145.6
-k145.7
-j151.2
-f151.2
-f152.6
-j152.6
-f153.6
-j153.7
-s159.2
-s160.7
-s161.7
-s165.9
-s167.8
-s168.8
-s169.9
-s170.9
-f171.9
-s172.0
+f5.5
+j5.5
+k9.1
+d9.2
+j10.6
+f10.6
+k12.3
+d12.3
+s17.2
+d17.2
+k17.2
+j21.4
+f21.4
+s21.4
+d25.3
+s25.4
+k25.4
+f26.9
+s26.9
+j26.9
+d29.4
+k29.4
+s29.4
+f32.3
+s32.4
+j32.4
+f37.5
+s37.5
+j37.5
+d38.5
+s38.5
+k38.5
+f39.5
+s39.5
+j39.5
+k40.5
+d40.5
+s40.5
+f41.6
+j41.6
+s41.7
+s43.0
+f43.0
+j43.0
+j45.4
+f47.1
+d48.7
+k48.7
+f50.1
+j50.1
+d53.6
+s53.6
+k53.6
+f57.7
+s57.7
+j57.7
+j59.3
+f59.3
+s59.3
+d60.7
+k60.7
+s60.7
+f61.8
+j61.8
+s61.8
+d65.9
+k65.9
+s65.9
+f67.3
+s67.3
+j67.3
+f70.1
+s70.1
+j70.1
+k74.0
+d74.0
+s74.0
+j75.5
+f75.5
+s75.5
+k77.9
+d77.9
+s77.9
+j82.0
+s82.0
+f82.0
+j83.5
+f83.5
+s83.5
+d86.0
+s86.1
+k86.1
+k90.2
+j90.2
+d91.2
+f91.2
+k92.2
+j92.2
+d93.2
+f93.3
+k94.2
+j94.2
+s98.2
+s99.6
+s101.4
+j102.3
+f103.2
+d104.3
+k105.3
+f106.4
+j106.4
+k106.5
+k107.8
+j107.9
+j109.4
+k109.4
+f110.4
+d111.8
+f113.4
+j115.0
+k116.5
+s118.5
+s122.6
+j126.6
+f128.6
+d130.6
+k132.4
+j134.4
+f134.4
+s134.4
+f135.7
+s135.7
+j135.7
+f136.8
+s136.8
+j136.8
+k142.4
+d142.4
+d143.9
+k143.9
+d144.9
+k144.9
+j150.4
+f150.4
+s150.4
+j151.9
+s151.9
+f151.9
+j152.9
+s153.0
+f153.0
+k158.5
+j158.5
+s158.5
+k160.0
+j160.1
+s160.1
+k161.1
+j161.1
+s161.1
+s167.1
+s168.1
+s169.1
+s170.2
+s171.2
s173.0
-s174.0
-s175.0
-s176.0
-f176.0
-s177.0
-s178.0
-s179.0
-d180.0
-s180.0
-d181.0
-s181.1
-f182.0
-s182.1
-f183.1
-s183.1
-d184.1
-s184.2
-s185.1
-s186.1
-s187.0
-j188.1
-j189.2
-j190.2
-j191.1
-f192.2
-f193.2
-f194.2
-f195.2
-k196.3
-k197.2
-k198.3
-k199.3
-d200.1
-d204.4
-d205.3
-d206.3
-d207.3
-j208.3
-j210.5
-j212.5
-j213.5
-j214.5
-j215.6
-k216.5
-k217.4
-d224.6
-d225.6
-d226.6
-d227.5
-f228.5
-f229.5
-f230.7
-f231.6
-s232.7
-j234.7
-k236.7
-f238.9
-d240.7
-d242.8
-d244.8
-d246.8
-s248.8
-s250.8
-s252.9
-s255.0
-j257.0
-j259.0
-j261.0
-j263.0
-k265.0
-k267.1
-k269.1
-k271.2
-s273.2
-s274.2
-s275.2
-s276.2
-f277.2
-j277.7
-d279.3
-k279.3
-f281.2
-j281.2
-s283.2
-s284.2
-s285.3
-s286.3
-s287.4
-s288.4
-f289.4
-j290.4
-d291.4
-k292.5
-k293.3
-d293.9
-k294.9
-d295.6
-k296.5
-s297.4
-s298.4
-s299.5
-s300.4
-j303.3
-f303.3
-k305.4
-d305.4
-f311.5
-j311.5
-s313.4
-s315.5
-d315.5
-k315.5
-s317.5
-d317.5
-k317.5
-s318.5
-d318.5
-k318.6
-d319.6
-s319.6
-k319.6
-s320.6
-d320.6
-k320.7
-s321.7
-d321.7
-k321.8
-s322.7
-d322.7
-k322.7
-s323.8
-d323.8
-k323.8
-s324.7
-d324.7
-k324.8
-j325.8
-f326.9
-j327.9
-f328.8
-j333.2
-j333.9
-j334.9
-j335.9
-j337.0
-j337.9
-j339.0
-j340.0
-j341.0
-f341.8
-f343.0
-f344.1
-f345.1
-s346.0
-s346.9
-s348.0
-s349.1
-d350.0
-d351.0
-d353.1
-f354.1
-f355.1
-f356.2
-f357.1
-s358.1
-s359.2
-s360.2
-s361.1
-j362.2
-j363.3
-j364.3
-j365.2
-k366.3
-k367.3
-k368.3
-k369.3
-s370.3
-s371.4
-s372.4
-s373.6
-j374.6
-j375.4
-j376.4
-j377.4
-d386.7
-d387.6
-d388.6
-d389.6
-f390.6
-f391.6
-f392.5
-f393.6
-j394.6
-j395.6
-j396.6
-j397.6
-k398.6
-k399.6
-k400.6
-k401.6
-s402.7
-s403.8
-s404.8
-s405.7
-d406.8
-d407.9
-d408.9
-d409.8
-f410.7
-f411.8
-f412.8
-f413.8
-s414.7
-s415.8
-s416.8
-s417.9
-j418.8
-j419.9
-j420.8
-j421.8
-k422.8
-k423.8
-k424.8
-k425.8
-d426.8
-d427.8
-d428.9
-d429.9
-f431.1
-f432.1
-f433.1
-f434.0
-s435.1
-s436.1
-s437.2
-s438.1
-j439.2
-j440.2
-j441.3
-j442.2
-s443.3
-f445.3
-j451.2
-k452.9
-d461.4
-f463.0
-s467.6
-j469.5
-k471.0
-j475.6
-f477.5
-d483.7
-f485.7
-s491.7
-s492.7
-s493.8
-s494.8
-s495.8
-s496.9
-s497.9
-s498.9
-j499.9
-j500.9
-j502.0
-j503.0
-j504.0
-j505.0
-j506.0
-j507.0
-k508.0
-k508.9
-k510.0
-k510.9
-k512.0
-k513.0
-k514.1
-k515.1
-f516.0
-f517.2
-f518.1
-f519.1
-d520.1
-d521.0
-d522.0
-d523.0
-s528.3
-s529.3
-s530.3
-s531.3
-s532.3
-s533.2
-f534.3
-f535.3
-f536.4
-f537.4
-f538.4
-f539.4
-d540.3
-d541.4
-d542.3
-d543.4
-j544.4
-j545.4
-j546.5
-j547.5
-k548.4
-k549.5
-k550.6
-k551.5
-j552.5
-j553.6
-j554.6
-j555.5
-k556.6
-k557.5
-k558.5
-k559.6
-f560.6
-f561.6
-f562.7
-f563.6
-d564.6
-d565.6
-d566.7
-d567.8
-s568.7
-s569.8
-s570.8
-s571.7
-j572.8
-j573.8
-j574.8
-j575.8
-k576.8
-k577.9
-k578.9
-k579.8
-j580.9
-j581.9
-j582.9
-j583.9
-f584.9
-f585.9
-f586.9
-f587.8
-s588.8
-s589.9
-s590.9
-s591.9
-d593.0
-d594.0
-d595.0
-d596.0
-f597.0
-f598.0
-f599.1
-f600.1
-s601.1
-s602.1
-s603.1
-s604.0
-j605.0
-j606.0
-j607.1
-j608.1
-k609.1
-k610.1
-k611.1
-k612.1
-s613.2
-s614.2
-s615.1
-s616.1
-d617.0
-d618.1
-d619.1
-d620.1
-j625.7
-j627.3
-j628.8
-f629.8
-f634.0
-f635.4
-f636.9
-f637.9
-s641.5
-s643.0
-s644.4
-s645.3
-s649.4
-s649.9
-s650.9
-s652.0
-s652.5
-s653.4
+s174.3
+s175.3
+s176.3
+s177.4
+s178.3
+f179.3
+s179.3
+s180.3
+d181.3
+s181.4
+s182.4
+s183.4
+s184.3
+s185.4
+s186.4
+s187.4
+s188.4
+s189.4
+s190.5
+s191.4
+s192.4
+s193.5
+s194.5
+s195.6
+s196.6
+d197.6
+s197.6
+s198.6
+f199.5
+s199.6
+s200.5
+s201.5
+s202.6
+d203.6
+s203.7
+s204.6
+s205.7
+s206.7
+j207.7
+s207.7
+s208.7
+s209.7
+s210.7
+k211.7
+d213.8
+f215.7
+j216.7
+k217.7
+d218.8
+f219.8
+j220.8
+k221.8
+d222.8
+f223.8
+j224.8
+k225.9
+s226.9
+j227.9
+k228.8
+d229.8
+f230.9
+d232.0
+k232.0
+j232.1
+d234.0
+f235.0
+f236.2
+f237.1
+j238.0
+k239.0
+d240.0
+d241.0
+d242.2
+d243.1
+k244.1
+k245.2
+k246.2
+k247.2
+j248.1
+j249.1
+j250.1
+j251.1
+s252.2
+s253.3
+s254.3
+s255.3
+d256.2
+d257.3
+d258.4
+d259.3
+s260.3
+s261.3
+s262.3
+s263.4
+j264.3
+j265.3
+k266.3
+d266.3
+s267.3
+s268.3
+s269.3
+s270.6
+s271.5
+d272.5
+j272.5
+s273.3
+s274.6
+s275.6
+k276.5
+d276.5
+s277.4
+s278.7
+s279.6
+j280.5
+f280.6
+s281.5
+s282.6
+s283.6
+j284.6
+f284.6
+s285.6
+s286.6
+s287.7
+j288.7
+f288.7
+s288.7
+s289.6
+s290.8
+s291.8
+k292.6
+s292.6
+s293.6
+s294.7
+s295.8
+j296.6
+s296.6
+s297.7
+s298.7
+s299.7
+s300.7
+k300.7
+s301.7
+s302.7
+s303.6
+s304.9
+s305.8
+k310.9
+s310.9
+d310.9
+f313.0
+j313.0
+k314.9
+d314.9
+j317.0
+f317.0
+j318.0
+f318.0
+d319.0
+k319.0
+j320.0
+f320.0
+s321.0
+k322.0
+d322.0
+f323.1
+j323.1
+s324.0
+s325.0
+s326.1
+s327.1
+s328.1
+j329.0
+f329.0
+j337.2
+k337.3
+s337.3
+f339.4
+d339.4
+s339.4
+j341.3
+j342.3
+j343.4
+j344.4
+f345.2
+f347.4
+f349.3
+f350.4
+f351.4
+f352.5
+j353.4
+k353.4
+f353.5
+f354.6
+f355.6
+f356.5
+d357.5
+d358.5
+d359.5
+d360.5
+s361.5
+s362.6
+s363.6
+s364.5
+s365.6
+s366.5
+s367.6
+s368.7
+j369.6
+d370.6
+k371.7
+f372.8
+j373.8
+k374.7
+f375.7
+j376.6
+d377.6
+k377.7
+s378.6
+s379.7
+s380.8
+s381.6
+d381.6
+k381.6
+s382.7
+s383.8
+s384.9
+s385.8
+f385.9
+j385.9
+s387.0
+s388.0
+s388.8
+s390.0
+s390.9
+s391.8
+s392.8
+d393.8
+f394.8
+j395.9
+k396.3
+d397.9
+f399.4
+j401.0
+s401.9
+s403.0
+s404.1
+s405.1
+s406.1
+s407.3
+s408.2
+s409.1
+d410.1
+f411.1
+j412.2
+k413.1
+f414.2
+d415.0
+j416.1
+k417.2
+f418.4
+d419.2
+k420.1
+j420.6
+k421.6
+j422.1
+f423.1
+d423.6
+k424.7
+j425.0
+s426.1
+s427.2
+d428.3
+k428.3
+s428.3
+s429.9
+s431.3
+s432.5
+s433.4
+s434.5
+s435.5
+s436.4
+d436.4
+j436.5
+s437.6
+s438.4
+f438.8
+s441.4
+s442.5
+d442.5
+k442.5
+s444.5
+f444.5
+j444.6
+s445.7
+s446.6
+s447.5
+s448.6
+s449.5
+s450.6
+d450.6
+k450.6
+s451.7
+s452.5
+f452.5
+j452.6
+s453.6
+s454.6
+s455.5
+s456.7
+s457.6
+s458.6
+s459.6
+s460.6
+k460.7
+d460.7
+s461.7
+s462.2
+f462.3
+j462.4
+s463.3
+s464.6
+s468.7
+d468.8
+k468.8
+j470.3
+f470.3
+s470.3
+s474.8
+d474.8
+k474.9
+j476.8
+f476.8
+d482.8
+s482.9
+k482.9
+f484.8
+s484.8
+j484.8
+s498.8
+d498.8
+k498.8
+j507.2
+s507.2
+f507.2
+k511.4
+k512.3
+k513.4
+s517.3
+s519.5
+s520.4
+s521.4
+s522.4
+d523.4
+s524.4
+s525.5
+s526.5
+s527.6
+s528.6
+s529.6
+s530.6
+s531.7
+s532.7
+s533.7
+s534.7
+s535.6
+s536.8
+s537.8
+s538.8
+d539.6
+s539.7
+s540.6
+s541.6
+f541.7
+s542.6
+s543.7
+s544.7
+s545.8
+s546.8
+j547.7
+s547.8
+s548.8
+k549.4
+s550.0
+s550.9
+s552.0
+s553.0
+s553.9
+s554.9
+d555.8
+s555.8
+s556.8
+s557.9
+s559.0
+f559.8
+s560.0
+s560.9
+s562.0
+s563.0
+d564.0
+s564.0
+s565.0
+s566.1
+s567.2
+d568.1
+s568.2
+s569.1
+s570.1
+s571.0
+f572.1
+s572.1
+s573.0
+s574.1
+s575.2
+j576.1
+s576.1
+s577.1
+s578.2
+s579.1
+s580.2
+k580.2
+s581.3
+s582.2
+s583.3
+k584.2
+j584.2
+s584.3
+s585.1
+s586.3
+s587.3
+d588.2
+k588.3
+j588.3
+s589.4
+s590.3
+s591.4
+s592.3
+s593.5
+s594.5
+s595.4
+j596.4
+s596.4
+s597.3
+s598.4
+s599.5
+s600.4
+s601.5
+s602.5
+s603.5
+k604.4
+s604.5
+s605.4
+s606.5
+s607.4
+s608.5
+s609.6
+s610.5
+s611.6
+s612.5
+d612.5
+s613.5
+s614.6
+s615.5
+s616.5
+s617.5
+s618.5
+s619.5
+k629.5
+j630.3
+k631.1
+j632.0
+k633.0
+j633.9
+k635.1
+j636.0
diff --git a/levels/testLevel/easy/leaderboard.json b/levels/testLevel/easy/leaderboard.json
index 1d14274..7c2b5bc 100644
--- a/levels/testLevel/easy/leaderboard.json
+++ b/levels/testLevel/easy/leaderboard.json
@@ -1,17 +1 @@
-[
- {
- "date": "today",
- "score": 100,
- "name": "tbone"
- },
- {
- "date": "today",
- "score": 0,
- "name": "zbone"
- },
- {
- "date": "2023-05-30",
- "score": 0,
- "name": "greg"
- }
-] \ No newline at end of file
+[{"date":"today","score":100,"name":"tbone"},{"date":"today","score":0,"name":"zbone"},{"date":"2023-05-30","score":0,"name":"greg"},{"date":"2023-06-04","score":39600,"name":"the GOOOOATT"}] \ No newline at end of file
diff --git a/src/assets/fairyfountain.wav b/src/assets/fairyfountain.wav
new file mode 100644
index 0000000..b6fea56
--- /dev/null
+++ b/src/assets/fairyfountain.wav
Binary files differ
diff --git a/src/devmenu/DebugMenu.java b/src/devmenu/DebugMenu.java
index 19fc8e1..654d15b 100644
--- a/src/devmenu/DebugMenu.java
+++ b/src/devmenu/DebugMenu.java
@@ -32,7 +32,7 @@ public class DebugMenu
Button testVol = new Button();
testVol.setText("print volumes");
- testVol.setOnAction(e -> System.out.println("sfx:"+Driver.settingsController.effectsVol+" msc:"+Driver.settingsController.musicVol));
+ testVol.setOnAction(e -> System.out.println("setc:"+Driver.settingsController.effectsVol+" sndc:"+Driver.soundController.songMediaPlayer.getVolume()));
primaryPane.getChildren().addAll(wallpaperTest,wallpaperTest2,wallpaperTest3,testVol);
diff --git a/src/devmenu/DiffEditor.java b/src/devmenu/DiffEditor.java
index e2ce5d8..bf745e8 100644
--- a/src/devmenu/DiffEditor.java
+++ b/src/devmenu/DiffEditor.java
@@ -3,6 +3,10 @@ package devmenu;
import java.io.FileNotFoundException;
import java.io.UnsupportedEncodingException;
+import gui.Driver;
+import gui.LevelSelector;
+import gui.LevelSurround;
+import gui.MainMenu;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
@@ -44,7 +48,11 @@ public class DiffEditor
}
});
- Button editScores = new Button("Edit leaderboard");
+ Button editScores = new Button("Clear leaderboard");
+ editScores.setOnAction(e -> diff.getLeaderboard().clear());
+
+ Button playLevel = new Button("Launch level");
+ playLevel.setOnAction(e -> Driver.setMenu(new LevelSurround(diff.level, diff, new MainMenu())));
Button save = new Button("Save");
save.setOnAction(e -> { //assigns text feilds to values
@@ -55,7 +63,7 @@ public class DiffEditor
});
VBox main = new VBox();
- main.getChildren().addAll(folderNameLabel,folderName,titleLabel,title,bpmLabel,bpm,numBeatsLabel,numBeats,editNotes,editScores,save);
+ main.getChildren().addAll(folderNameLabel,folderName,titleLabel,title,bpmLabel,bpm,numBeatsLabel,numBeats,editNotes,editScores,playLevel,save);
Scene scene = new Scene(main);
primaryStage.setScene(scene);
primaryStage.show();
diff --git a/src/devmenu/NotesEditor.java b/src/devmenu/NotesEditor.java
index c3ce1fa..a0aa26a 100644
--- a/src/devmenu/NotesEditor.java
+++ b/src/devmenu/NotesEditor.java
@@ -9,6 +9,7 @@ import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import gameplay.Timer;
+import gui.Driver;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.input.KeyCode;
@@ -20,16 +21,13 @@ import javafx.scene.media.MediaView;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import main.Difficulty;
-import sound.AudioFilePlayer;
public class NotesEditor
{
Text help;
- String t1 = "Press Start to begin recording. Use the same keys.";
+ String t1 = "Press Start to begin recording. Use the same keys. Note: existing notes will be overwitten.";
String t2 = "Now recording. Press Stop or ESC to finish";
- MediaPlayer mediaPlayer;
Difficulty diff;
- AudioFilePlayer music;
Timer timer;
PrintWriter writer;
public NotesEditor(Difficulty diff) throws FileNotFoundException, UnsupportedEncodingException
@@ -37,7 +35,6 @@ public class NotesEditor
this.diff = diff;
help = new Text(t1);
-
Text cur = new Text("-----");
Button start = new Button("Start");
@@ -49,8 +46,6 @@ public class NotesEditor
stop.setFocusTraversable(false);
Media song = new Media(diff.level.song.toURI().toString());
- mediaPlayer = new MediaPlayer(song);
- new MediaView(mediaPlayer);
VBox main = new VBox();
main.getChildren().addAll(help,cur,start,stop);
@@ -94,7 +89,7 @@ public class NotesEditor
private void start()
{
- mediaPlayer.play();
+ Driver.soundController.playSong(diff.level.song);
timer = new Timer(diff.bpm);
help.setText(t2);
}
@@ -102,7 +97,7 @@ public class NotesEditor
private void stop()
{
try {
- mediaPlayer.stop();
+ Driver.soundController.endSong();
diff.numBeats = (int)timer.time();
timer = null;
writer.close();
diff --git a/src/gameplay/SongPlayer.java b/src/gameplay/SongPlayer.java
index 985e5fb..3e465bd 100644
--- a/src/gameplay/SongPlayer.java
+++ b/src/gameplay/SongPlayer.java
@@ -3,7 +3,6 @@ package gameplay;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
-import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
@@ -20,15 +19,11 @@ import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
-import javafx.scene.media.Media;
-import javafx.scene.media.MediaPlayer;
-import javafx.scene.media.MediaView;
import javafx.scene.paint.Color;
import javafx.animation.*;
import javafx.util.*;
import main.Difficulty;
import main.ScoreController;
-import sound.AudioFilePlayer;
@@ -111,15 +106,9 @@ public class SongPlayer extends Pane {
}
}
- public SongPlayer() {
- }
-
public SongPlayer(main.Level lvl, Difficulty d, Pane p, ScoreController cntrl) {
- gui.Driver.mediaPlayer.stop();
- Media song = new Media(Paths.get(lvl.song.getPath()).toUri().toString());
- gui.Driver.mediaPlayer = new MediaPlayer(song);
- new MediaView(gui.Driver.mediaPlayer);
+ Driver.soundController.playSong(lvl.song);
if (lvl.background != null) {
Driver.setBackground(lvl.background.getUrl());
@@ -129,7 +118,7 @@ public class SongPlayer extends Pane {
difficulty = d;
pane = p;
- System.out.println(d.bpm + " " + d.numBeats);
+ //System.out.println(d.bpm + " " + d.numBeats);
songLength = d.numBeats;
timer = new Timer(bpm); //Sets the timer's bpm to that of the song
@@ -157,7 +146,7 @@ public class SongPlayer extends Pane {
* The keyboard detection for the game: when a key is pressed it
* calls the checkNote() method for the corresponding lane
*/
- System.out.println(timer.time());
+ //System.out.println(timer.time());
if (e.getCode() == KeyCode.D) {
checkNote(dLane, dButton);
}
@@ -174,7 +163,7 @@ public class SongPlayer extends Pane {
checkNote(kLane, kButton);
}
//prints the user's current score and combo, for debugging purposes
- System.out.println("Score: " + scoreCounter.getScore() + "\nCombo: " + scoreCounter.getCombo() + "\n");
+ //System.out.println("Score: " + scoreCounter.getScore() + "\nCombo: " + scoreCounter.getCombo() + "\n");
});
buttonBox.setAlignment(Pos.CENTER); //puts the buttons in the center of the screen
@@ -264,7 +253,6 @@ public class SongPlayer extends Pane {
cancel();
}
if (timer.time() > 0.0) {
- gui.Driver.mediaPlayer.play();
}
}
};
@@ -284,12 +272,7 @@ public class SongPlayer extends Pane {
public void cancel() {
gui.Driver.setBackground("assets/forest.png");
gameLoop.stop();
- gui.Driver.mediaPlayer.stop();
- Media song = new Media(Paths.get("src/assets/MenuMusicPlaceholder.wav").toUri().toString());
- gui.Driver.mediaPlayer = new MediaPlayer(song);
- gui.Driver.mediaPlayer.setCycleCount(Integer.MAX_VALUE);
- new MediaView(gui.Driver.mediaPlayer);
- gui.Driver.mediaPlayer.play();
+ Driver.soundController.endSong();
}
/**
@@ -326,31 +309,34 @@ public class SongPlayer extends Pane {
* @return 2 for a perfect hit, 1 for a good hit, 0 for a miss, and -1 if there are no notes to hit
*/
private int checkNote(ArrayList<Block> lane, TButton button) {
- double distance = distanceToGoal(lane.get(getClosestNote(lane)));
- if (lane.size() > 0 && distance < super.getHeight() / 3) {
-
- FillTransition ft = new FillTransition(Duration.millis(500), button);
- ft.setToValue(button.getFillColor());
-
- super.getChildren().removeAll(lane.get(getClosestNote(lane)));
- lane.remove(lane.get(getClosestNote(lane)));
- if (distance < super.getHeight() / 16) {
- ft.setFromValue(Color.WHITE);
- ft.play();
- scoreCounter.perfect();
- return 2;
- }
- if (distance < super.getHeight() / 5) {
- ft.setFromValue(Color.CYAN);
+ if (lane.size() != 0)
+ {
+ double distance = distanceToGoal(lane.get(getClosestNote(lane)));
+ if (lane.size() > 0 && distance < super.getHeight() / 3) {
+
+ FillTransition ft = new FillTransition(Duration.millis(500), button);
+ ft.setToValue(button.getFillColor());
+
+ super.getChildren().removeAll(lane.get(getClosestNote(lane)));
+ lane.remove(lane.get(getClosestNote(lane)));
+ if (distance < super.getHeight() / 16) {
+ ft.setFromValue(Color.WHITE);
+ ft.play();
+ scoreCounter.perfect();
+ return 2;
+ }
+ if (distance < super.getHeight() / 5) {
+ ft.setFromValue(Color.CYAN);
+ ft.play();
+ scoreCounter.good();
+ return 1;
+ }
+ ft.setFromValue(Color.RED);
ft.play();
- scoreCounter.good();
- return 1;
+ scoreCounter.miss();
+ return 0;
}
- ft.setFromValue(Color.RED);
- ft.play();
- scoreCounter.miss();
- return 0;
- }
+ }
return -1;
}
diff --git a/src/gui/Driver.java b/src/gui/Driver.java
index c708d80..00a71cf 100644
--- a/src/gui/Driver.java
+++ b/src/gui/Driver.java
@@ -21,8 +21,7 @@ import javafx.stage.Stage;
import javafx.util.Duration;
import main.LevelController;
import main.SettingsController;
-import sound.AudioFilePlayer;
-import sound.ShortAudioPlayer;
+import main.SoundController;
import java.nio.file.Paths;
@@ -40,15 +39,12 @@ import gameplay.SongPlayer;
public class Driver extends Application
-{
- public static ShortAudioPlayer menuFx = new ShortAudioPlayer();
-
- public static MediaPlayer mediaPlayer;
-
+{
public static Stage primaryStage;
static Pane primaryPane = new Pane();
public static SettingsController settingsController = new SettingsController();
+ public static SoundController soundController = new SoundController();
public static LevelController levelController = new LevelController();
public static DebugMenu debug = new DebugMenu();
@@ -67,15 +63,11 @@ public class Driver extends Application
@Override
public void start(Stage newPrimaryStage)
{
- Media song = new Media(Paths.get("src/assets/MenuMusicPlaceholder.wav").toUri().toString());
- mediaPlayer = new MediaPlayer(song);
- new MediaView(mediaPlayer);
- mediaPlayer.setCycleCount(Integer.MAX_VALUE);
- mediaPlayer.play();
+
primaryStage = newPrimaryStage;
- Scene primaryScene = new Scene(primaryPane, 800, 600);
+ Scene primaryScene = new Scene(primaryPane, 800,600);
primaryScene.getStylesheets().add("gui/style.css");
primaryStage.setScene(primaryScene);
diff --git a/src/gui/GameOver.java b/src/gui/GameOver.java
index e504437..f5b46ec 100644
--- a/src/gui/GameOver.java
+++ b/src/gui/GameOver.java
@@ -70,7 +70,7 @@ public class GameOver extends Pane
save.setOnAction(new EventHandler<ActionEvent>() { //this is the same as the "e ->" thing but it allows more than one line to be added
@Override
public void handle(ActionEvent event) {
- Driver.menuFx.play("src/assets/MenuForward.wav");
+ Driver.soundController.playSfx("forward");
save.setDisable(true);
name.setDisable(true);
diff.addToLeaderboard(name.getText(), score2);
@@ -91,14 +91,14 @@ public class GameOver extends Pane
Button exit = new Button();
exit.setText("Back");
exit.setOnAction(e -> {
- Driver.menuFx.play("src/assets/MenuBackward.wav");
+ Driver.soundController.playSfx("backward");
Driver.setMenu(lastMenu);
});
Button replay = new Button();
replay.setText("Replay");
replay.setOnAction(e -> {
- Driver.menuFx.play("src/assets/MenuForward.wav");
+ Driver.soundController.playSfx("forward");
Driver.setMenu(new LevelSurround(level, diff, lastMenu));
});
diff --git a/src/gui/Leaderboard.java b/src/gui/Leaderboard.java
index 4c7a1b5..39df409 100644
--- a/src/gui/Leaderboard.java
+++ b/src/gui/Leaderboard.java
@@ -50,7 +50,7 @@ public class Leaderboard extends Pane
Button exit = new Button();
exit.setText("Back");
exit.setOnAction(e -> {
- Driver.menuFx.play("src/assets/MenuBackward.wav");
+ Driver.soundController.playSfx("backward");
Driver.setMenu(prev);
});
diff --git a/src/gui/LevelDetails.java b/src/gui/LevelDetails.java
index f9239e7..af55b9c 100644
--- a/src/gui/LevelDetails.java
+++ b/src/gui/LevelDetails.java
@@ -96,13 +96,13 @@ public class LevelDetails extends VBox
}
play.disableProperty().bind(diffToggleGroup.selectedToggleProperty().isNull()); //disables play button when no difficulty is selected
play.setOnAction(e -> {
- Driver.menuFx.play("src/assets/MenuForward.wav");
+ Driver.soundController.playSfx("forward");
Driver.setMenu(new LevelSurround(level, (Difficulty)diffToggleGroup.getSelectedToggle().getUserData(), Driver.getMenu()));
});
leaderboard.disableProperty().bind(diffToggleGroup.selectedToggleProperty().isNull());
leaderboard.setOnAction(e -> {
- Driver.menuFx.play("src/assets/MenuForward.wav");
+ Driver.soundController.playSfx("forward");
Driver.setMenu(new Leaderboard(level, (Difficulty)diffToggleGroup.getSelectedToggle().getUserData(), Driver.getMenu()));
});
diff --git a/src/gui/LevelSelector.java b/src/gui/LevelSelector.java
index 2a95b6c..6fd6aca 100644
--- a/src/gui/LevelSelector.java
+++ b/src/gui/LevelSelector.java
@@ -44,7 +44,7 @@ public class LevelSelector extends Pane
Button exit = new Button();
exit.setText("Back");
exit.setOnAction(e -> {Driver.setMenu(new MainMenu());
- Driver.menuFx.play("src/assets/MenuBackward.wav");
+ Driver.soundController.playSfx("backward");
});
VBox leftBox = new VBox();
diff --git a/src/gui/LevelSurround.java b/src/gui/LevelSurround.java
index c89ef6d..3739879 100644
--- a/src/gui/LevelSurround.java
+++ b/src/gui/LevelSurround.java
@@ -35,15 +35,12 @@ public class LevelSurround extends Pane
exit.setText("Back");
exit.setOnAction(e -> {
Driver.setMenu(prev);
- Driver.menuFx.play("src/assets/MenuBackward.wav");
+ Driver.soundController.playSfx("backward");
game.cancel();
});
- Button pause = new Button();
- pause.setText("Pause");
-
HBox buttonBox = new HBox();
- buttonBox.getChildren().addAll(exit,pause);
+ buttonBox.getChildren().addAll(exit);
buttonBox.setAlignment(Pos.TOP_LEFT);
buttonBox.setSpacing(10);
diff --git a/src/gui/MainMenu.java b/src/gui/MainMenu.java
index 56a0a05..84a7508 100644
--- a/src/gui/MainMenu.java
+++ b/src/gui/MainMenu.java
@@ -32,19 +32,19 @@ public class MainMenu extends Pane
Button play = new Button();
play.setText("Play");
play.setOnAction(e -> {Driver.setMenu(new LevelSelector());
- Driver.menuFx.play("src/assets/MenuForward.wav");
+ Driver.soundController.playSfx("forward");
});
Button settings = new Button();
settings.setText("Settings");
settings.setOnAction(e -> {Driver.setMenu(new Settings());
- Driver.menuFx.play("src/assets/MenuForward.wav");
+ Driver.soundController.playSfx("forward");
});
Button exit = new Button();
exit.setText("Quit");
exit.setOnAction(e -> {Driver.quit();
- Driver.menuFx.play("src/assets/MenuBackward.wav");
+ Driver.soundController.playSfx("backward");
});
VBox buttonBox = new VBox();
diff --git a/src/gui/Settings.java b/src/gui/Settings.java
index 4e82056..2144e16 100644
--- a/src/gui/Settings.java
+++ b/src/gui/Settings.java
@@ -25,9 +25,9 @@ public class Settings extends Pane
musicText.getStyleClass().add("t3");
Slider musicSlider = new Slider();
- musicSlider.setMax(100);
- musicSlider.setMin(0);
musicSlider.valueProperty().bindBidirectional(Driver.settingsController.musicVol);
+ musicSlider.setMin(0.0);
+ musicSlider.setMax(1.0);
VBox musicBox = new VBox();
musicBox.getChildren().addAll(musicText, musicSlider);
@@ -40,9 +40,9 @@ public class Settings extends Pane
SFXText.getStyleClass().add("t3");
Slider SFXSlider = new Slider();
- SFXSlider.setMax(100);
- SFXSlider.setMin(0);
SFXSlider.valueProperty().bindBidirectional(Driver.settingsController.effectsVol);
+ SFXSlider.setMin(0.0);
+ SFXSlider.setMax(1.0);
VBox SFXBox = new VBox();
SFXBox.getChildren().addAll(SFXText, SFXSlider);
@@ -59,7 +59,7 @@ public class Settings extends Pane
fullscreen.getStyleClass().remove("toggle-button");
fullscreen.getStyleClass().add("button");
fullscreen.setOnAction(e -> {
- Driver.menuFx.play("src/assets/MenuForward.wav");
+ Driver.soundController.playSfx("forward");
Driver.primaryStage.setFullScreen(!Driver.primaryStage.isFullScreen());
});
@@ -74,14 +74,14 @@ public class Settings extends Pane
Button levelEdit = new Button("Level Utility");
levelEdit.setOnAction(e -> {
- Driver.menuFx.play("src/assets/MenuForward.wav");
+ Driver.soundController.playSfx("forward");
new devmenu.LevelList();
});
Button devMenu = new Button();
devMenu.setText("Debug Menu");
devMenu.setOnAction(e -> {
- Driver.menuFx.play("src/assets/MenuForward.wav");
+ Driver.soundController.playSfx("forward");
Driver.debug.show();
});
@@ -101,7 +101,7 @@ public class Settings extends Pane
Button exit = new Button();
exit.setText("Back");
exit.setOnAction(e -> {
- Driver.menuFx.play("src/assets/MenuBackward.wav");
+ Driver.soundController.playSfx("backward");
Driver.setMenu(new MainMenu());
});
diff --git a/src/main/Level.java b/src/main/Level.java
index a173191..eb1d92c 100644
--- a/src/main/Level.java
+++ b/src/main/Level.java
@@ -76,7 +76,7 @@ public class Level
System.out.println(thisDir+" is missing background.png, though it is not required");
}
- if (! new File(thisDir, "preview.png").exists())
+ if (new File(thisDir, "preview.png").exists())
{
preview = new Image(new File(thisDir,"preview.png").toURI().toString());
}
diff --git a/src/main/ScoreController.java b/src/main/ScoreController.java
index d2606a4..54dd960 100644
--- a/src/main/ScoreController.java
+++ b/src/main/ScoreController.java
@@ -1,8 +1,8 @@
package main;
+import gui.Driver;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
-import sound.ShortAudioPlayer;
public class ScoreController{
@@ -12,8 +12,6 @@ public class ScoreController{
public StringProperty scoreProperty = new SimpleStringProperty("0");
public StringProperty comboProperty = new SimpleStringProperty("0");
- sound.ShortAudioPlayer fx = new ShortAudioPlayer();
-
/**
* Called when the user performs a perfect hit
*/
@@ -40,7 +38,7 @@ public class ScoreController{
* Called when the user misses a note
*/
public void miss() {
- fx.play("src/assets/Miss.wav");
+ Driver.soundController.playSfx("miss");
combo = 0;
comboMultiplier = 1;
scoreProperty.setValue(score+"");
@@ -52,7 +50,7 @@ public class ScoreController{
* Increments the combo by one
*/
private void combo() {
- fx.play("src/assets/Hitsound.wav");
+ Driver.soundController.playSfx("hit");
combo++;
if (combo == 2) {
diff --git a/src/main/SettingsController.java b/src/main/SettingsController.java
index 4bd2b24..36fda40 100644
--- a/src/main/SettingsController.java
+++ b/src/main/SettingsController.java
@@ -9,12 +9,13 @@ import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
+import javafx.beans.property.SimpleDoubleProperty;
import javafx.beans.property.SimpleIntegerProperty;
public class SettingsController
{
- public SimpleIntegerProperty effectsVol = new SimpleIntegerProperty(0);
- public SimpleIntegerProperty musicVol = new SimpleIntegerProperty(0);
+ public SimpleDoubleProperty effectsVol = new SimpleDoubleProperty(1);
+ public SimpleDoubleProperty musicVol = new SimpleDoubleProperty(1);
private JSONObject settings;
public void read() throws ParseException
@@ -27,8 +28,8 @@ public class SettingsController
settings = (JSONObject)(obj); //converts read object to a JSONObject
- effectsVol.set((int) settings.get("effectsVol"));
- musicVol.set((int) settings.get("musicVol"));
+ effectsVol.set((double) settings.get("effectsVol"));
+ musicVol.set((double) settings.get("musicVol"));
}
catch (FileNotFoundException e)
{
diff --git a/src/main/SoundController.java b/src/main/SoundController.java
new file mode 100644
index 0000000..0d2061c
--- /dev/null
+++ b/src/main/SoundController.java
@@ -0,0 +1,69 @@
+package main;
+
+import java.io.File;
+import java.util.HashMap;
+
+import gui.Driver;
+import javafx.scene.media.Media;
+import javafx.scene.media.MediaPlayer;
+
+public class SoundController
+{
+ public MediaPlayer songMediaPlayer;
+ public MediaPlayer sfxMediaPlayer;
+ private HashMap<String,File> presets = new HashMap<>();
+ private File mainMenuSong = new File("src/assets/MenuMusicPlaceholder.wav");
+
+ public SoundController()
+ {
+ presets.put("forward", new File("src/assets/MenuForward.wav"));
+ presets.put("backward", new File("src/assets/MenuBackward.wav"));
+ presets.put("hit", new File("src/assets/Hitsound.wav"));
+ presets.put("miss", new File("src/assets/Miss.wav"));
+ playMenuSong();
+ }
+
+ public void playSong(File songFile)
+ {
+ if (songMediaPlayer != null)
+ {
+ songMediaPlayer.stop();
+ }
+ Media song = new Media(songFile.toURI().toString());
+ songMediaPlayer = new MediaPlayer(song);
+ songMediaPlayer.volumeProperty().bind(Driver.settingsController.musicVol);
+ songMediaPlayer.play();
+ }
+
+ public void playMenuSong()
+ {
+ playSong(mainMenuSong);
+ songMediaPlayer.setCycleCount(MediaPlayer.INDEFINITE);
+ songMediaPlayer.play();
+ }
+
+ public void endSong()
+ {
+ if (songMediaPlayer != null)
+ {
+ songMediaPlayer.stop();
+ }
+ }
+
+ public void playSfx(File sfxFile)
+ {
+ if (sfxMediaPlayer != null)
+ {
+ sfxMediaPlayer.stop();
+ }
+ Media sound = new Media(sfxFile.toURI().toString());
+ sfxMediaPlayer = new MediaPlayer(sound);
+ sfxMediaPlayer.volumeProperty().bind(Driver.settingsController.effectsVol); //not working yet
+ sfxMediaPlayer.play();
+ }
+
+ public void playSfx(String preset)
+ {
+ playSfx(presets.get(preset));
+ }
+} \ No newline at end of file
diff --git a/src/sound/AudioFilePlayer.java b/src/sound/AudioFilePlayer.java
deleted file mode 100644
index 9425881..0000000
--- a/src/sound/AudioFilePlayer.java
+++ /dev/null
@@ -1,148 +0,0 @@
-package sound;
-
-import java.io.File;
-import java.io.IOException;
-import javax.sound.sampled.AudioInputStream;
-import javax.sound.sampled.AudioSystem;
-import javax.sound.sampled.Clip;
-import javax.sound.sampled.LineUnavailableException;
-import javax.sound.sampled.UnsupportedAudioFileException;
-
-//Java program to play audio files. imports file scanning and various
-//methods from the java audio class in order to do so.
-public class AudioFilePlayer
-{
-
- // to store current position
- Long currentFrame;
- Clip clip;
-
- // current status of clip
- String status;
-
- AudioInputStream audioInputStream;
- private String filePath;
-
- File audioFile;
- // constructor to initialize streams and clip
- public AudioFilePlayer(String newFilePath)
- {
- filePath = newFilePath;
- audioFile = new File(filePath);
- // create AudioInputStream object
- try {
- audioInputStream = AudioSystem.getAudioInputStream(new File(filePath).getAbsoluteFile());
- }
- catch (UnsupportedAudioFileException e) {
- e.printStackTrace();
- }
- catch (IOException e) {
- e.printStackTrace();
- }
-
- // create clip reference
- try {
- clip = AudioSystem.getClip();
- }
- catch (LineUnavailableException e) {
- e.printStackTrace();
- }
-
- // open audioInputStream to the clip
- try {
- clip.open(audioInputStream);
- }
- catch (LineUnavailableException e) {
- e.printStackTrace();
- }
- catch (IOException e) {
- e.printStackTrace();
- }
-
-
- }
-
- // Method to play the audio
- public void play()
- {
- //start the clip
- clip.start();
-
- status = "play";
- }
-
- // Method to pause the audio
- public void pause()
- {
- if (status.equals("paused"))
- {
- System.out.println("audio is already paused");
- return;
- }
- this.currentFrame = this.clip.getMicrosecondPosition();
- clip.stop();
- status = "paused";
- }
-
- // Method to resume the audio
- public void resumeAudio() throws UnsupportedAudioFileException,
- IOException, LineUnavailableException
- {
- if (status.equals("play"))
- {
- System.out.println("Audio is already "+
- "being played");
- return;
- }
- clip.close();
- resetAudioStream();
- clip.setMicrosecondPosition(currentFrame);
- this.play();
- }
-
- // Method to restart the audio
- public void restart() throws IOException, LineUnavailableException,
- UnsupportedAudioFileException
- {
- clip.stop();
- clip.close();
- resetAudioStream();
- currentFrame = 0L;
- clip.setMicrosecondPosition(0);
- this.play();
- }
-
- // Method to stop the audio
- public void stop() throws UnsupportedAudioFileException,
- IOException, LineUnavailableException
- {
- currentFrame = 0L;
- clip.stop();
- clip.close();
- }
-
- // Method to jump over a specific part
- public void jump(long c) throws UnsupportedAudioFileException, IOException,
- LineUnavailableException
- {
- if (c > 0 && c < clip.getMicrosecondLength())
- {
- clip.stop();
- clip.close();
- resetAudioStream();
- currentFrame = c;
- clip.setMicrosecondPosition(c);
- this.play();
- }
- }
-
- // Method to reset audio stream
- public void resetAudioStream() throws UnsupportedAudioFileException, IOException, LineUnavailableException
- {
- audioInputStream = AudioSystem.getAudioInputStream(
- new File(filePath).getAbsoluteFile());
- clip.open(audioInputStream);
- clip.loop(Clip.LOOP_CONTINUOUSLY);
- }
-
-} \ No newline at end of file
diff --git a/src/sound/ShortAudioPlayer.java b/src/sound/ShortAudioPlayer.java
deleted file mode 100644
index 77fb52c..0000000
--- a/src/sound/ShortAudioPlayer.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package sound;
-
-import java.io.File;
-import java.io.IOException;
-
-import javax.sound.sampled.AudioFormat;
-import javax.sound.sampled.AudioInputStream;
-import javax.sound.sampled.AudioSystem;
-import javax.sound.sampled.Clip;
-import javax.sound.sampled.DataLine;
-import javax.sound.sampled.LineEvent;
-import javax.sound.sampled.LineListener;
-import javax.sound.sampled.LineUnavailableException;
-import javax.sound.sampled.UnsupportedAudioFileException;
-
-//Java program to play audio files. imports file scanning and various
-//methods from the java audio class in order to do so.
-public class ShortAudioPlayer implements LineListener
-{
- //indicates whether the playback completes or not
- boolean playCompleted;
- Clip audioClip;
-
- public void play(String audioFilePath)
- {
- File audioFile = new File(audioFilePath);
-
- try
- {
- //creates an audioInput object using the file we
- //declared earlier
- AudioInputStream audioStream = AudioSystem.getAudioInputStream(audioFile);
-
- //gets the format of the audioStream object
- AudioFormat format = audioStream.getFormat();
-
- DataLine.Info info = new DataLine.Info(Clip.class, format);
-
- audioClip = (Clip) AudioSystem.getLine(info);
-
- audioClip.addLineListener(this);
-
- audioClip.open(audioStream);
-
- audioClip.start();
- }
- catch (UnsupportedAudioFileException ex)
- {
- System.out.println("The specified audio file is not supported.");
- ex.printStackTrace();
- }
- catch (LineUnavailableException ex)
- {
- System.out.println("Audio line for playing back is unavailable.");
- ex.printStackTrace();
- }
- catch (IOException ex)
- {
- System.out.println("Error playing the audio file.");
- ex.printStackTrace();
- }
- }
-
-
- /**
- * Listens to the START and STOP events of the audio line.
- */
- @Override
- public void update(LineEvent event)
- {
- //something should prolly go here
- }
-}