Merge branch 'master' into patch-2
This commit is contained in:
commit
dd4ddfd605
@ -9,7 +9,7 @@ install:
|
|||||||
- cd /home/appveyor
|
- cd /home/appveyor
|
||||||
- sudo add-apt-repository ppa:haxe/releases -y
|
- sudo add-apt-repository ppa:haxe/releases -y
|
||||||
- sudo apt update
|
- sudo apt update
|
||||||
- sudo apt install neko tar gcc-multilib g++-multilib -y
|
- sudo apt install neko tar gcc-7 g++-7 gcc-7-multilib g++-7-multilib -y
|
||||||
- wget https://github.com/HaxeFoundation/haxe/releases/download/4.1.5/haxe-4.1.5-linux64.tar.gz
|
- wget https://github.com/HaxeFoundation/haxe/releases/download/4.1.5/haxe-4.1.5-linux64.tar.gz
|
||||||
- mkdir $HAXE_INSTALLDIR
|
- mkdir $HAXE_INSTALLDIR
|
||||||
- tar -xf haxe-4.1.5-linux64.tar.gz -C $HAXE_INSTALLDIR
|
- tar -xf haxe-4.1.5-linux64.tar.gz -C $HAXE_INSTALLDIR
|
||||||
|
@ -36,7 +36,10 @@ install:
|
|||||||
- haxelib git extension-webm https://github.com/KadeDev/extension-webm
|
- haxelib git extension-webm https://github.com/KadeDev/extension-webm
|
||||||
- haxelib run lime rebuild extension-webm windows
|
- haxelib run lime rebuild extension-webm windows
|
||||||
- haxelib install linc_luajit
|
- haxelib install linc_luajit
|
||||||
- haxelib install actuate
|
- haxelib install actuate
|
||||||
|
#- haxelib git extension-webm https://github.com/KadeDev/extension-webm
|
||||||
|
#- haxelib run lime rebuild extension-webm windows
|
||||||
|
#why here's dublicate lmao
|
||||||
- haxelib list
|
- haxelib list
|
||||||
|
|
||||||
# No tests idk lol
|
# No tests idk lol
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
Tutorial:gf:1
|
Tutorial:gf:0
|
||||||
Bopeebo:dad:1
|
Bopeebo:dad:1
|
||||||
Fresh:dad:1
|
Fresh:dad:1
|
||||||
Dad Battle:dad:1
|
Dad Battle:dad:1
|
||||||
|
1
assets/preload/data/test/test.json
Normal file
1
assets/preload/data/test/test.json
Normal file
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 127 KiB After Width: | Height: | Size: 654 KiB |
@ -1,92 +1,45 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<TextureAtlas imagePath="NOTE_assets.png">
|
<TextureAtlas imagePath="NOTE_assets.png">
|
||||||
<!-- Created with Adobe Animate version 21.0.0.35450 -->
|
<!-- Created with Adobe Animate version 21.0.7.42652 -->
|
||||||
<!-- http://www.adobe.com/products/animate.html -->
|
<!-- http://www.adobe.com/products/animate.html -->
|
||||||
<SubTexture name="arrow static instance 10000" x="488" y="238" width="155" height="158"/>
|
<SubTexture name="arrowDOWN0000" x="1147" y="5" width="157" height="154"/>
|
||||||
<SubTexture name="arrow static instance 20000" x="647" y="238" width="157" height="155"/>
|
<SubTexture name="arrowLEFT0000" x="1314" y="5" width="155" height="156"/>
|
||||||
<SubTexture name="arrow static instance 30000" x="808" y="238" width="155" height="157"/>
|
<SubTexture name="arrowRIGHT0000" x="1479" y="5" width="154" height="157"/>
|
||||||
<SubTexture name="arrow static instance 40000" x="323" y="240" width="157" height="154"/>
|
<SubTexture name="arrowUP0000" x="1643" y="5" width="157" height="154"/>
|
||||||
<SubTexture name="blue hold end instance 10000" x="1062" y="452" width="51" height="64"/>
|
<SubTexture name="blue0000" x="5" y="5" width="157" height="154"/>
|
||||||
<SubTexture name="blue hold piece instance 10000" x="1282" y="457" width="51" height="44"/>
|
<SubTexture name="blue hold end0000" x="172" y="5" width="50" height="64"/>
|
||||||
<SubTexture name="blue instance 10000" x="0" y="240" width="158" height="154"/>
|
<SubTexture name="blue hold piece0000" x="232" y="5" width="50" height="44"/>
|
||||||
<SubTexture name="down confirm instance 10000" x="0" y="0" width="240" height="236"/>
|
<SubTexture name="down confirm0000" x="5" y="172" width="244" height="240"/>
|
||||||
<SubTexture name="down confirm instance 10001" x="244" y="0" width="240" height="236"/>
|
<SubTexture name="down confirm0001" x="259" y="172" width="244" height="240"/>
|
||||||
<SubTexture name="down confirm instance 10002" x="1206" y="235" width="221" height="218" frameX="-6" frameY="-12" frameWidth="240" frameHeight="236"/>
|
<SubTexture name="down confirm0002" x="513" y="172" width="214" height="210" frameX="-15" frameY="-15" frameWidth="244" frameHeight="240"/>
|
||||||
<SubTexture name="down confirm instance 10003" x="1206" y="235" width="221" height="218" frameX="-6" frameY="-12" frameWidth="240" frameHeight="236"/>
|
<SubTexture name="down press0000" x="737" y="172" width="142" height="140" frameX="-4" frameY="-2" frameWidth="149" frameHeight="146"/>
|
||||||
<SubTexture name="down press instance 10000" x="805" y="399" width="143" height="139" frameX="-4" frameY="-3" frameWidth="150" frameHeight="146"/>
|
<SubTexture name="down press0001" x="737" y="172" width="142" height="140" frameX="-4" frameY="-2" frameWidth="149" frameHeight="146"/>
|
||||||
<SubTexture name="down press instance 10001" x="805" y="399" width="143" height="139" frameX="-4" frameY="-3" frameWidth="150" frameHeight="146"/>
|
<SubTexture name="down press0002" x="889" y="172" width="149" height="146"/>
|
||||||
<SubTexture name="down press instance 10002" x="1898" y="0" width="150" height="146"/>
|
<SubTexture name="green0000" x="292" y="5" width="157" height="154"/>
|
||||||
<SubTexture name="down press instance 10003" x="1898" y="0" width="150" height="146"/>
|
<SubTexture name="green hold end0000" x="459" y="5" width="50" height="64"/>
|
||||||
<SubTexture name="green hold end instance 10000" x="1007" y="452" width="51" height="64"/>
|
<SubTexture name="green hold piece0000" x="519" y="5" width="50" height="44"/>
|
||||||
<SubTexture name="green hold piece instance 10000" x="1227" y="457" width="51" height="44"/>
|
<SubTexture name="left confirm0000" x="1048" y="172" width="231" height="235"/>
|
||||||
<SubTexture name="green instance 10000" x="162" y="240" width="157" height="154"/>
|
<SubTexture name="left confirm0001" x="1289" y="172" width="231" height="235"/>
|
||||||
<SubTexture name="left confirm instance 10000" x="972" y="0" width="230" height="232"/>
|
<SubTexture name="left confirm0002" x="1530" y="172" width="210" height="214" frameX="-11" frameY="-12" frameWidth="231" frameHeight="235"/>
|
||||||
<SubTexture name="left confirm instance 10001" x="1438" y="233" width="220" height="222" frameX="-5" frameY="-5" frameWidth="230" frameHeight="232"/>
|
<SubTexture name="left press0000" x="1750" y="172" width="140" height="142" frameX="-3" frameY="-3" frameWidth="146" frameHeight="149"/>
|
||||||
<SubTexture name="left confirm instance 10002" x="1438" y="0" width="227" height="229" frameX="-2" frameY="-1" frameWidth="230" frameHeight="232"/>
|
<SubTexture name="left press0001" x="1750" y="172" width="140" height="142" frameX="-3" frameY="-3" frameWidth="146" frameHeight="149"/>
|
||||||
<SubTexture name="left confirm instance 10003" x="1438" y="0" width="227" height="229" frameX="-2" frameY="-1" frameWidth="230" frameHeight="232"/>
|
<SubTexture name="left press0002" x="5" y="422" width="146" height="149"/>
|
||||||
<SubTexture name="left press instance 10000" x="1898" y="449" width="139" height="142" frameX="-4" frameY="-3" frameWidth="146" frameHeight="149"/>
|
<SubTexture name="pruple end hold0000" x="579" y="5" width="50" height="64"/>
|
||||||
<SubTexture name="left press instance 10001" x="1898" y="449" width="139" height="142" frameX="-4" frameY="-3" frameWidth="146" frameHeight="149"/>
|
<SubTexture name="purple0000" x="639" y="5" width="154" height="157"/>
|
||||||
<SubTexture name="left press instance 10002" x="1898" y="150" width="146" height="149"/>
|
<SubTexture name="purple hold piece0000" x="803" y="5" width="50" height="44"/>
|
||||||
<SubTexture name="left press instance 10003" x="1898" y="150" width="146" height="149"/>
|
<SubTexture name="red0000" x="863" y="5" width="154" height="157"/>
|
||||||
<SubTexture name="left press instance 10004" x="1898" y="150" width="146" height="149"/>
|
<SubTexture name="red hold end0000" x="1027" y="5" width="50" height="64"/>
|
||||||
<SubTexture name="left press instance 10005" x="1898" y="150" width="146" height="149"/>
|
<SubTexture name="red hold piece0000" x="1087" y="5" width="50" height="44"/>
|
||||||
<SubTexture name="left press instance 10006" x="1898" y="150" width="146" height="149"/>
|
<SubTexture name="right confirm0000" x="161" y="422" width="237" height="241"/>
|
||||||
<SubTexture name="left press instance 10007" x="1898" y="150" width="146" height="149"/>
|
<SubTexture name="right confirm0001" x="408" y="422" width="237" height="241"/>
|
||||||
<SubTexture name="left press instance 10008" x="1898" y="150" width="146" height="149"/>
|
<SubTexture name="right confirm0002" x="655" y="422" width="210" height="214" frameX="-13" frameY="-14" frameWidth="237" frameHeight="241"/>
|
||||||
<SubTexture name="left press instance 10009" x="1898" y="150" width="146" height="149"/>
|
<SubTexture name="right press0000" x="875" y="422" width="138" height="141" frameX="-3" frameY="-7" frameWidth="148" frameHeight="151"/>
|
||||||
<SubTexture name="left press instance 10010" x="1898" y="150" width="146" height="149"/>
|
<SubTexture name="right press0001" x="875" y="422" width="138" height="141" frameX="-3" frameY="-7" frameWidth="148" frameHeight="151"/>
|
||||||
<SubTexture name="left press instance 10011" x="1898" y="150" width="146" height="149"/>
|
<SubTexture name="right press0002" x="1023" y="422" width="148" height="151"/>
|
||||||
<SubTexture name="left press instance 10012" x="1898" y="150" width="146" height="149"/>
|
<SubTexture name="up confirm0000" x="1181" y="422" width="238" height="234"/>
|
||||||
<SubTexture name="left press instance 10013" x="1898" y="150" width="146" height="149"/>
|
<SubTexture name="up confirm0001" x="1429" y="422" width="238" height="234"/>
|
||||||
<SubTexture name="left press instance 10014" x="1898" y="150" width="146" height="149"/>
|
<SubTexture name="up confirm0002" x="1677" y="422" width="212" height="209" frameX="-13" frameY="-12" frameWidth="238" frameHeight="234"/>
|
||||||
<SubTexture name="left press instance 10015" x="1898" y="150" width="146" height="149"/>
|
<SubTexture name="up press0000" x="1899" y="422" width="144" height="141" frameX="-5" frameY="-4" frameWidth="153" frameHeight="150"/>
|
||||||
<SubTexture name="left press instance 10016" x="1898" y="150" width="146" height="149"/>
|
<SubTexture name="up press0001" x="1899" y="422" width="144" height="141" frameX="-5" frameY="-4" frameWidth="153" frameHeight="150"/>
|
||||||
<SubTexture name="left press instance 10017" x="1898" y="150" width="146" height="149"/>
|
<SubTexture name="up press0002" x="5" y="673" width="153" height="150"/>
|
||||||
<SubTexture name="left press instance 10018" x="1898" y="150" width="146" height="149"/>
|
</TextureAtlas>
|
||||||
<SubTexture name="left press instance 10019" x="1898" y="150" width="146" height="149"/>
|
|
||||||
<SubTexture name="pruple end hold instance 10000" x="1117" y="452" width="51" height="64"/>
|
|
||||||
<SubTexture name="purple hold piece instance 10000" x="1337" y="457" width="51" height="44"/>
|
|
||||||
<SubTexture name="purple instance 10000" x="0" y="398" width="154" height="157"/>
|
|
||||||
<SubTexture name="red hold end instance 10000" x="952" y="452" width="51" height="64"/>
|
|
||||||
<SubTexture name="red hold piece instance 10000" x="1172" y="457" width="51" height="44"/>
|
|
||||||
<SubTexture name="red instance 10000" x="647" y="397" width="154" height="157"/>
|
|
||||||
<SubTexture name="right confirm instance 10000" x="1669" y="0" width="225" height="228" frameX="-1" frameY="-2" frameWidth="228" frameHeight="231"/>
|
|
||||||
<SubTexture name="right confirm instance 10001" x="1669" y="232" width="225" height="228" frameX="-1" frameY="-2" frameWidth="228" frameHeight="231"/>
|
|
||||||
<SubTexture name="right confirm instance 10002" x="1206" y="0" width="228" height="231"/>
|
|
||||||
<SubTexture name="right confirm instance 10003" x="1206" y="0" width="228" height="231"/>
|
|
||||||
<SubTexture name="right press instance 10000" x="469" y="400" width="139" height="142" frameX="-3" frameY="-7" frameWidth="149" frameHeight="152"/>
|
|
||||||
<SubTexture name="right press instance 10001" x="469" y="400" width="139" height="142" frameX="-3" frameY="-7" frameWidth="149" frameHeight="152"/>
|
|
||||||
<SubTexture name="right press instance 10002" x="316" y="398" width="149" height="152"/>
|
|
||||||
<SubTexture name="right press instance 10003" x="316" y="398" width="149" height="152"/>
|
|
||||||
<SubTexture name="right press instance 10004" x="316" y="398" width="149" height="152"/>
|
|
||||||
<SubTexture name="right press instance 10005" x="316" y="398" width="149" height="152"/>
|
|
||||||
<SubTexture name="right press instance 10006" x="316" y="398" width="149" height="152"/>
|
|
||||||
<SubTexture name="right press instance 10007" x="316" y="398" width="149" height="152"/>
|
|
||||||
<SubTexture name="right press instance 10008" x="316" y="398" width="149" height="152"/>
|
|
||||||
<SubTexture name="right press instance 10009" x="316" y="398" width="149" height="152"/>
|
|
||||||
<SubTexture name="right press instance 10010" x="316" y="398" width="149" height="152"/>
|
|
||||||
<SubTexture name="right press instance 10011" x="316" y="398" width="149" height="152"/>
|
|
||||||
<SubTexture name="right press instance 10012" x="316" y="398" width="149" height="152"/>
|
|
||||||
<SubTexture name="right press instance 10013" x="316" y="398" width="149" height="152"/>
|
|
||||||
<SubTexture name="right press instance 10014" x="316" y="398" width="149" height="152"/>
|
|
||||||
<SubTexture name="right press instance 10015" x="316" y="398" width="149" height="152"/>
|
|
||||||
<SubTexture name="right press instance 10016" x="316" y="398" width="149" height="152"/>
|
|
||||||
<SubTexture name="right press instance 10017" x="316" y="398" width="149" height="152"/>
|
|
||||||
<SubTexture name="right press instance 10018" x="316" y="398" width="149" height="152"/>
|
|
||||||
<SubTexture name="right press instance 10019" x="316" y="398" width="149" height="152"/>
|
|
||||||
<SubTexture name="right press instance 10020" x="316" y="398" width="149" height="152"/>
|
|
||||||
<SubTexture name="right press instance 10021" x="316" y="398" width="149" height="152"/>
|
|
||||||
<SubTexture name="right press instance 10022" x="316" y="398" width="149" height="152"/>
|
|
||||||
<SubTexture name="right press instance 10023" x="316" y="398" width="149" height="152"/>
|
|
||||||
<SubTexture name="right press instance 10024" x="316" y="398" width="149" height="152"/>
|
|
||||||
<SubTexture name="right press instance 10025" x="316" y="398" width="149" height="152"/>
|
|
||||||
<SubTexture name="right press instance 10026" x="316" y="398" width="149" height="152"/>
|
|
||||||
<SubTexture name="up confirm instance 10000" x="488" y="0" width="238" height="234"/>
|
|
||||||
<SubTexture name="up confirm instance 10001" x="730" y="0" width="238" height="234"/>
|
|
||||||
<SubTexture name="up confirm instance 10002" x="972" y="236" width="216" height="212" frameX="-11" frameY="-11" frameWidth="238" frameHeight="234"/>
|
|
||||||
<SubTexture name="up confirm instance 10003" x="972" y="236" width="216" height="212" frameX="-11" frameY="-11" frameWidth="238" frameHeight="234"/>
|
|
||||||
<SubTexture name="up press instance 10000" x="1898" y="303" width="144" height="142" frameX="-6" frameY="-4" frameWidth="154" frameHeight="151"/>
|
|
||||||
<SubTexture name="up press instance 10001" x="1898" y="303" width="144" height="142" frameX="-6" frameY="-4" frameWidth="154" frameHeight="151"/>
|
|
||||||
<SubTexture name="up press instance 10002" x="158" y="398" width="154" height="151"/>
|
|
||||||
<SubTexture name="up press instance 10003" x="158" y="398" width="154" height="151"/>
|
|
||||||
</TextureAtlas>
|
|
||||||
|
9
assets/shared/images/characters/bf-carOffsets.txt
Normal file
9
assets/shared/images/characters/bf-carOffsets.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
idle -5 0
|
||||||
|
singUP -29 27
|
||||||
|
singRIGHT -38 -7
|
||||||
|
singLEFT 12 -6
|
||||||
|
singDOWN -10 -50
|
||||||
|
singUPmiss -29 27
|
||||||
|
singRIGHTmiss -30 21
|
||||||
|
singLEFTmiss 12 24
|
||||||
|
singDOWNmiss -11 -19
|
10
assets/shared/images/characters/bf-christmasOffsets.txt
Normal file
10
assets/shared/images/characters/bf-christmasOffsets.txt
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
idle -5 0
|
||||||
|
singUP -29 27
|
||||||
|
singRIGHT -38 -7
|
||||||
|
singLEFT 12 -6
|
||||||
|
singDOWN -10 -50
|
||||||
|
singUPmiss -29 27
|
||||||
|
singRIGHTmiss -30 21
|
||||||
|
singLEFTmiss 12 24
|
||||||
|
singDOWNmiss -11 -19
|
||||||
|
hey 7 4
|
3
assets/shared/images/characters/bf-pixel-deadOffsets.txt
Normal file
3
assets/shared/images/characters/bf-pixel-deadOffsets.txt
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
firstDeath 0 0
|
||||||
|
deathLoop -30 -12
|
||||||
|
deathConfirm -30 -12
|
9
assets/shared/images/characters/bf-pixelOffsets.txt
Normal file
9
assets/shared/images/characters/bf-pixelOffsets.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
idle 0 0
|
||||||
|
singUP 0 0
|
||||||
|
singRIGHT 0 0
|
||||||
|
singLEFT 0 0
|
||||||
|
singDOWN 0 0
|
||||||
|
singUPmiss 0 0
|
||||||
|
singRIGHTmiss 0 0
|
||||||
|
singLEFTmiss 0 0
|
||||||
|
singDOWNmiss 0 0
|
14
assets/shared/images/characters/bfOffsets.txt
Normal file
14
assets/shared/images/characters/bfOffsets.txt
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
idle -5 0
|
||||||
|
singUP -29 27
|
||||||
|
singRIGHT -38 -7
|
||||||
|
singLEFT 12 -6
|
||||||
|
singDOWN -10 -50
|
||||||
|
singUPmiss -29 27
|
||||||
|
singRIGHTmiss -30 21
|
||||||
|
singLEFTmiss 12 24
|
||||||
|
singDOWNmiss -11 -19
|
||||||
|
hey 7 4
|
||||||
|
firstDeath 37 11
|
||||||
|
deathLoop 37 5
|
||||||
|
deathConfirm 37 69
|
||||||
|
scared -4 0
|
@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<TextureAtlas imagePath="bfPixelsDEAD.png">
|
<TextureAtlas imagePath="bfPixelsDEAD.png">
|
||||||
<!-- Created with Adobe Animate version 20.0.0.17400 -->
|
<!-- if you read this you're epic. -->
|
||||||
<!-- http://www.adobe.com/products/animate.html -->
|
<!-- manual tweaks done on BF Dies pixel last 2 frames -->
|
||||||
<SubTexture name="BF Dies pixel0000" x="0" y="0" width="90" height="81"/>
|
<SubTexture name="BF Dies pixel0000" x="0" y="0" width="90" height="81"/>
|
||||||
<SubTexture name="BF Dies pixel0001" x="100" y="0" width="90" height="81"/>
|
<SubTexture name="BF Dies pixel0001" x="100" y="0" width="90" height="81"/>
|
||||||
<SubTexture name="BF Dies pixel0002" x="200" y="0" width="90" height="81"/>
|
<SubTexture name="BF Dies pixel0002" x="200" y="0" width="90" height="81"/>
|
||||||
@ -58,8 +58,8 @@
|
|||||||
<SubTexture name="BF Dies pixel0053" x="300" y="273" width="90" height="81"/>
|
<SubTexture name="BF Dies pixel0053" x="300" y="273" width="90" height="81"/>
|
||||||
<SubTexture name="BF Dies pixel0054" x="400" y="273" width="90" height="81"/>
|
<SubTexture name="BF Dies pixel0054" x="400" y="273" width="90" height="81"/>
|
||||||
<SubTexture name="BF Dies pixel0055" x="500" y="273" width="90" height="81"/>
|
<SubTexture name="BF Dies pixel0055" x="500" y="273" width="90" height="81"/>
|
||||||
<SubTexture name="BF Dies pixel0056" x="696" y="450" width="77" height="76"/>
|
<SubTexture name="BF Dies pixel0056" x="691" y="448" width="90" height="81"/>
|
||||||
<SubTexture name="BF Dies pixel0057" x="696" y="450" width="77" height="76"/>
|
<SubTexture name="BF Dies pixel0057" x="691" y="448" width="90" height="81"/>
|
||||||
<SubTexture name="RETRY CONFIRM0000" x="600" y="273" width="77" height="76"/>
|
<SubTexture name="RETRY CONFIRM0000" x="600" y="273" width="77" height="76"/>
|
||||||
<SubTexture name="RETRY CONFIRM0001" x="687" y="273" width="77" height="76"/>
|
<SubTexture name="RETRY CONFIRM0001" x="687" y="273" width="77" height="76"/>
|
||||||
<SubTexture name="RETRY CONFIRM0002" x="687" y="273" width="77" height="76"/>
|
<SubTexture name="RETRY CONFIRM0002" x="687" y="273" width="77" height="76"/>
|
||||||
|
5
assets/shared/images/characters/dadOffsets.txt
Normal file
5
assets/shared/images/characters/dadOffsets.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
idle 0 0
|
||||||
|
singUP -6 50
|
||||||
|
singRIGHT 0 27
|
||||||
|
singLEFT -10 10
|
||||||
|
singDOWN 0 -30
|
2
assets/shared/images/characters/gf-carOffsets.txt
Normal file
2
assets/shared/images/characters/gf-carOffsets.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
danceLeft 0 0
|
||||||
|
danceRight 0 0
|
11
assets/shared/images/characters/gf-christmasOffsets.txt
Normal file
11
assets/shared/images/characters/gf-christmasOffsets.txt
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
cheer 0 0
|
||||||
|
sad -2 -21
|
||||||
|
danceLeft 0 -9
|
||||||
|
danceRight 0 -9
|
||||||
|
singUP 0 4
|
||||||
|
singRIGHT 0 -20
|
||||||
|
singLEFT 0 -19
|
||||||
|
singDOWN 0 -20
|
||||||
|
hairBlow 45 -8
|
||||||
|
hairFall 0 -9
|
||||||
|
scared -2 -17
|
2
assets/shared/images/characters/gf-pixelOffsets.txt
Normal file
2
assets/shared/images/characters/gf-pixelOffsets.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
danceLeft 0 0
|
||||||
|
danceRight 0 0
|
11
assets/shared/images/characters/gfOffsets.txt
Normal file
11
assets/shared/images/characters/gfOffsets.txt
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
cheer 0 0
|
||||||
|
sad -2 -21
|
||||||
|
danceLeft 0 -9
|
||||||
|
danceRight 0 -9
|
||||||
|
singUP 0 4
|
||||||
|
singRIGHT 0 -20
|
||||||
|
singLEFT 0 -19
|
||||||
|
singDOWN 0 -20
|
||||||
|
hairBlow 45 -8
|
||||||
|
hairFall 0 -9
|
||||||
|
scared -2 -17
|
5
assets/shared/images/characters/mom-carOffsets.txt
Normal file
5
assets/shared/images/characters/mom-carOffsets.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
idle 0 0
|
||||||
|
singUP 14 71
|
||||||
|
singRIGHT 10 -60
|
||||||
|
singLEFT 250 -23
|
||||||
|
singDOWN 20 -160
|
5
assets/shared/images/characters/momOffsets.txt
Normal file
5
assets/shared/images/characters/momOffsets.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
idle 0 0
|
||||||
|
singUP 14 71
|
||||||
|
singRIGHT 10 -60
|
||||||
|
singLEFT 250 -23
|
||||||
|
singDOWN 20 -160
|
@ -0,0 +1,5 @@
|
|||||||
|
idle 0 0
|
||||||
|
singUP -20 50
|
||||||
|
singRIGHT -51 0
|
||||||
|
singLEFT -30 0
|
||||||
|
singDOWN -40 -94
|
5
assets/shared/images/characters/monsterOffsets.txt
Normal file
5
assets/shared/images/characters/monsterOffsets.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
idle 0 0
|
||||||
|
singUP -20 94
|
||||||
|
singRIGHT -51 30
|
||||||
|
singLEFT -30 20
|
||||||
|
singDOWN -50 -80
|
@ -0,0 +1,9 @@
|
|||||||
|
idle 0 0
|
||||||
|
singUP -47 24
|
||||||
|
singRIGHT -1 -23
|
||||||
|
singLEFT -30 16
|
||||||
|
singDOWN -31 -29
|
||||||
|
singUP-alt -47 24
|
||||||
|
singRIGHT-alt -1 -24
|
||||||
|
singLEFT-alt -30 15
|
||||||
|
singDOWN-alt -30 -27
|
9
assets/shared/images/characters/picoOffsets.txt
Normal file
9
assets/shared/images/characters/picoOffsets.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
idle 0 0
|
||||||
|
singUP -29 27
|
||||||
|
singRIGHT -68 -7
|
||||||
|
singLEFT 65 9
|
||||||
|
singDOWN 200 -70
|
||||||
|
singUPmiss -19 67
|
||||||
|
singRIGHTmiss -60 41
|
||||||
|
singLEFTmiss 62 64
|
||||||
|
singDOWNmiss 210 -28
|
5
assets/shared/images/characters/senpai-angryOffsets.txt
Normal file
5
assets/shared/images/characters/senpai-angryOffsets.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
idle 0 0
|
||||||
|
singUP 5 37
|
||||||
|
singRIGHT 0 0
|
||||||
|
singLEFT 40 0
|
||||||
|
singDOWN 14 0
|
5
assets/shared/images/characters/senpaiOffsets.txt
Normal file
5
assets/shared/images/characters/senpaiOffsets.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
idle 0 0
|
||||||
|
singUP 5 37
|
||||||
|
singRIGHT 0 0
|
||||||
|
singLEFT 40 0
|
||||||
|
singDOWN 14 0
|
5
assets/shared/images/characters/spiritOffsets.txt
Normal file
5
assets/shared/images/characters/spiritOffsets.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
idle -220 -280
|
||||||
|
singUP -220 -240
|
||||||
|
singRIGHT -220 -280
|
||||||
|
singLEFT -200 -280
|
||||||
|
singDOWN 170 110
|
6
assets/shared/images/characters/spookyOffsets.txt
Normal file
6
assets/shared/images/characters/spookyOffsets.txt
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
danceLeft 0 0
|
||||||
|
danceRight 0 0
|
||||||
|
singUP -20 26
|
||||||
|
singRIGHT -130 -14
|
||||||
|
singLEFT 130 -10
|
||||||
|
singDOWN -50 -130
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -15,8 +15,10 @@ Scroll down to Line 26, or Search (Windows/Linux: `Ctrl+F`, Mac: `Cmd+F`) for "w
|
|||||||
---
|
---
|
||||||
|
|
||||||
```haxe
|
```haxe
|
||||||
var weekData:Array<Dynamic> = [
|
static function weekData():Array<Dynamic>
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
|
||||||
['Tutorial'],
|
['Tutorial'],
|
||||||
|
|
||||||
['Bopeebo', 'Fresh', 'Dadbattle'],
|
['Bopeebo', 'Fresh', 'Dadbattle'],
|
||||||
@ -30,8 +32,9 @@ var weekData:Array<Dynamic> = [
|
|||||||
['Cocoa', 'Eggnog', 'Winter-Horrorland'],
|
['Cocoa', 'Eggnog', 'Winter-Horrorland'],
|
||||||
|
|
||||||
['Senpai', 'Roses', 'Thorns']
|
['Senpai', 'Roses', 'Thorns']
|
||||||
|
|
||||||
];
|
];
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
@ -45,8 +48,10 @@ Example
|
|||||||
---
|
---
|
||||||
|
|
||||||
```haxe
|
```haxe
|
||||||
var weekData:Array<Dynamic> = [
|
static function weekData():Array<Dynamic>
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
|
||||||
['Tutorial'],
|
['Tutorial'],
|
||||||
|
|
||||||
['Bopeebo', 'Fresh', 'Dadbattle'],
|
['Bopeebo', 'Fresh', 'Dadbattle'],
|
||||||
@ -58,12 +63,13 @@ var weekData:Array<Dynamic> = [
|
|||||||
['Satin-Panties', "High", "Milf"],
|
['Satin-Panties', "High", "Milf"],
|
||||||
|
|
||||||
['Cocoa', 'Eggnog', 'Winter-Horrorland'],
|
['Cocoa', 'Eggnog', 'Winter-Horrorland'],
|
||||||
|
|
||||||
['Senpai', 'Roses', 'Thorns'],
|
['Senpai', 'Roses', 'Thorns'],
|
||||||
|
|
||||||
['Ugh', 'Guns', 'Stress']
|
['Ugh', 'Guns', 'Stress']
|
||||||
|
|
||||||
];
|
];
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
@ -83,6 +83,7 @@ class Caching extends MusicBeatState
|
|||||||
|
|
||||||
var images = [];
|
var images = [];
|
||||||
var music = [];
|
var music = [];
|
||||||
|
var charts = [];
|
||||||
|
|
||||||
trace("caching images...");
|
trace("caching images...");
|
||||||
|
|
||||||
@ -99,6 +100,7 @@ class Caching extends MusicBeatState
|
|||||||
{
|
{
|
||||||
music.push(i);
|
music.push(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
toBeDone = Lambda.count(images) + Lambda.count(music);
|
toBeDone = Lambda.count(images) + Lambda.count(music);
|
||||||
|
|
||||||
@ -120,6 +122,7 @@ class Caching extends MusicBeatState
|
|||||||
done++;
|
done++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
trace("Finished caching...");
|
trace("Finished caching...");
|
||||||
|
|
||||||
FlxG.switchState(new TitleState());
|
FlxG.switchState(new TitleState());
|
||||||
|
@ -46,19 +46,7 @@ class Character extends FlxSprite
|
|||||||
animation.addByIndices('hairFall', "GF Dancing Beat Hair Landing", [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "", 24, false);
|
animation.addByIndices('hairFall', "GF Dancing Beat Hair Landing", [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "", 24, false);
|
||||||
animation.addByPrefix('scared', 'GF FEAR', 24);
|
animation.addByPrefix('scared', 'GF FEAR', 24);
|
||||||
|
|
||||||
addOffset('cheer');
|
loadOffsetFile(curCharacter);
|
||||||
addOffset('sad', -2, -2);
|
|
||||||
addOffset('danceLeft', 0, -9);
|
|
||||||
addOffset('danceRight', 0, -9);
|
|
||||||
|
|
||||||
addOffset("singUP", 0, 4);
|
|
||||||
addOffset("singRIGHT", 0, -20);
|
|
||||||
addOffset("singLEFT", 0, -19);
|
|
||||||
addOffset("singDOWN", 0, -20);
|
|
||||||
addOffset('hairBlow', 45, -8);
|
|
||||||
addOffset('hairFall', 0, -9);
|
|
||||||
|
|
||||||
addOffset('scared', -2, -17);
|
|
||||||
|
|
||||||
playAnim('danceRight');
|
playAnim('danceRight');
|
||||||
|
|
||||||
@ -77,19 +65,7 @@ class Character extends FlxSprite
|
|||||||
animation.addByIndices('hairFall', "GF Dancing Beat Hair Landing", [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "", 24, false);
|
animation.addByIndices('hairFall', "GF Dancing Beat Hair Landing", [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "", 24, false);
|
||||||
animation.addByPrefix('scared', 'GF FEAR', 24);
|
animation.addByPrefix('scared', 'GF FEAR', 24);
|
||||||
|
|
||||||
addOffset('cheer');
|
loadOffsetFile(curCharacter);
|
||||||
addOffset('sad', -2, -2);
|
|
||||||
addOffset('danceLeft', 0, -9);
|
|
||||||
addOffset('danceRight', 0, -9);
|
|
||||||
|
|
||||||
addOffset("singUP", 0, 4);
|
|
||||||
addOffset("singRIGHT", 0, -20);
|
|
||||||
addOffset("singLEFT", 0, -19);
|
|
||||||
addOffset("singDOWN", 0, -20);
|
|
||||||
addOffset('hairBlow', 45, -8);
|
|
||||||
addOffset('hairFall', 0, -9);
|
|
||||||
|
|
||||||
addOffset('scared', -2, -17);
|
|
||||||
|
|
||||||
playAnim('danceRight');
|
playAnim('danceRight');
|
||||||
|
|
||||||
@ -101,8 +77,7 @@ class Character extends FlxSprite
|
|||||||
animation.addByIndices('danceRight', 'GF Dancing Beat Hair blowing CAR', [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "", 24,
|
animation.addByIndices('danceRight', 'GF Dancing Beat Hair blowing CAR', [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "", 24,
|
||||||
false);
|
false);
|
||||||
|
|
||||||
addOffset('danceLeft', 0);
|
loadOffsetFile(curCharacter);
|
||||||
addOffset('danceRight', 0);
|
|
||||||
|
|
||||||
playAnim('danceRight');
|
playAnim('danceRight');
|
||||||
|
|
||||||
@ -113,8 +88,7 @@ class Character extends FlxSprite
|
|||||||
animation.addByIndices('danceLeft', 'GF IDLE', [30, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "", 24, false);
|
animation.addByIndices('danceLeft', 'GF IDLE', [30, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "", 24, false);
|
||||||
animation.addByIndices('danceRight', 'GF IDLE', [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "", 24, false);
|
animation.addByIndices('danceRight', 'GF IDLE', [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "", 24, false);
|
||||||
|
|
||||||
addOffset('danceLeft', 0);
|
loadOffsetFile(curCharacter);
|
||||||
addOffset('danceRight', 0);
|
|
||||||
|
|
||||||
playAnim('danceRight');
|
playAnim('danceRight');
|
||||||
|
|
||||||
@ -132,11 +106,7 @@ class Character extends FlxSprite
|
|||||||
animation.addByPrefix('singDOWN', 'Dad Sing Note DOWN', 24);
|
animation.addByPrefix('singDOWN', 'Dad Sing Note DOWN', 24);
|
||||||
animation.addByPrefix('singLEFT', 'Dad Sing Note LEFT', 24);
|
animation.addByPrefix('singLEFT', 'Dad Sing Note LEFT', 24);
|
||||||
|
|
||||||
addOffset('idle');
|
loadOffsetFile(curCharacter);
|
||||||
addOffset("singUP", -6, 50);
|
|
||||||
addOffset("singRIGHT", 0, 27);
|
|
||||||
addOffset("singLEFT", -10, 10);
|
|
||||||
addOffset("singDOWN", 0, -30);
|
|
||||||
|
|
||||||
playAnim('idle');
|
playAnim('idle');
|
||||||
case 'spooky':
|
case 'spooky':
|
||||||
@ -149,13 +119,7 @@ class Character extends FlxSprite
|
|||||||
animation.addByIndices('danceLeft', 'spooky dance idle', [0, 2, 6], "", 12, false);
|
animation.addByIndices('danceLeft', 'spooky dance idle', [0, 2, 6], "", 12, false);
|
||||||
animation.addByIndices('danceRight', 'spooky dance idle', [8, 10, 12, 14], "", 12, false);
|
animation.addByIndices('danceRight', 'spooky dance idle', [8, 10, 12, 14], "", 12, false);
|
||||||
|
|
||||||
addOffset('danceLeft');
|
loadOffsetFile(curCharacter);
|
||||||
addOffset('danceRight');
|
|
||||||
|
|
||||||
addOffset("singUP", -20, 26);
|
|
||||||
addOffset("singRIGHT", -130, -14);
|
|
||||||
addOffset("singLEFT", 130, -10);
|
|
||||||
addOffset("singDOWN", -50, -130);
|
|
||||||
|
|
||||||
playAnim('danceRight');
|
playAnim('danceRight');
|
||||||
case 'mom':
|
case 'mom':
|
||||||
@ -170,11 +134,7 @@ class Character extends FlxSprite
|
|||||||
// CUZ DAVE IS DUMB!
|
// CUZ DAVE IS DUMB!
|
||||||
animation.addByPrefix('singRIGHT', 'Mom Pose Left', 24, false);
|
animation.addByPrefix('singRIGHT', 'Mom Pose Left', 24, false);
|
||||||
|
|
||||||
addOffset('idle');
|
loadOffsetFile(curCharacter);
|
||||||
addOffset("singUP", 14, 71);
|
|
||||||
addOffset("singRIGHT", 10, -60);
|
|
||||||
addOffset("singLEFT", 250, -23);
|
|
||||||
addOffset("singDOWN", 20, -160);
|
|
||||||
|
|
||||||
playAnim('idle');
|
playAnim('idle');
|
||||||
|
|
||||||
@ -190,11 +150,7 @@ class Character extends FlxSprite
|
|||||||
// CUZ DAVE IS DUMB!
|
// CUZ DAVE IS DUMB!
|
||||||
animation.addByPrefix('singRIGHT', 'Mom Pose Left', 24, false);
|
animation.addByPrefix('singRIGHT', 'Mom Pose Left', 24, false);
|
||||||
|
|
||||||
addOffset('idle');
|
loadOffsetFile(curCharacter);
|
||||||
addOffset("singUP", 14, 71);
|
|
||||||
addOffset("singRIGHT", 10, -60);
|
|
||||||
addOffset("singLEFT", 250, -23);
|
|
||||||
addOffset("singDOWN", 20, -160);
|
|
||||||
|
|
||||||
playAnim('idle');
|
playAnim('idle');
|
||||||
case 'monster':
|
case 'monster':
|
||||||
@ -206,11 +162,7 @@ class Character extends FlxSprite
|
|||||||
animation.addByPrefix('singLEFT', 'Monster left note', 24, false);
|
animation.addByPrefix('singLEFT', 'Monster left note', 24, false);
|
||||||
animation.addByPrefix('singRIGHT', 'Monster Right note', 24, false);
|
animation.addByPrefix('singRIGHT', 'Monster Right note', 24, false);
|
||||||
|
|
||||||
addOffset('idle');
|
loadOffsetFile(curCharacter);
|
||||||
addOffset("singUP", -20, 50);
|
|
||||||
addOffset("singRIGHT", -51);
|
|
||||||
addOffset("singLEFT", -30);
|
|
||||||
addOffset("singDOWN", -30, -40);
|
|
||||||
playAnim('idle');
|
playAnim('idle');
|
||||||
case 'monster-christmas':
|
case 'monster-christmas':
|
||||||
tex = Paths.getSparrowAtlas('characters/monsterChristmas');
|
tex = Paths.getSparrowAtlas('characters/monsterChristmas');
|
||||||
@ -221,11 +173,7 @@ class Character extends FlxSprite
|
|||||||
animation.addByPrefix('singLEFT', 'Monster left note', 24, false);
|
animation.addByPrefix('singLEFT', 'Monster left note', 24, false);
|
||||||
animation.addByPrefix('singRIGHT', 'Monster Right note', 24, false);
|
animation.addByPrefix('singRIGHT', 'Monster Right note', 24, false);
|
||||||
|
|
||||||
addOffset('idle');
|
loadOffsetFile(curCharacter);
|
||||||
addOffset("singUP", -20, 50);
|
|
||||||
addOffset("singRIGHT", -51);
|
|
||||||
addOffset("singLEFT", -30);
|
|
||||||
addOffset("singDOWN", -40, -94);
|
|
||||||
playAnim('idle');
|
playAnim('idle');
|
||||||
case 'pico':
|
case 'pico':
|
||||||
tex = Paths.getSparrowAtlas('characters/Pico_FNF_assetss');
|
tex = Paths.getSparrowAtlas('characters/Pico_FNF_assetss');
|
||||||
@ -252,15 +200,7 @@ class Character extends FlxSprite
|
|||||||
animation.addByPrefix('singUPmiss', 'pico Up note miss', 24);
|
animation.addByPrefix('singUPmiss', 'pico Up note miss', 24);
|
||||||
animation.addByPrefix('singDOWNmiss', 'Pico Down Note MISS', 24);
|
animation.addByPrefix('singDOWNmiss', 'Pico Down Note MISS', 24);
|
||||||
|
|
||||||
addOffset('idle');
|
loadOffsetFile(curCharacter);
|
||||||
addOffset("singUP", -29, 27);
|
|
||||||
addOffset("singRIGHT", -68, -7);
|
|
||||||
addOffset("singLEFT", 65, 9);
|
|
||||||
addOffset("singDOWN", 200, -70);
|
|
||||||
addOffset("singUPmiss", -19, 67);
|
|
||||||
addOffset("singRIGHTmiss", -60, 41);
|
|
||||||
addOffset("singLEFTmiss", 62, 64);
|
|
||||||
addOffset("singDOWNmiss", 210, -28);
|
|
||||||
|
|
||||||
playAnim('idle');
|
playAnim('idle');
|
||||||
|
|
||||||
@ -289,20 +229,7 @@ class Character extends FlxSprite
|
|||||||
|
|
||||||
animation.addByPrefix('scared', 'BF idle shaking', 24);
|
animation.addByPrefix('scared', 'BF idle shaking', 24);
|
||||||
|
|
||||||
addOffset('idle', -5);
|
loadOffsetFile(curCharacter);
|
||||||
addOffset("singUP", -29, 27);
|
|
||||||
addOffset("singRIGHT", -38, -7);
|
|
||||||
addOffset("singLEFT", 12, -6);
|
|
||||||
addOffset("singDOWN", -10, -50);
|
|
||||||
addOffset("singUPmiss", -29, 27);
|
|
||||||
addOffset("singRIGHTmiss", -30, 21);
|
|
||||||
addOffset("singLEFTmiss", 12, 24);
|
|
||||||
addOffset("singDOWNmiss", -11, -19);
|
|
||||||
addOffset("hey", 7, 4);
|
|
||||||
addOffset('firstDeath', 37, 11);
|
|
||||||
addOffset('deathLoop', 37, 5);
|
|
||||||
addOffset('deathConfirm', 37, 69);
|
|
||||||
addOffset('scared', -4);
|
|
||||||
|
|
||||||
playAnim('idle');
|
playAnim('idle');
|
||||||
|
|
||||||
@ -322,16 +249,7 @@ class Character extends FlxSprite
|
|||||||
animation.addByPrefix('singDOWNmiss', 'BF NOTE DOWN MISS', 24, false);
|
animation.addByPrefix('singDOWNmiss', 'BF NOTE DOWN MISS', 24, false);
|
||||||
animation.addByPrefix('hey', 'BF HEY', 24, false);
|
animation.addByPrefix('hey', 'BF HEY', 24, false);
|
||||||
|
|
||||||
addOffset('idle', -5);
|
loadOffsetFile(curCharacter);
|
||||||
addOffset("singUP", -29, 27);
|
|
||||||
addOffset("singRIGHT", -38, -7);
|
|
||||||
addOffset("singLEFT", 12, -6);
|
|
||||||
addOffset("singDOWN", -10, -50);
|
|
||||||
addOffset("singUPmiss", -29, 27);
|
|
||||||
addOffset("singRIGHTmiss", -30, 21);
|
|
||||||
addOffset("singLEFTmiss", 12, 24);
|
|
||||||
addOffset("singDOWNmiss", -11, -19);
|
|
||||||
addOffset("hey", 7, 4);
|
|
||||||
|
|
||||||
playAnim('idle');
|
playAnim('idle');
|
||||||
|
|
||||||
@ -349,15 +267,7 @@ class Character extends FlxSprite
|
|||||||
animation.addByPrefix('singRIGHTmiss', 'BF NOTE RIGHT MISS', 24, false);
|
animation.addByPrefix('singRIGHTmiss', 'BF NOTE RIGHT MISS', 24, false);
|
||||||
animation.addByPrefix('singDOWNmiss', 'BF NOTE DOWN MISS', 24, false);
|
animation.addByPrefix('singDOWNmiss', 'BF NOTE DOWN MISS', 24, false);
|
||||||
|
|
||||||
addOffset('idle', -5);
|
loadOffsetFile(curCharacter);
|
||||||
addOffset("singUP", -29, 27);
|
|
||||||
addOffset("singRIGHT", -38, -7);
|
|
||||||
addOffset("singLEFT", 12, -6);
|
|
||||||
addOffset("singDOWN", -10, -50);
|
|
||||||
addOffset("singUPmiss", -29, 27);
|
|
||||||
addOffset("singRIGHTmiss", -30, 21);
|
|
||||||
addOffset("singLEFTmiss", 12, 24);
|
|
||||||
addOffset("singDOWNmiss", -11, -19);
|
|
||||||
playAnim('idle');
|
playAnim('idle');
|
||||||
|
|
||||||
flipX = true;
|
flipX = true;
|
||||||
@ -373,15 +283,7 @@ class Character extends FlxSprite
|
|||||||
animation.addByPrefix('singRIGHTmiss', 'BF RIGHT MISS', 24, false);
|
animation.addByPrefix('singRIGHTmiss', 'BF RIGHT MISS', 24, false);
|
||||||
animation.addByPrefix('singDOWNmiss', 'BF DOWN MISS', 24, false);
|
animation.addByPrefix('singDOWNmiss', 'BF DOWN MISS', 24, false);
|
||||||
|
|
||||||
addOffset('idle');
|
loadOffsetFile(curCharacter);
|
||||||
addOffset("singUP");
|
|
||||||
addOffset("singRIGHT");
|
|
||||||
addOffset("singLEFT");
|
|
||||||
addOffset("singDOWN");
|
|
||||||
addOffset("singUPmiss");
|
|
||||||
addOffset("singRIGHTmiss");
|
|
||||||
addOffset("singLEFTmiss");
|
|
||||||
addOffset("singDOWNmiss");
|
|
||||||
|
|
||||||
setGraphicSize(Std.int(width * 6));
|
setGraphicSize(Std.int(width * 6));
|
||||||
updateHitbox();
|
updateHitbox();
|
||||||
@ -402,9 +304,7 @@ class Character extends FlxSprite
|
|||||||
animation.addByPrefix('deathConfirm', "RETRY CONFIRM", 24, false);
|
animation.addByPrefix('deathConfirm', "RETRY CONFIRM", 24, false);
|
||||||
animation.play('firstDeath');
|
animation.play('firstDeath');
|
||||||
|
|
||||||
addOffset('firstDeath');
|
loadOffsetFile(curCharacter);
|
||||||
addOffset('deathLoop', -37);
|
|
||||||
addOffset('deathConfirm', -37);
|
|
||||||
playAnim('firstDeath');
|
playAnim('firstDeath');
|
||||||
// pixel bullshit
|
// pixel bullshit
|
||||||
setGraphicSize(Std.int(width * 6));
|
setGraphicSize(Std.int(width * 6));
|
||||||
@ -420,11 +320,7 @@ class Character extends FlxSprite
|
|||||||
animation.addByPrefix('singRIGHT', 'SENPAI RIGHT NOTE', 24, false);
|
animation.addByPrefix('singRIGHT', 'SENPAI RIGHT NOTE', 24, false);
|
||||||
animation.addByPrefix('singDOWN', 'SENPAI DOWN NOTE', 24, false);
|
animation.addByPrefix('singDOWN', 'SENPAI DOWN NOTE', 24, false);
|
||||||
|
|
||||||
addOffset('idle');
|
loadOffsetFile(curCharacter);
|
||||||
addOffset("singUP", 5, 37);
|
|
||||||
addOffset("singRIGHT");
|
|
||||||
addOffset("singLEFT", 40);
|
|
||||||
addOffset("singDOWN", 14);
|
|
||||||
|
|
||||||
playAnim('idle');
|
playAnim('idle');
|
||||||
|
|
||||||
@ -440,11 +336,7 @@ class Character extends FlxSprite
|
|||||||
animation.addByPrefix('singRIGHT', 'Angry Senpai RIGHT NOTE', 24, false);
|
animation.addByPrefix('singRIGHT', 'Angry Senpai RIGHT NOTE', 24, false);
|
||||||
animation.addByPrefix('singDOWN', 'Angry Senpai DOWN NOTE', 24, false);
|
animation.addByPrefix('singDOWN', 'Angry Senpai DOWN NOTE', 24, false);
|
||||||
|
|
||||||
addOffset('idle');
|
loadOffsetFile(curCharacter);
|
||||||
addOffset("singUP", 5, 37);
|
|
||||||
addOffset("singRIGHT");
|
|
||||||
addOffset("singLEFT", 40);
|
|
||||||
addOffset("singDOWN", 14);
|
|
||||||
playAnim('idle');
|
playAnim('idle');
|
||||||
|
|
||||||
setGraphicSize(Std.int(width * 6));
|
setGraphicSize(Std.int(width * 6));
|
||||||
@ -460,11 +352,7 @@ class Character extends FlxSprite
|
|||||||
animation.addByPrefix('singLEFT', "left_", 24, false);
|
animation.addByPrefix('singLEFT', "left_", 24, false);
|
||||||
animation.addByPrefix('singDOWN', "spirit down_", 24, false);
|
animation.addByPrefix('singDOWN', "spirit down_", 24, false);
|
||||||
|
|
||||||
addOffset('idle', -220, -280);
|
loadOffsetFile(curCharacter);
|
||||||
addOffset('singUP', -220, -240);
|
|
||||||
addOffset("singRIGHT", -220, -280);
|
|
||||||
addOffset("singLEFT", -200, -280);
|
|
||||||
addOffset("singDOWN", 170, 110);
|
|
||||||
|
|
||||||
setGraphicSize(Std.int(width * 6));
|
setGraphicSize(Std.int(width * 6));
|
||||||
updateHitbox();
|
updateHitbox();
|
||||||
@ -487,15 +375,7 @@ class Character extends FlxSprite
|
|||||||
animation.addByPrefix('singLEFT-alt', 'Parent Left Note Mom', 24, false);
|
animation.addByPrefix('singLEFT-alt', 'Parent Left Note Mom', 24, false);
|
||||||
animation.addByPrefix('singRIGHT-alt', 'Parent Right Note Mom', 24, false);
|
animation.addByPrefix('singRIGHT-alt', 'Parent Right Note Mom', 24, false);
|
||||||
|
|
||||||
addOffset('idle');
|
loadOffsetFile(curCharacter);
|
||||||
addOffset("singUP", -47, 24);
|
|
||||||
addOffset("singRIGHT", -1, -23);
|
|
||||||
addOffset("singLEFT", -30, 16);
|
|
||||||
addOffset("singDOWN", -31, -29);
|
|
||||||
addOffset("singUP-alt", -47, 24);
|
|
||||||
addOffset("singRIGHT-alt", -1, -24);
|
|
||||||
addOffset("singLEFT-alt", -30, 15);
|
|
||||||
addOffset("singDOWN-alt", -30, -27);
|
|
||||||
|
|
||||||
playAnim('idle');
|
playAnim('idle');
|
||||||
}
|
}
|
||||||
@ -525,6 +405,17 @@ class Character extends FlxSprite
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function loadOffsetFile(character:String)
|
||||||
|
{
|
||||||
|
var offset:Array<String> = CoolUtil.coolTextFile(Paths.txt('images/characters/' + character + "Offsets"));
|
||||||
|
|
||||||
|
for (i in 0...offset.length)
|
||||||
|
{
|
||||||
|
var data:Array<String> = offset[i].split(' ');
|
||||||
|
addOffset(data[0], Std.parseInt(data[1]), Std.parseInt(data[2]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override function update(elapsed:Float)
|
override function update(elapsed:Float)
|
||||||
{
|
{
|
||||||
if (!curCharacter.startsWith('bf'))
|
if (!curCharacter.startsWith('bf'))
|
||||||
|
@ -309,10 +309,10 @@ class ChartingState extends MusicBeatState
|
|||||||
shiftNotes(Std.int(stepperShiftNoteDial.value),Std.int(stepperShiftNoteDialstep.value),Std.int(stepperShiftNoteDialms.value));
|
shiftNotes(Std.int(stepperShiftNoteDial.value),Std.int(stepperShiftNoteDialstep.value),Std.int(stepperShiftNoteDialms.value));
|
||||||
});
|
});
|
||||||
|
|
||||||
var characters:Array<String> = CoolUtil.coolTextFile(Paths.txt('characterList'));
|
var characters:Array<String> = CoolUtil.coolTextFile(Paths.txt('data/characterList'));
|
||||||
var gfVersions:Array<String> = CoolUtil.coolTextFile(Paths.txt('gfVersionList'));
|
var gfVersions:Array<String> = CoolUtil.coolTextFile(Paths.txt('data/gfVersionList'));
|
||||||
var stages:Array<String> = CoolUtil.coolTextFile(Paths.txt('stageList'));
|
var stages:Array<String> = CoolUtil.coolTextFile(Paths.txt('data/stageList'));
|
||||||
var noteStyles:Array<String> = CoolUtil.coolTextFile(Paths.txt('noteStyleList'));
|
var noteStyles:Array<String> = CoolUtil.coolTextFile(Paths.txt('data/noteStyleList'));
|
||||||
|
|
||||||
var player1DropDown = new FlxUIDropDownMenu(10, 100, FlxUIDropDownMenu.makeStrIdLabelArray(characters, true), function(character:String)
|
var player1DropDown = new FlxUIDropDownMenu(10, 100, FlxUIDropDownMenu.makeStrIdLabelArray(characters, true), function(character:String)
|
||||||
{
|
{
|
||||||
@ -1240,6 +1240,7 @@ class ChartingState extends MusicBeatState
|
|||||||
var daSus = i[2];
|
var daSus = i[2];
|
||||||
|
|
||||||
var note:Note = new Note(daStrumTime, daNoteInfo % 4,null,false,true);
|
var note:Note = new Note(daStrumTime, daNoteInfo % 4,null,false,true);
|
||||||
|
note.rawNoteData = daNoteInfo;
|
||||||
note.sustainLength = daSus;
|
note.sustainLength = daSus;
|
||||||
note.setGraphicSize(GRID_SIZE, GRID_SIZE);
|
note.setGraphicSize(GRID_SIZE, GRID_SIZE);
|
||||||
note.updateHitbox();
|
note.updateHitbox();
|
||||||
@ -1282,7 +1283,7 @@ class ChartingState extends MusicBeatState
|
|||||||
|
|
||||||
for (i in _song.notes[curSection].sectionNotes)
|
for (i in _song.notes[curSection].sectionNotes)
|
||||||
{
|
{
|
||||||
if (i.strumTime == note.strumTime && i.noteData % 4 == note.noteData)
|
if (i[0] == note.strumTime && i[1] == note.rawNoteData)
|
||||||
{
|
{
|
||||||
curSelectedNote = _song.notes[curSection].sectionNotes[swagNum];
|
curSelectedNote = _song.notes[curSection].sectionNotes[swagNum];
|
||||||
}
|
}
|
||||||
@ -1300,7 +1301,7 @@ class ChartingState extends MusicBeatState
|
|||||||
lastNote = note;
|
lastNote = note;
|
||||||
for (i in _song.notes[curSection].sectionNotes)
|
for (i in _song.notes[curSection].sectionNotes)
|
||||||
{
|
{
|
||||||
if (i[0] == note.strumTime && i[1] % 4 == note.noteData)
|
if (i[0] == note.strumTime && i[1] == note.rawNoteData)
|
||||||
{
|
{
|
||||||
_song.notes[curSection].sectionNotes.remove(i);
|
_song.notes[curSection].sectionNotes.remove(i);
|
||||||
}
|
}
|
||||||
|
@ -155,7 +155,7 @@ class DialogueBox extends FlxSpriteGroup
|
|||||||
portraitLeft.visible = false;
|
portraitLeft.visible = false;
|
||||||
if (PlayState.SONG.song.toLowerCase() == 'thorns')
|
if (PlayState.SONG.song.toLowerCase() == 'thorns')
|
||||||
{
|
{
|
||||||
portraitLeft.color = FlxColor.BLACK;
|
portraitLeft.visible = false;
|
||||||
swagDialogue.color = FlxColor.WHITE;
|
swagDialogue.color = FlxColor.WHITE;
|
||||||
dropText.color = FlxColor.BLACK;
|
dropText.color = FlxColor.BLACK;
|
||||||
}
|
}
|
||||||
|
140
source/DiffCalc.hx
Normal file
140
source/DiffCalc.hx
Normal file
@ -0,0 +1,140 @@
|
|||||||
|
import Song.SwagSong;
|
||||||
|
|
||||||
|
class SmallNote // basically Note.hx but small as fuck
|
||||||
|
{
|
||||||
|
public var strumTime:Float;
|
||||||
|
public var noteData:Int;
|
||||||
|
|
||||||
|
public function new(strum,data)
|
||||||
|
{
|
||||||
|
strumTime = strum;
|
||||||
|
noteData = data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class DiffCalc
|
||||||
|
{
|
||||||
|
public static function CalculateDiff(song:SwagSong)
|
||||||
|
{
|
||||||
|
// cleaned notes
|
||||||
|
var cleanedNotes:Array<SmallNote> = [];
|
||||||
|
|
||||||
|
// find all of the notes
|
||||||
|
for(i in song.notes) // sections
|
||||||
|
{
|
||||||
|
for (ii in i.sectionNotes) // notes
|
||||||
|
{
|
||||||
|
if (ii[2] != 0) // skip helds
|
||||||
|
continue;
|
||||||
|
var gottaHitNote:Bool = i.mustHitSection;
|
||||||
|
|
||||||
|
if (ii[1] > 3)
|
||||||
|
gottaHitNote = !i.mustHitSection;
|
||||||
|
|
||||||
|
if (gottaHitNote)
|
||||||
|
cleanedNotes.push(new SmallNote(ii[0],Math.floor(Math.abs(ii[1]))));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var handOne:Array<SmallNote> = [];
|
||||||
|
var handTwo:Array<SmallNote> = [];
|
||||||
|
|
||||||
|
cleanedNotes.sort((a, b) -> Std.int(a.strumTime - b.strumTime));
|
||||||
|
|
||||||
|
var firstNoteTime = cleanedNotes[0].strumTime;
|
||||||
|
|
||||||
|
// normalize the notes
|
||||||
|
|
||||||
|
for(i in cleanedNotes)
|
||||||
|
{
|
||||||
|
i.strumTime = (i.strumTime - firstNoteTime) * 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i in cleanedNotes)
|
||||||
|
{
|
||||||
|
switch(i.noteData)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
handOne.push(i);
|
||||||
|
case 1:
|
||||||
|
handTwo.push(i);
|
||||||
|
case 2:
|
||||||
|
handTwo.push(i);
|
||||||
|
case 3:
|
||||||
|
handOne.push(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// length in segments of the song
|
||||||
|
var length = ((cleanedNotes[cleanedNotes.length - 1].strumTime / 1000) / 0.5);
|
||||||
|
|
||||||
|
// hackey way of creating a array with a length
|
||||||
|
var segmentsOne:Array<Int> = new_Array(1,Std.int(length));
|
||||||
|
var segmentsTwo:Array<Int> = new_Array(1,Std.int(length));
|
||||||
|
|
||||||
|
// algo loop
|
||||||
|
for(i in handOne)
|
||||||
|
{
|
||||||
|
var index = Std.int(((i.strumTime / 1000)));
|
||||||
|
if (index + 1 > segmentsOne.length)
|
||||||
|
continue;
|
||||||
|
segmentsOne[index] = segmentsOne[index] + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i in handTwo)
|
||||||
|
{
|
||||||
|
var index = Std.int(((i.strumTime / 1000)));
|
||||||
|
if (index + 1 > segmentsTwo.length)
|
||||||
|
continue;
|
||||||
|
segmentsTwo[index] = segmentsTwo[index] + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// get the average of all of the segments
|
||||||
|
var sumOne:Float = 0;
|
||||||
|
var sumTwo:Float = 0;
|
||||||
|
|
||||||
|
|
||||||
|
var lone = segmentsOne.length;
|
||||||
|
var ltwo = segmentsOne.length;
|
||||||
|
|
||||||
|
for (i in segmentsOne)
|
||||||
|
{
|
||||||
|
if (i == 0) // remove empty/breaks
|
||||||
|
{
|
||||||
|
lone--;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//trace(i);
|
||||||
|
sumOne += i / .5; // half it because otherwise instead of nps its just fucking notes per half second which is dumb and stupid
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i in segmentsTwo)
|
||||||
|
{
|
||||||
|
if (i == 0) // remove empty/breaks
|
||||||
|
{
|
||||||
|
ltwo--;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//trace(i);
|
||||||
|
sumTwo += i / .5; // half it because otherwise instead of nps its just fucking notes per half second which is dumb and stupid
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var handOneAvg = sumOne / lone;
|
||||||
|
var handTwoAvg = sumTwo / ltwo;
|
||||||
|
|
||||||
|
return HelperFunctions.truncateFloat(handOneAvg > handTwoAvg ? handOneAvg : handTwoAvg,2);
|
||||||
|
}
|
||||||
|
|
||||||
|
static public function new_Array<T>( ArrayType:T, Length:Int ):Array<T> {
|
||||||
|
var empty:Null<T> = null;
|
||||||
|
var newArray:Array<T> = new Array<T>();
|
||||||
|
|
||||||
|
for ( i in 0...Length ) {
|
||||||
|
newArray.push( empty );
|
||||||
|
}
|
||||||
|
|
||||||
|
return newArray;
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,6 @@
|
|||||||
package;
|
package;
|
||||||
|
|
||||||
|
import Song.SwagSong;
|
||||||
import flixel.input.gamepad.FlxGamepad;
|
import flixel.input.gamepad.FlxGamepad;
|
||||||
import flash.text.TextField;
|
import flash.text.TextField;
|
||||||
import flixel.FlxG;
|
import flixel.FlxG;
|
||||||
@ -29,6 +30,7 @@ class FreeplayState extends MusicBeatState
|
|||||||
var scoreText:FlxText;
|
var scoreText:FlxText;
|
||||||
var comboText:FlxText;
|
var comboText:FlxText;
|
||||||
var diffText:FlxText;
|
var diffText:FlxText;
|
||||||
|
var diffCalcText:FlxText;
|
||||||
var lerpScore:Int = 0;
|
var lerpScore:Int = 0;
|
||||||
var intendedScore:Int = 0;
|
var intendedScore:Int = 0;
|
||||||
var combo:String = '';
|
var combo:String = '';
|
||||||
@ -38,16 +40,66 @@ class FreeplayState extends MusicBeatState
|
|||||||
|
|
||||||
private var iconArray:Array<HealthIcon> = [];
|
private var iconArray:Array<HealthIcon> = [];
|
||||||
|
|
||||||
|
public static var songData:Map<String,Array<SwagSong>> = [];
|
||||||
|
|
||||||
|
public static function loadDiff(diff:Int, format:String, name:String, array:Array<SwagSong>)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
array.push(Song.loadFromJson(Highscore.formatSong(format, diff), name));
|
||||||
|
}
|
||||||
|
catch(ex)
|
||||||
|
{
|
||||||
|
// do nada
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override function create()
|
override function create()
|
||||||
{
|
{
|
||||||
var initSonglist = CoolUtil.coolTextFile(Paths.txt('freeplaySonglist'));
|
var initSonglist = CoolUtil.coolTextFile(Paths.txt('data/freeplaySonglist'));
|
||||||
|
|
||||||
|
//var diffList = "";
|
||||||
|
|
||||||
for (i in 0...initSonglist.length)
|
for (i in 0...initSonglist.length)
|
||||||
{
|
{
|
||||||
var data:Array<String> = initSonglist[i].split(':');
|
var data:Array<String> = initSonglist[i].split(':');
|
||||||
songs.push(new SongMetadata(data[0], Std.parseInt(data[2]), data[1]));
|
var meta = new SongMetadata(data[0], Std.parseInt(data[2]), data[1]);
|
||||||
|
#if debug
|
||||||
|
songs.push(meta);
|
||||||
|
var format = StringTools.replace(meta.songName, " ", "-");
|
||||||
|
switch (format) {
|
||||||
|
case 'Dad-Battle': format = 'Dadbattle';
|
||||||
|
case 'Philly-Nice': format = 'Philly';
|
||||||
|
}
|
||||||
|
|
||||||
|
var diffs = [];
|
||||||
|
FreeplayState.loadDiff(0,format,meta.songName,diffs);
|
||||||
|
FreeplayState.loadDiff(1,format,meta.songName,diffs);
|
||||||
|
FreeplayState.loadDiff(2,format,meta.songName,diffs);
|
||||||
|
FreeplayState.songData.set(meta.songName,diffs);
|
||||||
|
trace('loaded diffs for ' + meta.songName);
|
||||||
|
#else
|
||||||
|
if(Std.parseInt(data[2]) <= FlxG.save.data.weekUnlocked - 1)
|
||||||
|
{
|
||||||
|
songs.push(meta);
|
||||||
|
var format = StringTools.replace(meta.songName, " ", "-");
|
||||||
|
switch (format) {
|
||||||
|
case 'Dad-Battle': format = 'Dadbattle';
|
||||||
|
case 'Philly-Nice': format = 'Philly';
|
||||||
|
}
|
||||||
|
|
||||||
|
var diffs = [];
|
||||||
|
FreeplayState.loadDiff(0,format,meta.songName,diffs);
|
||||||
|
FreeplayState.loadDiff(1,format,meta.songName,diffs);
|
||||||
|
FreeplayState.loadDiff(2,format,meta.songName,diffs);
|
||||||
|
FreeplayState.songData.set(meta.songName,diffs);
|
||||||
|
trace('loaded diffs for ' + meta.songName);
|
||||||
|
}
|
||||||
|
#end
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//trace("\n" + diffList);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if (FlxG.sound.music != null)
|
if (FlxG.sound.music != null)
|
||||||
{
|
{
|
||||||
@ -101,7 +153,7 @@ class FreeplayState extends MusicBeatState
|
|||||||
scoreText.setFormat(Paths.font("vcr.ttf"), 32, FlxColor.WHITE, RIGHT);
|
scoreText.setFormat(Paths.font("vcr.ttf"), 32, FlxColor.WHITE, RIGHT);
|
||||||
// scoreText.alignment = RIGHT;
|
// scoreText.alignment = RIGHT;
|
||||||
|
|
||||||
var scoreBG:FlxSprite = new FlxSprite(scoreText.x - 6, 0).makeGraphic(Std.int(FlxG.width * 0.35), 66, 0xFF000000);
|
var scoreBG:FlxSprite = new FlxSprite(scoreText.x - 6, 0).makeGraphic(Std.int(FlxG.width * 0.35), 105, 0xFF000000);
|
||||||
scoreBG.alpha = 0.6;
|
scoreBG.alpha = 0.6;
|
||||||
add(scoreBG);
|
add(scoreBG);
|
||||||
|
|
||||||
@ -109,6 +161,10 @@ class FreeplayState extends MusicBeatState
|
|||||||
diffText.font = scoreText.font;
|
diffText.font = scoreText.font;
|
||||||
add(diffText);
|
add(diffText);
|
||||||
|
|
||||||
|
diffCalcText = new FlxText(scoreText.x, scoreText.y + 66, 0, "", 24);
|
||||||
|
diffCalcText.font = scoreText.font;
|
||||||
|
add(diffCalcText);
|
||||||
|
|
||||||
comboText = new FlxText(diffText.x + 100, diffText.y, 0, "", 24);
|
comboText = new FlxText(diffText.x + 100, diffText.y, 0, "", 24);
|
||||||
comboText.font = diffText.font;
|
comboText.font = diffText.font;
|
||||||
add(comboText);
|
add(comboText);
|
||||||
@ -238,14 +294,20 @@ class FreeplayState extends MusicBeatState
|
|||||||
case 'Dad-Battle': songFormat = 'Dadbattle';
|
case 'Dad-Battle': songFormat = 'Dadbattle';
|
||||||
case 'Philly-Nice': songFormat = 'Philly';
|
case 'Philly-Nice': songFormat = 'Philly';
|
||||||
}
|
}
|
||||||
|
var hmm;
|
||||||
trace(songs[curSelected].songName);
|
try
|
||||||
|
{
|
||||||
|
hmm = songData.get(songs[curSelected].songName)[curDifficulty];
|
||||||
|
if (hmm == null)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
catch(ex)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var poop:String = Highscore.formatSong(songFormat, curDifficulty);
|
|
||||||
|
|
||||||
trace(poop);
|
PlayState.SONG = hmm;
|
||||||
|
|
||||||
PlayState.SONG = Song.loadFromJson(poop, songs[curSelected].songName);
|
|
||||||
PlayState.isStoryMode = false;
|
PlayState.isStoryMode = false;
|
||||||
PlayState.storyDifficulty = curDifficulty;
|
PlayState.storyDifficulty = curDifficulty;
|
||||||
PlayState.storyWeek = songs[curSelected].week;
|
PlayState.storyWeek = songs[curSelected].week;
|
||||||
@ -274,7 +336,7 @@ class FreeplayState extends MusicBeatState
|
|||||||
intendedScore = Highscore.getScore(songHighscore, curDifficulty);
|
intendedScore = Highscore.getScore(songHighscore, curDifficulty);
|
||||||
combo = Highscore.getCombo(songHighscore, curDifficulty);
|
combo = Highscore.getCombo(songHighscore, curDifficulty);
|
||||||
#end
|
#end
|
||||||
|
diffCalcText.text = 'RATING: ${DiffCalc.CalculateDiff(songData.get(songs[curSelected].songName)[curDifficulty])}';
|
||||||
diffText.text = CoolUtil.difficultyFromInt(curDifficulty).toUpperCase();
|
diffText.text = CoolUtil.difficultyFromInt(curDifficulty).toUpperCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -310,6 +372,8 @@ class FreeplayState extends MusicBeatState
|
|||||||
// lerpScore = 0;
|
// lerpScore = 0;
|
||||||
#end
|
#end
|
||||||
|
|
||||||
|
diffCalcText.text = 'RATING: ${DiffCalc.CalculateDiff(songData.get(songs[curSelected].songName)[curDifficulty])}';
|
||||||
|
|
||||||
#if PRELOAD_ALL
|
#if PRELOAD_ALL
|
||||||
FlxG.sound.playMusic(Paths.inst(songs[curSelected].songName), 0);
|
FlxG.sound.playMusic(Paths.inst(songs[curSelected].songName), 0);
|
||||||
#end
|
#end
|
||||||
|
@ -6,7 +6,10 @@ class KadeEngineData
|
|||||||
{
|
{
|
||||||
public static function initSave()
|
public static function initSave()
|
||||||
{
|
{
|
||||||
if (FlxG.save.data.newInput == null)
|
if (FlxG.save.data.weekUnlocked == null)
|
||||||
|
FlxG.save.data.weekUnlocked = 7;
|
||||||
|
|
||||||
|
if (FlxG.save.data.newInput == null)
|
||||||
FlxG.save.data.newInput = true;
|
FlxG.save.data.newInput = true;
|
||||||
|
|
||||||
if (FlxG.save.data.downscroll == null)
|
if (FlxG.save.data.downscroll == null)
|
||||||
|
@ -320,7 +320,7 @@ class KeyBindMenu extends FlxSubState
|
|||||||
|
|
||||||
var shouldReturn:Bool = true;
|
var shouldReturn:Bool = true;
|
||||||
|
|
||||||
var notAllowed:Array<String> = ["START", "RIGHT_TRIGGER", "LEFT_TRIGGER"];
|
var notAllowed:Array<String> = ["START"];
|
||||||
|
|
||||||
for(x in 0...gpKeys.length)
|
for(x in 0...gpKeys.length)
|
||||||
{
|
{
|
||||||
|
@ -23,7 +23,7 @@ class Main extends Sprite
|
|||||||
var skipSplash:Bool = true; // Whether to skip the flixel splash screen that appears in release mode.
|
var skipSplash:Bool = true; // Whether to skip the flixel splash screen that appears in release mode.
|
||||||
var startFullscreen:Bool = false; // Whether to start the game in fullscreen on desktop targets
|
var startFullscreen:Bool = false; // Whether to start the game in fullscreen on desktop targets
|
||||||
|
|
||||||
public static var watermarks = true; // Whether to put Kade Engine liteartly anywhere
|
public static var watermarks = true; // Whether to put Kade Engine literally anywhere
|
||||||
|
|
||||||
// You can pretty much ignore everything from here on - your code should go in your states.
|
// You can pretty much ignore everything from here on - your code should go in your states.
|
||||||
|
|
||||||
|
@ -250,7 +250,7 @@ class ModchartState
|
|||||||
PlayState.instance.removeObject(PlayState.boyfriend);
|
PlayState.instance.removeObject(PlayState.boyfriend);
|
||||||
PlayState.boyfriend = new Boyfriend(oldboyfriendx, oldboyfriendy, id);
|
PlayState.boyfriend = new Boyfriend(oldboyfriendx, oldboyfriendy, id);
|
||||||
PlayState.instance.addObject(PlayState.boyfriend);
|
PlayState.instance.addObject(PlayState.boyfriend);
|
||||||
PlayState.instance.iconP2.animation.play(id);
|
PlayState.instance.iconP1.animation.play(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
function makeAnimatedLuaSprite(spritePath:String,names:Array<String>,prefixes:Array<String>,startAnim:String, id:String)
|
function makeAnimatedLuaSprite(spritePath:String,names:Array<String>,prefixes:Array<String>,startAnim:String, id:String)
|
||||||
|
@ -19,6 +19,7 @@ class Note extends FlxSprite
|
|||||||
|
|
||||||
public var mustPress:Bool = false;
|
public var mustPress:Bool = false;
|
||||||
public var noteData:Int = 0;
|
public var noteData:Int = 0;
|
||||||
|
public var rawNoteData:Int = 0;
|
||||||
public var canBeHit:Bool = false;
|
public var canBeHit:Bool = false;
|
||||||
public var tooLate:Bool = false;
|
public var tooLate:Bool = false;
|
||||||
public var wasGoodHit:Bool = false;
|
public var wasGoodHit:Bool = false;
|
||||||
@ -99,20 +100,20 @@ class Note extends FlxSprite
|
|||||||
default:
|
default:
|
||||||
frames = Paths.getSparrowAtlas('NOTE_assets');
|
frames = Paths.getSparrowAtlas('NOTE_assets');
|
||||||
|
|
||||||
animation.addByPrefix('greenScroll', 'green instance 1');
|
animation.addByPrefix('greenScroll', 'green0');
|
||||||
animation.addByPrefix('redScroll', 'red instance 1');
|
animation.addByPrefix('redScroll', 'red0');
|
||||||
animation.addByPrefix('blueScroll', 'blue instance 1');
|
animation.addByPrefix('blueScroll', 'blue0');
|
||||||
animation.addByPrefix('purpleScroll', 'purple instance 1');
|
animation.addByPrefix('purpleScroll', 'purple0');
|
||||||
|
|
||||||
animation.addByPrefix('purpleholdend', 'pruple end hold instance 1');
|
animation.addByPrefix('purpleholdend', 'pruple end hold');
|
||||||
animation.addByPrefix('greenholdend', 'green hold end instance 1');
|
animation.addByPrefix('greenholdend', 'green hold end');
|
||||||
animation.addByPrefix('redholdend', 'red hold end instance 1');
|
animation.addByPrefix('redholdend', 'red hold end');
|
||||||
animation.addByPrefix('blueholdend', 'blue hold end instance 1');
|
animation.addByPrefix('blueholdend', 'blue hold end');
|
||||||
|
|
||||||
animation.addByPrefix('purplehold', 'purple hold piece instance 1');
|
animation.addByPrefix('purplehold', 'purple hold piece');
|
||||||
animation.addByPrefix('greenhold', 'green hold piece instance 1');
|
animation.addByPrefix('greenhold', 'green hold piece');
|
||||||
animation.addByPrefix('redhold', 'red hold piece instance 1');
|
animation.addByPrefix('redhold', 'red hold piece');
|
||||||
animation.addByPrefix('bluehold', 'blue hold piece instance 1');
|
animation.addByPrefix('bluehold', 'blue hold piece');
|
||||||
|
|
||||||
setGraphicSize(Std.int(width * 0.7));
|
setGraphicSize(Std.int(width * 0.7));
|
||||||
updateHitbox();
|
updateHitbox();
|
||||||
@ -166,7 +167,7 @@ class Note extends FlxSprite
|
|||||||
|
|
||||||
x -= width / 2;
|
x -= width / 2;
|
||||||
|
|
||||||
if (PlayState.curStage.startsWith('school'))
|
if (noteTypeCheck == 'pixel')
|
||||||
x += 30;
|
x += 30;
|
||||||
|
|
||||||
if (prevNote.isSustainNote)
|
if (prevNote.isSustainNote)
|
||||||
|
@ -698,3 +698,127 @@ class CamZoomOption extends Option
|
|||||||
return "Camera Zoom " + (!FlxG.save.data.camzoom ? "off" : "on");
|
return "Camera Zoom " + (!FlxG.save.data.camzoom ? "off" : "on");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class LockWeeksOption extends Option
|
||||||
|
{
|
||||||
|
var confirm:Bool = false;
|
||||||
|
|
||||||
|
public function new(desc:String)
|
||||||
|
{
|
||||||
|
super();
|
||||||
|
description = desc;
|
||||||
|
}
|
||||||
|
public override function press():Bool
|
||||||
|
{
|
||||||
|
if(!confirm)
|
||||||
|
{
|
||||||
|
confirm = true;
|
||||||
|
display = updateDisplay();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
FlxG.save.data.weekUnlocked = 1;
|
||||||
|
StoryMenuState.weekUnlocked = [true, true];
|
||||||
|
trace('Weeks Locked');
|
||||||
|
display = updateDisplay();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private override function updateDisplay():String
|
||||||
|
{
|
||||||
|
return confirm ? "Confirm Story Reset" : "Reset Story Progress";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ResetScoreOption extends Option
|
||||||
|
{
|
||||||
|
var confirm:Bool = false;
|
||||||
|
|
||||||
|
public function new(desc:String)
|
||||||
|
{
|
||||||
|
super();
|
||||||
|
description = desc;
|
||||||
|
}
|
||||||
|
public override function press():Bool
|
||||||
|
{
|
||||||
|
if(!confirm)
|
||||||
|
{
|
||||||
|
confirm = true;
|
||||||
|
display = updateDisplay();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
FlxG.save.data.songScores = null;
|
||||||
|
for(key in Highscore.songScores.keys())
|
||||||
|
{
|
||||||
|
Highscore.songScores[key] = 0;
|
||||||
|
}
|
||||||
|
FlxG.save.data.songCombos = null;
|
||||||
|
for(key in Highscore.songCombos.keys())
|
||||||
|
{
|
||||||
|
Highscore.songCombos[key] = '';
|
||||||
|
}
|
||||||
|
confirm = false;
|
||||||
|
trace('Highscores Wiped');
|
||||||
|
display = updateDisplay();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private override function updateDisplay():String
|
||||||
|
{
|
||||||
|
return confirm ? "Confirm Score Reset" : "Reset Score";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ResetSettings extends Option
|
||||||
|
{
|
||||||
|
var confirm:Bool = false;
|
||||||
|
|
||||||
|
public function new(desc:String)
|
||||||
|
{
|
||||||
|
super();
|
||||||
|
description = desc;
|
||||||
|
}
|
||||||
|
public override function press():Bool
|
||||||
|
{
|
||||||
|
if(!confirm)
|
||||||
|
{
|
||||||
|
confirm = true;
|
||||||
|
display = updateDisplay();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
FlxG.save.data.weekUnlocked = null;
|
||||||
|
FlxG.save.data.newInput = null;
|
||||||
|
FlxG.save.data.downscroll = null;
|
||||||
|
FlxG.save.data.dfjk = null;
|
||||||
|
FlxG.save.data.accuracyDisplay = null;
|
||||||
|
FlxG.save.data.offset = null;
|
||||||
|
FlxG.save.data.songPosition = null;
|
||||||
|
FlxG.save.data.fps = null;
|
||||||
|
FlxG.save.data.changedHit = null;
|
||||||
|
FlxG.save.data.fpsRain = null;
|
||||||
|
FlxG.save.data.fpsCap = null;
|
||||||
|
FlxG.save.data.scrollSpeed = null;
|
||||||
|
FlxG.save.data.npsDisplay = null;
|
||||||
|
FlxG.save.data.frames = null;
|
||||||
|
FlxG.save.data.accuracyMod = null;
|
||||||
|
FlxG.save.data.watermark = null;
|
||||||
|
FlxG.save.data.ghost = null;
|
||||||
|
FlxG.save.data.distractions = null;
|
||||||
|
FlxG.save.data.flashing = null;
|
||||||
|
FlxG.save.data.resetButton = null;
|
||||||
|
FlxG.save.data.botplay = null;
|
||||||
|
FlxG.save.data.cpuStrums = null;
|
||||||
|
FlxG.save.data.strumline = null;
|
||||||
|
FlxG.save.data.customStrumLine = null;
|
||||||
|
FlxG.save.data.camzoom = null;
|
||||||
|
KadeEngineData.initSave();
|
||||||
|
confirm = false;
|
||||||
|
trace('All settings have been reset');
|
||||||
|
display = updateDisplay();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private override function updateDisplay():String
|
||||||
|
{
|
||||||
|
return confirm ? "Confirm Settings Reset" : "Reset Settings";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -42,18 +42,16 @@ class OptionsMenu extends MusicBeatState
|
|||||||
new OptionCategory("Appearance", [
|
new OptionCategory("Appearance", [
|
||||||
new DistractionsAndEffectsOption("Toggle stage distractions that can hinder your gameplay."),
|
new DistractionsAndEffectsOption("Toggle stage distractions that can hinder your gameplay."),
|
||||||
new CamZoomOption("Toggle the camera zoom in-game."),
|
new CamZoomOption("Toggle the camera zoom in-game."),
|
||||||
#if desktop
|
|
||||||
new RainbowFPSOption("Make the FPS Counter Rainbow"),
|
new RainbowFPSOption("Make the FPS Counter Rainbow"),
|
||||||
new AccuracyOption("Display accuracy information."),
|
new AccuracyOption("Display accuracy information."),
|
||||||
new NPSDisplayOption("Shows your current Notes Per Second."),
|
new NPSDisplayOption("Shows your current Notes Per Second."),
|
||||||
new SongPositionOption("Show the songs current position (as a bar)"),
|
new SongPositionOption("Show the songs current position (as a bar)"),
|
||||||
new CpuStrums("CPU's strumline lights up when a note hits it."),
|
new CpuStrums("CPU's strumline lights up when a note hits it."),
|
||||||
#end
|
|
||||||
]),
|
]),
|
||||||
|
|
||||||
new OptionCategory("Misc", [
|
new OptionCategory("Misc", [
|
||||||
#if desktop
|
|
||||||
new FPSOption("Toggle the FPS Counter"),
|
new FPSOption("Toggle the FPS Counter"),
|
||||||
|
#if desktop
|
||||||
new ReplayOption("View replays"),
|
new ReplayOption("View replays"),
|
||||||
#end
|
#end
|
||||||
new FlashingLightsOption("Toggle flashing lights that can cause epileptic seizures and strain."),
|
new FlashingLightsOption("Toggle flashing lights that can cause epileptic seizures and strain."),
|
||||||
@ -61,7 +59,13 @@ class OptionsMenu extends MusicBeatState
|
|||||||
new ScoreScreen("Show the score screen after the end of a song"),
|
new ScoreScreen("Show the score screen after the end of a song"),
|
||||||
new ShowInput("Display every single input in the score screen."),
|
new ShowInput("Display every single input in the score screen."),
|
||||||
new Optimization("No backgrounds, no characters, centered notes, no player 2."),
|
new Optimization("No backgrounds, no characters, centered notes, no player 2."),
|
||||||
new BotPlay("Showcase your charts and mods with autoplay."),
|
new BotPlay("Showcase your charts and mods with autoplay.")
|
||||||
|
]),
|
||||||
|
|
||||||
|
new OptionCategory("Manage Save Data", [
|
||||||
|
new ResetScoreOption("Reset your score on all songs and weeks."),
|
||||||
|
new LockWeeksOption("Reset your storymode progress. (only Tutorial + Week 1 will be unlocked)"),
|
||||||
|
new ResetSettings("Reset ALL your settings.")
|
||||||
])
|
])
|
||||||
|
|
||||||
];
|
];
|
||||||
|
@ -67,7 +67,7 @@ class Paths
|
|||||||
|
|
||||||
inline static public function txt(key:String, ?library:String)
|
inline static public function txt(key:String, ?library:String)
|
||||||
{
|
{
|
||||||
return getPath('data/$key.txt', TEXT, library);
|
return getPath('$key.txt', TEXT, library);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline static public function xml(key:String, ?library:String)
|
inline static public function xml(key:String, ?library:String)
|
||||||
|
@ -253,6 +253,8 @@ class PlayState extends MusicBeatState
|
|||||||
}
|
}
|
||||||
misses = 0;
|
misses = 0;
|
||||||
|
|
||||||
|
|
||||||
|
highestCombo = 0;
|
||||||
repPresses = 0;
|
repPresses = 0;
|
||||||
repReleases = 0;
|
repReleases = 0;
|
||||||
|
|
||||||
@ -360,11 +362,11 @@ class PlayState extends MusicBeatState
|
|||||||
"Only then I will even CONSIDER letting you\ndate my daughter!"
|
"Only then I will even CONSIDER letting you\ndate my daughter!"
|
||||||
];
|
];
|
||||||
case 'senpai':
|
case 'senpai':
|
||||||
dialogue = CoolUtil.coolTextFile(Paths.txt('senpai/senpaiDialogue'));
|
dialogue = CoolUtil.coolTextFile(Paths.txt('data/senpai/senpaiDialogue'));
|
||||||
case 'roses':
|
case 'roses':
|
||||||
dialogue = CoolUtil.coolTextFile(Paths.txt('roses/rosesDialogue'));
|
dialogue = CoolUtil.coolTextFile(Paths.txt('data/roses/rosesDialogue'));
|
||||||
case 'thorns':
|
case 'thorns':
|
||||||
dialogue = CoolUtil.coolTextFile(Paths.txt('thorns/thornsDialogue'));
|
dialogue = CoolUtil.coolTextFile(Paths.txt('data/thorns/thornsDialogue'));
|
||||||
}
|
}
|
||||||
|
|
||||||
//defaults if no stage was found in chart
|
//defaults if no stage was found in chart
|
||||||
@ -1127,6 +1129,7 @@ class PlayState extends MusicBeatState
|
|||||||
rep = new Replay("na");
|
rep = new Replay("na");
|
||||||
|
|
||||||
FlxG.stage.addEventListener(KeyboardEvent.KEY_DOWN,handleInput);
|
FlxG.stage.addEventListener(KeyboardEvent.KEY_DOWN,handleInput);
|
||||||
|
FlxG.stage.addEventListener(KeyboardEvent.KEY_UP,releaseInput);
|
||||||
|
|
||||||
super.create();
|
super.create();
|
||||||
}
|
}
|
||||||
@ -1366,6 +1369,41 @@ class PlayState extends MusicBeatState
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var keys = [false,false,false,false];
|
||||||
|
|
||||||
|
private function releaseInput(evt:KeyboardEvent):Void // handles releases
|
||||||
|
{
|
||||||
|
@:privateAccess
|
||||||
|
var key = FlxKey.toStringMap.get(Keyboard.__convertKeyCode(evt.keyCode));
|
||||||
|
|
||||||
|
var binds:Array<String> = [FlxG.save.data.leftBind,FlxG.save.data.downBind, FlxG.save.data.upBind, FlxG.save.data.rightBind];
|
||||||
|
|
||||||
|
var data = -1;
|
||||||
|
|
||||||
|
switch(evt.keyCode) // arrow keys
|
||||||
|
{
|
||||||
|
case 37:
|
||||||
|
data = 0;
|
||||||
|
case 40:
|
||||||
|
data = 1;
|
||||||
|
case 38:
|
||||||
|
data = 2;
|
||||||
|
case 39:
|
||||||
|
data = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i in 0...binds.length) // binds
|
||||||
|
{
|
||||||
|
if (binds[i].toLowerCase() == key.toLowerCase())
|
||||||
|
data = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data == -1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
keys[data] = false;
|
||||||
|
}
|
||||||
|
|
||||||
private function handleInput(evt:KeyboardEvent):Void { // this actually handles press inputs
|
private function handleInput(evt:KeyboardEvent):Void { // this actually handles press inputs
|
||||||
|
|
||||||
if (PlayStateChangeables.botPlay || loadRep || paused)
|
if (PlayStateChangeables.botPlay || loadRep || paused)
|
||||||
@ -1399,15 +1437,16 @@ class PlayState extends MusicBeatState
|
|||||||
if (binds[i].toLowerCase() == key.toLowerCase())
|
if (binds[i].toLowerCase() == key.toLowerCase())
|
||||||
data = i;
|
data = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (evt.keyLocation == KeyLocation.NUM_PAD)
|
|
||||||
{
|
|
||||||
trace(String.fromCharCode(evt.charCode) + " " + key);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (data == -1)
|
if (data == -1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (keys[data])
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
keys[data] = true;
|
||||||
|
|
||||||
var ana = new Ana(Conductor.songPosition, null, false, "miss", data);
|
var ana = new Ana(Conductor.songPosition, null, false, "miss", data);
|
||||||
|
|
||||||
var dataNotes = [];
|
var dataNotes = [];
|
||||||
@ -1419,7 +1458,7 @@ class PlayState extends MusicBeatState
|
|||||||
|
|
||||||
|
|
||||||
dataNotes.sort((a, b) -> Std.int(a.strumTime - b.strumTime)); // sort by the earliest note
|
dataNotes.sort((a, b) -> Std.int(a.strumTime - b.strumTime)); // sort by the earliest note
|
||||||
|
|
||||||
if (dataNotes.length != 0)
|
if (dataNotes.length != 0)
|
||||||
{
|
{
|
||||||
var coolNote = dataNotes[0];
|
var coolNote = dataNotes[0];
|
||||||
@ -1592,6 +1631,7 @@ class PlayState extends MusicBeatState
|
|||||||
swagNote.sustainLength = songNotes[2];
|
swagNote.sustainLength = songNotes[2];
|
||||||
swagNote.scrollFactor.set(0, 0);
|
swagNote.scrollFactor.set(0, 0);
|
||||||
|
|
||||||
|
|
||||||
var susLength:Float = swagNote.sustainLength;
|
var susLength:Float = swagNote.sustainLength;
|
||||||
|
|
||||||
susLength = susLength / Conductor.stepCrochet;
|
susLength = susLength / Conductor.stepCrochet;
|
||||||
@ -1695,70 +1735,70 @@ class PlayState extends MusicBeatState
|
|||||||
|
|
||||||
case 'normal':
|
case 'normal':
|
||||||
babyArrow.frames = Paths.getSparrowAtlas('NOTE_assets');
|
babyArrow.frames = Paths.getSparrowAtlas('NOTE_assets');
|
||||||
babyArrow.animation.addByPrefix('green', 'arrow static instance 1');
|
babyArrow.animation.addByPrefix('green', 'arrowUP');
|
||||||
babyArrow.animation.addByPrefix('blue', 'arrow static instance 2');
|
babyArrow.animation.addByPrefix('blue', 'arrowDOWN');
|
||||||
babyArrow.animation.addByPrefix('purple', 'arrow static instance 3');
|
babyArrow.animation.addByPrefix('purple', 'arrowLEFT');
|
||||||
babyArrow.animation.addByPrefix('red', 'arrow static instance 4');
|
babyArrow.animation.addByPrefix('red', 'arrowRIGHT');
|
||||||
|
|
||||||
babyArrow.antialiasing = true;
|
babyArrow.antialiasing = true;
|
||||||
babyArrow.setGraphicSize(Std.int(babyArrow.width * 0.7));
|
babyArrow.setGraphicSize(Std.int(babyArrow.width * 0.7));
|
||||||
|
|
||||||
switch (Math.abs(i))
|
switch (Math.abs(i))
|
||||||
{
|
{
|
||||||
case 0:
|
|
||||||
babyArrow.x += Note.swagWidth * 0;
|
|
||||||
babyArrow.animation.addByPrefix('static', 'arrow static instance 1');
|
|
||||||
babyArrow.animation.addByPrefix('pressed', 'left press instance 1', 24, false);
|
|
||||||
babyArrow.animation.addByPrefix('confirm', 'left confirm instance 1', 24, false);
|
|
||||||
case 1:
|
|
||||||
babyArrow.x += Note.swagWidth * 1;
|
|
||||||
babyArrow.animation.addByPrefix('static', 'arrow static instance 2');
|
|
||||||
babyArrow.animation.addByPrefix('pressed', 'down press instance 1', 24, false);
|
|
||||||
babyArrow.animation.addByPrefix('confirm', 'down confirm instance 1', 24, false);
|
|
||||||
case 2:
|
case 2:
|
||||||
babyArrow.x += Note.swagWidth * 2;
|
babyArrow.x += Note.swagWidth * 2;
|
||||||
babyArrow.animation.addByPrefix('static', 'arrow static instance 4');
|
babyArrow.animation.addByPrefix('static', 'arrowUP');
|
||||||
babyArrow.animation.addByPrefix('pressed', 'up press instance 1', 24, false);
|
babyArrow.animation.addByPrefix('pressed', 'up press', 24, false);
|
||||||
babyArrow.animation.addByPrefix('confirm', 'up confirm instance 1', 24, false);
|
babyArrow.animation.addByPrefix('confirm', 'up confirm', 24, false);
|
||||||
case 3:
|
case 3:
|
||||||
babyArrow.x += Note.swagWidth * 3;
|
babyArrow.x += Note.swagWidth * 3;
|
||||||
babyArrow.animation.addByPrefix('static', 'arrow static instance 3');
|
babyArrow.animation.addByPrefix('static', 'arrowRIGHT');
|
||||||
babyArrow.animation.addByPrefix('pressed', 'right press instance 1', 24, false);
|
babyArrow.animation.addByPrefix('pressed', 'right press', 24, false);
|
||||||
babyArrow.animation.addByPrefix('confirm', 'right confirm instance 1', 24, false);
|
babyArrow.animation.addByPrefix('confirm', 'right confirm', 24, false);
|
||||||
}
|
case 1:
|
||||||
|
babyArrow.x += Note.swagWidth * 1;
|
||||||
|
babyArrow.animation.addByPrefix('static', 'arrowDOWN');
|
||||||
|
babyArrow.animation.addByPrefix('pressed', 'down press', 24, false);
|
||||||
|
babyArrow.animation.addByPrefix('confirm', 'down confirm', 24, false);
|
||||||
|
case 0:
|
||||||
|
babyArrow.x += Note.swagWidth * 0;
|
||||||
|
babyArrow.animation.addByPrefix('static', 'arrowLEFT');
|
||||||
|
babyArrow.animation.addByPrefix('pressed', 'left press', 24, false);
|
||||||
|
babyArrow.animation.addByPrefix('confirm', 'left confirm', 24, false);
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
babyArrow.frames = Paths.getSparrowAtlas('NOTE_assets');
|
babyArrow.frames = Paths.getSparrowAtlas('NOTE_assets');
|
||||||
babyArrow.animation.addByPrefix('green', 'arrow static instance 1');
|
babyArrow.animation.addByPrefix('green', 'arrowUP');
|
||||||
babyArrow.animation.addByPrefix('blue', 'arrow static instance 2');
|
babyArrow.animation.addByPrefix('blue', 'arrowDOWN');
|
||||||
babyArrow.animation.addByPrefix('purple', 'arrow static instance 3');
|
babyArrow.animation.addByPrefix('purple', 'arrowLEFT');
|
||||||
babyArrow.animation.addByPrefix('red', 'arrow static instance 4');
|
babyArrow.animation.addByPrefix('red', 'arrowRIGHT');
|
||||||
|
|
||||||
babyArrow.antialiasing = true;
|
babyArrow.antialiasing = true;
|
||||||
babyArrow.setGraphicSize(Std.int(babyArrow.width * 0.7));
|
babyArrow.setGraphicSize(Std.int(babyArrow.width * 0.7));
|
||||||
|
|
||||||
switch (Math.abs(i))
|
switch (Math.abs(i))
|
||||||
{
|
{
|
||||||
case 0:
|
|
||||||
babyArrow.x += Note.swagWidth * 0;
|
|
||||||
babyArrow.animation.addByPrefix('static', 'arrow static instance 1');
|
|
||||||
babyArrow.animation.addByPrefix('pressed', 'left press instance 1', 24, false);
|
|
||||||
babyArrow.animation.addByPrefix('confirm', 'left confirm instance 1', 24, false);
|
|
||||||
case 1:
|
|
||||||
babyArrow.x += Note.swagWidth * 1;
|
|
||||||
babyArrow.animation.addByPrefix('static', 'arrow static instance 2');
|
|
||||||
babyArrow.animation.addByPrefix('pressed', 'down press instance 1', 24, false);
|
|
||||||
babyArrow.animation.addByPrefix('confirm', 'down confirm instance 1', 24, false);
|
|
||||||
case 2:
|
case 2:
|
||||||
babyArrow.x += Note.swagWidth * 2;
|
babyArrow.x += Note.swagWidth * 2;
|
||||||
babyArrow.animation.addByPrefix('static', 'arrow static instance 4');
|
babyArrow.animation.addByPrefix('static', 'arrowUP');
|
||||||
babyArrow.animation.addByPrefix('pressed', 'up press instance 1', 24, false);
|
babyArrow.animation.addByPrefix('pressed', 'up press', 24, false);
|
||||||
babyArrow.animation.addByPrefix('confirm', 'up confirm instance 1', 24, false);
|
babyArrow.animation.addByPrefix('confirm', 'up confirm', 24, false);
|
||||||
case 3:
|
case 3:
|
||||||
babyArrow.x += Note.swagWidth * 3;
|
babyArrow.x += Note.swagWidth * 3;
|
||||||
babyArrow.animation.addByPrefix('static', 'arrow static instance 3');
|
babyArrow.animation.addByPrefix('static', 'arrowRIGHT');
|
||||||
babyArrow.animation.addByPrefix('pressed', 'right press instance 1', 24, false);
|
babyArrow.animation.addByPrefix('pressed', 'right press', 24, false);
|
||||||
babyArrow.animation.addByPrefix('confirm', 'right confirm instance 1', 24, false);
|
babyArrow.animation.addByPrefix('confirm', 'right confirm', 24, false);
|
||||||
|
case 1:
|
||||||
|
babyArrow.x += Note.swagWidth * 1;
|
||||||
|
babyArrow.animation.addByPrefix('static', 'arrowDOWN');
|
||||||
|
babyArrow.animation.addByPrefix('pressed', 'down press', 24, false);
|
||||||
|
babyArrow.animation.addByPrefix('confirm', 'down confirm', 24, false);
|
||||||
|
case 0:
|
||||||
|
babyArrow.x += Note.swagWidth * 0;
|
||||||
|
babyArrow.animation.addByPrefix('static', 'arrowLEFT');
|
||||||
|
babyArrow.animation.addByPrefix('pressed', 'left press', 24, false);
|
||||||
|
babyArrow.animation.addByPrefix('confirm', 'left confirm', 24, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2039,6 +2079,7 @@ class PlayState extends MusicBeatState
|
|||||||
#end
|
#end
|
||||||
FlxG.switchState(new ChartingState());
|
FlxG.switchState(new ChartingState());
|
||||||
FlxG.stage.removeEventListener(KeyboardEvent.KEY_DOWN,handleInput);
|
FlxG.stage.removeEventListener(KeyboardEvent.KEY_DOWN,handleInput);
|
||||||
|
FlxG.stage.removeEventListener(KeyboardEvent.KEY_UP,releaseInput);
|
||||||
#if windows
|
#if windows
|
||||||
if (luaModchart != null)
|
if (luaModchart != null)
|
||||||
{
|
{
|
||||||
@ -2091,6 +2132,7 @@ class PlayState extends MusicBeatState
|
|||||||
|
|
||||||
FlxG.switchState(new AnimationDebug(SONG.player2));
|
FlxG.switchState(new AnimationDebug(SONG.player2));
|
||||||
FlxG.stage.removeEventListener(KeyboardEvent.KEY_DOWN,handleInput);
|
FlxG.stage.removeEventListener(KeyboardEvent.KEY_DOWN,handleInput);
|
||||||
|
FlxG.stage.removeEventListener(KeyboardEvent.KEY_UP,releaseInput);
|
||||||
#if windows
|
#if windows
|
||||||
if (luaModchart != null)
|
if (luaModchart != null)
|
||||||
{
|
{
|
||||||
@ -2104,6 +2146,7 @@ class PlayState extends MusicBeatState
|
|||||||
{
|
{
|
||||||
FlxG.switchState(new AnimationDebug(SONG.player1));
|
FlxG.switchState(new AnimationDebug(SONG.player1));
|
||||||
FlxG.stage.removeEventListener(KeyboardEvent.KEY_DOWN,handleInput);
|
FlxG.stage.removeEventListener(KeyboardEvent.KEY_DOWN,handleInput);
|
||||||
|
FlxG.stage.removeEventListener(KeyboardEvent.KEY_UP,releaseInput);
|
||||||
#if windows
|
#if windows
|
||||||
if (luaModchart != null)
|
if (luaModchart != null)
|
||||||
{
|
{
|
||||||
@ -2275,18 +2318,12 @@ class PlayState extends MusicBeatState
|
|||||||
|
|
||||||
switch (dad.curCharacter)
|
switch (dad.curCharacter)
|
||||||
{
|
{
|
||||||
case 'mom':
|
case 'mom' | 'mom-car':
|
||||||
camFollow.y = dad.getMidpoint().y;
|
camFollow.y = dad.getMidpoint().y;
|
||||||
case 'senpai':
|
case 'senpai' | 'senpai-angry':
|
||||||
camFollow.y = dad.getMidpoint().y - 430;
|
|
||||||
camFollow.x = dad.getMidpoint().x - 100;
|
|
||||||
case 'senpai-angry':
|
|
||||||
camFollow.y = dad.getMidpoint().y - 430;
|
camFollow.y = dad.getMidpoint().y - 430;
|
||||||
camFollow.x = dad.getMidpoint().x - 100;
|
camFollow.x = dad.getMidpoint().x - 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dad.curCharacter == 'mom')
|
|
||||||
vocals.volume = 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PlayState.SONG.notes[Std.int(curStep / 16)].mustHitSection && camFollow.x != boyfriend.getMidpoint().x - 100)
|
if (PlayState.SONG.notes[Std.int(curStep / 16)].mustHitSection && camFollow.x != boyfriend.getMidpoint().x - 100)
|
||||||
@ -2645,7 +2682,7 @@ class PlayState extends MusicBeatState
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!inCutscene)
|
if (!inCutscene && songStarted)
|
||||||
keyShit();
|
keyShit();
|
||||||
|
|
||||||
|
|
||||||
@ -2658,6 +2695,7 @@ class PlayState extends MusicBeatState
|
|||||||
function endSong():Void
|
function endSong():Void
|
||||||
{
|
{
|
||||||
FlxG.stage.removeEventListener(KeyboardEvent.KEY_DOWN,handleInput);
|
FlxG.stage.removeEventListener(KeyboardEvent.KEY_DOWN,handleInput);
|
||||||
|
FlxG.stage.removeEventListener(KeyboardEvent.KEY_UP,releaseInput);
|
||||||
if (useVideo)
|
if (useVideo)
|
||||||
{
|
{
|
||||||
GlobalVideo.get().stop();
|
GlobalVideo.get().stop();
|
||||||
@ -2750,17 +2788,13 @@ class PlayState extends MusicBeatState
|
|||||||
}
|
}
|
||||||
#end
|
#end
|
||||||
|
|
||||||
// if ()
|
|
||||||
StoryMenuState.weekUnlocked[Std.int(Math.min(storyWeek + 1, StoryMenuState.weekUnlocked.length - 1))] = true;
|
|
||||||
|
|
||||||
if (SONG.validScore)
|
if (SONG.validScore)
|
||||||
{
|
{
|
||||||
NGio.unlockMedal(60961);
|
NGio.unlockMedal(60961);
|
||||||
Highscore.saveWeekScore(storyWeek, campaignScore, storyDifficulty);
|
Highscore.saveWeekScore(storyWeek, campaignScore, storyDifficulty);
|
||||||
}
|
}
|
||||||
|
|
||||||
FlxG.save.data.weekUnlocked = StoryMenuState.weekUnlocked;
|
StoryMenuState.unlockNextWeek(storyWeek);
|
||||||
FlxG.save.flush();
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -3147,6 +3181,8 @@ class PlayState extends MusicBeatState
|
|||||||
};
|
};
|
||||||
#end
|
#end
|
||||||
|
|
||||||
|
var nonCpp = false;
|
||||||
|
|
||||||
|
|
||||||
// Prevent player input if botplay is on
|
// Prevent player input if botplay is on
|
||||||
if(PlayStateChangeables.botPlay)
|
if(PlayStateChangeables.botPlay)
|
||||||
@ -3156,6 +3192,10 @@ class PlayState extends MusicBeatState
|
|||||||
releaseArray = [false, false, false, false];
|
releaseArray = [false, false, false, false];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if !cpp
|
||||||
|
nonCpp = true;
|
||||||
|
#end
|
||||||
|
|
||||||
var anas:Array<Ana> = [null,null,null,null];
|
var anas:Array<Ana> = [null,null,null,null];
|
||||||
|
|
||||||
for (i in 0...pressArray.length)
|
for (i in 0...pressArray.length)
|
||||||
@ -3172,7 +3212,7 @@ class PlayState extends MusicBeatState
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (KeyBinds.gamepad && !FlxG.keys.justPressed.ANY)
|
if ((KeyBinds.gamepad && !FlxG.keys.justPressed.ANY) || nonCpp)
|
||||||
{
|
{
|
||||||
// PRESSES, check for note hits
|
// PRESSES, check for note hits
|
||||||
if (pressArray.contains(true) && generatedMusic)
|
if (pressArray.contains(true) && generatedMusic)
|
||||||
@ -3876,6 +3916,10 @@ class PlayState extends MusicBeatState
|
|||||||
boyfriend.playAnim('idle');
|
boyfriend.playAnim('idle');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!dad.animation.curAnim.name.startsWith("sing"))
|
||||||
|
{
|
||||||
|
dad.dance();
|
||||||
|
}
|
||||||
|
|
||||||
if (curBeat % 8 == 7 && curSong == 'Bopeebo')
|
if (curBeat % 8 == 7 && curSong == 'Bopeebo')
|
||||||
{
|
{
|
||||||
|
@ -2,7 +2,7 @@ package;
|
|||||||
|
|
||||||
typedef SwagSection =
|
typedef SwagSection =
|
||||||
{
|
{
|
||||||
var sectionNotes:Array<Dynamic>;
|
var sectionNotes:Array<Array<Dynamic>>;
|
||||||
var lengthInSteps:Int;
|
var lengthInSteps:Int;
|
||||||
var typeOfSection:Int;
|
var typeOfSection:Int;
|
||||||
var mustHitSection:Bool;
|
var mustHitSection:Bool;
|
||||||
@ -13,7 +13,7 @@ typedef SwagSection =
|
|||||||
|
|
||||||
class Section
|
class Section
|
||||||
{
|
{
|
||||||
public var sectionNotes:Array<Dynamic> = [];
|
public var sectionNotes:Array<Array<Dynamic>> = [];
|
||||||
|
|
||||||
public var lengthInSteps:Int = 16;
|
public var lengthInSteps:Int = 16;
|
||||||
public var typeOfSection:Int = 0;
|
public var typeOfSection:Int = 0;
|
||||||
|
@ -24,18 +24,21 @@ class StoryMenuState extends MusicBeatState
|
|||||||
{
|
{
|
||||||
var scoreText:FlxText;
|
var scoreText:FlxText;
|
||||||
|
|
||||||
var weekData:Array<Dynamic> = [
|
static function weekData():Array<Dynamic>
|
||||||
['Tutorial'],
|
{
|
||||||
['Bopeebo', 'Fresh', 'Dad Battle'],
|
return [
|
||||||
['Spookeez', 'South', "Monster"],
|
['Tutorial'],
|
||||||
['Pico', 'Philly Nice', "Blammed"],
|
['Bopeebo', 'Fresh', 'Dad Battle'],
|
||||||
['Satin Panties', "High", "Milf"],
|
['Spookeez', 'South', "Monster"],
|
||||||
['Cocoa', 'Eggnog', 'Winter Horrorland'],
|
['Pico', 'Philly Nice', "Blammed"],
|
||||||
['Senpai', 'Roses', 'Thorns']
|
['Satin Panties', "High", "Milf"],
|
||||||
];
|
['Cocoa', 'Eggnog', 'Winter Horrorland'],
|
||||||
|
['Senpai', 'Roses', 'Thorns']
|
||||||
|
];
|
||||||
|
}
|
||||||
var curDifficulty:Int = 1;
|
var curDifficulty:Int = 1;
|
||||||
|
|
||||||
public static var weekUnlocked:Array<Bool> = [true, true, true, true, true, true, true];
|
public static var weekUnlocked:Array<Bool> = [];
|
||||||
|
|
||||||
var weekCharacters:Array<Dynamic> = [
|
var weekCharacters:Array<Dynamic> = [
|
||||||
['', 'bf', 'gf'],
|
['', 'bf', 'gf'],
|
||||||
@ -73,8 +76,28 @@ class StoryMenuState extends MusicBeatState
|
|||||||
var leftArrow:FlxSprite;
|
var leftArrow:FlxSprite;
|
||||||
var rightArrow:FlxSprite;
|
var rightArrow:FlxSprite;
|
||||||
|
|
||||||
|
function unlockWeeks():Array<Bool>
|
||||||
|
{
|
||||||
|
var weeks:Array<Bool> = [];
|
||||||
|
#if debug
|
||||||
|
for(i in 0...weekNames.length)
|
||||||
|
weeks.push(true);
|
||||||
|
return weeks;
|
||||||
|
#end
|
||||||
|
|
||||||
|
weeks.push(true);
|
||||||
|
|
||||||
|
for(i in 0...FlxG.save.data.weekUnlocked)
|
||||||
|
{
|
||||||
|
weeks.push(true);
|
||||||
|
}
|
||||||
|
return weeks;
|
||||||
|
}
|
||||||
|
|
||||||
override function create()
|
override function create()
|
||||||
{
|
{
|
||||||
|
weekUnlocked = unlockWeeks();
|
||||||
|
|
||||||
#if windows
|
#if windows
|
||||||
// Updating Discord Rich Presence
|
// Updating Discord Rich Presence
|
||||||
DiscordClient.changePresence("In the Story Mode Menu", null);
|
DiscordClient.changePresence("In the Story Mode Menu", null);
|
||||||
@ -110,17 +133,17 @@ class StoryMenuState extends MusicBeatState
|
|||||||
grpWeekText = new FlxTypedGroup<MenuItem>();
|
grpWeekText = new FlxTypedGroup<MenuItem>();
|
||||||
add(grpWeekText);
|
add(grpWeekText);
|
||||||
|
|
||||||
|
grpLocks = new FlxTypedGroup<FlxSprite>();
|
||||||
|
add(grpLocks);
|
||||||
|
|
||||||
var blackBarThingie:FlxSprite = new FlxSprite().makeGraphic(FlxG.width, 56, FlxColor.BLACK);
|
var blackBarThingie:FlxSprite = new FlxSprite().makeGraphic(FlxG.width, 56, FlxColor.BLACK);
|
||||||
add(blackBarThingie);
|
add(blackBarThingie);
|
||||||
|
|
||||||
grpWeekCharacters = new FlxTypedGroup<MenuCharacter>();
|
grpWeekCharacters = new FlxTypedGroup<MenuCharacter>();
|
||||||
|
|
||||||
grpLocks = new FlxTypedGroup<FlxSprite>();
|
|
||||||
add(grpLocks);
|
|
||||||
|
|
||||||
trace("Line 70");
|
trace("Line 70");
|
||||||
|
|
||||||
for (i in 0...weekData.length)
|
for (i in 0...weekData().length)
|
||||||
{
|
{
|
||||||
var weekThing:MenuItem = new MenuItem(0, yellowBG.y + yellowBG.height + 10, i);
|
var weekThing:MenuItem = new MenuItem(0, yellowBG.y + yellowBG.height + 10, i);
|
||||||
weekThing.y += ((weekThing.height + 20) * i);
|
weekThing.y += ((weekThing.height + 20) * i);
|
||||||
@ -134,6 +157,7 @@ class StoryMenuState extends MusicBeatState
|
|||||||
// Needs an offset thingie
|
// Needs an offset thingie
|
||||||
if (!weekUnlocked[i])
|
if (!weekUnlocked[i])
|
||||||
{
|
{
|
||||||
|
trace('locking week ' + i);
|
||||||
var lock:FlxSprite = new FlxSprite(weekThing.width + 10 + weekThing.x);
|
var lock:FlxSprite = new FlxSprite(weekThing.width + 10 + weekThing.x);
|
||||||
lock.frames = ui_tex;
|
lock.frames = ui_tex;
|
||||||
lock.animation.addByPrefix('lock', 'lock');
|
lock.animation.addByPrefix('lock', 'lock');
|
||||||
@ -195,6 +219,19 @@ class StoryMenuState extends MusicBeatState
|
|||||||
|
|
||||||
updateText();
|
updateText();
|
||||||
|
|
||||||
|
|
||||||
|
var bullShit:Int = 0;
|
||||||
|
|
||||||
|
for (item in grpWeekText.members)
|
||||||
|
{
|
||||||
|
item.targetY = bullShit - curWeek;
|
||||||
|
if (item.targetY == Std.int(0) && weekUnlocked[curWeek])
|
||||||
|
item.alpha = 1;
|
||||||
|
else
|
||||||
|
item.alpha = 0.6;
|
||||||
|
bullShit++;
|
||||||
|
}
|
||||||
|
|
||||||
trace("Line 165");
|
trace("Line 165");
|
||||||
|
|
||||||
super.create();
|
super.create();
|
||||||
@ -314,7 +351,7 @@ class StoryMenuState extends MusicBeatState
|
|||||||
stopspamming = true;
|
stopspamming = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
PlayState.storyPlaylist = weekData[curWeek];
|
PlayState.storyPlaylist = weekData()[curWeek];
|
||||||
PlayState.isStoryMode = true;
|
PlayState.isStoryMode = true;
|
||||||
selectedWeek = true;
|
selectedWeek = true;
|
||||||
|
|
||||||
@ -388,10 +425,10 @@ class StoryMenuState extends MusicBeatState
|
|||||||
{
|
{
|
||||||
curWeek += change;
|
curWeek += change;
|
||||||
|
|
||||||
if (curWeek >= weekData.length)
|
if (curWeek >= weekData().length)
|
||||||
curWeek = 0;
|
curWeek = 0;
|
||||||
if (curWeek < 0)
|
if (curWeek < 0)
|
||||||
curWeek = weekData.length - 1;
|
curWeek = weekData().length - 1;
|
||||||
|
|
||||||
var bullShit:Int = 0;
|
var bullShit:Int = 0;
|
||||||
|
|
||||||
@ -417,7 +454,7 @@ class StoryMenuState extends MusicBeatState
|
|||||||
grpWeekCharacters.members[2].setCharacter(weekCharacters[curWeek][2]);
|
grpWeekCharacters.members[2].setCharacter(weekCharacters[curWeek][2]);
|
||||||
|
|
||||||
txtTracklist.text = "Tracks\n";
|
txtTracklist.text = "Tracks\n";
|
||||||
var stringThing:Array<String> = weekData[curWeek];
|
var stringThing:Array<String> = weekData()[curWeek];
|
||||||
|
|
||||||
for (i in stringThing)
|
for (i in stringThing)
|
||||||
txtTracklist.text += "\n" + i;
|
txtTracklist.text += "\n" + i;
|
||||||
@ -433,4 +470,16 @@ class StoryMenuState extends MusicBeatState
|
|||||||
intendedScore = Highscore.getWeekScore(curWeek, curDifficulty);
|
intendedScore = Highscore.getWeekScore(curWeek, curDifficulty);
|
||||||
#end
|
#end
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function unlockNextWeek(week:Int):Void
|
||||||
|
{
|
||||||
|
if(week <= weekData().length - 1 && FlxG.save.data.weekUnlocked == week)
|
||||||
|
{
|
||||||
|
weekUnlocked.push(true);
|
||||||
|
trace('Week ' + week + ' beat (Week ' + (week + 1) + ' unlocked)');
|
||||||
|
}
|
||||||
|
|
||||||
|
FlxG.save.data.weekUnlocked = weekUnlocked.length - 1;
|
||||||
|
FlxG.save.flush();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -102,29 +102,19 @@ class TitleState extends MusicBeatState
|
|||||||
|
|
||||||
Highscore.load();
|
Highscore.load();
|
||||||
|
|
||||||
if (FlxG.save.data.weekUnlocked != null)
|
|
||||||
{
|
|
||||||
// FIX LATER!!!
|
|
||||||
// WEEK UNLOCK PROGRESSION!!
|
|
||||||
// StoryMenuState.weekUnlocked = FlxG.save.data.weekUnlocked;
|
|
||||||
|
|
||||||
if (StoryMenuState.weekUnlocked.length < 4)
|
|
||||||
StoryMenuState.weekUnlocked.insert(0, true);
|
|
||||||
|
|
||||||
// QUICK PATCH OOPS!
|
|
||||||
if (!StoryMenuState.weekUnlocked[0])
|
|
||||||
StoryMenuState.weekUnlocked[0] = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if FREEPLAY
|
#if FREEPLAY
|
||||||
FlxG.switchState(new FreeplayState());
|
FlxG.switchState(new FreeplayState());
|
||||||
#elseif CHARTING
|
#elseif CHARTING
|
||||||
FlxG.switchState(new ChartingState());
|
FlxG.switchState(new ChartingState());
|
||||||
#else
|
#else
|
||||||
|
#if !cpp
|
||||||
new FlxTimer().start(1, function(tmr:FlxTimer)
|
new FlxTimer().start(1, function(tmr:FlxTimer)
|
||||||
{
|
{
|
||||||
startIntro();
|
startIntro();
|
||||||
});
|
});
|
||||||
|
#else
|
||||||
|
startIntro();
|
||||||
|
#end
|
||||||
#end
|
#end
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -172,7 +162,7 @@ class TitleState extends MusicBeatState
|
|||||||
add(bg);
|
add(bg);
|
||||||
|
|
||||||
if(Main.watermarks) {
|
if(Main.watermarks) {
|
||||||
logoBl = new FlxSprite(-150, -100);
|
logoBl = new FlxSprite(-150, 1500);
|
||||||
logoBl.frames = Paths.getSparrowAtlas('KadeEngineLogoBumpin');
|
logoBl.frames = Paths.getSparrowAtlas('KadeEngineLogoBumpin');
|
||||||
logoBl.antialiasing = true;
|
logoBl.antialiasing = true;
|
||||||
logoBl.animation.addByPrefix('bump', 'logo bumpin', 24);
|
logoBl.animation.addByPrefix('bump', 'logo bumpin', 24);
|
||||||
@ -253,7 +243,7 @@ class TitleState extends MusicBeatState
|
|||||||
|
|
||||||
function getIntroTextShit():Array<Array<String>>
|
function getIntroTextShit():Array<Array<String>>
|
||||||
{
|
{
|
||||||
var fullText:String = Assets.getText(Paths.txt('introText'));
|
var fullText:String = Assets.getText(Paths.txt('data/introText'));
|
||||||
|
|
||||||
var firstArray:Array<String> = fullText.split('\n');
|
var firstArray:Array<String> = fullText.split('\n');
|
||||||
var swagGoodArray:Array<Array<String>> = [];
|
var swagGoodArray:Array<Array<String>> = [];
|
||||||
@ -468,6 +458,19 @@ class TitleState extends MusicBeatState
|
|||||||
|
|
||||||
FlxG.camera.flash(FlxColor.WHITE, 4);
|
FlxG.camera.flash(FlxColor.WHITE, 4);
|
||||||
remove(credGroup);
|
remove(credGroup);
|
||||||
|
|
||||||
|
FlxTween.tween(logoBl,{y: -100}, 1.4, {ease: FlxEase.expoInOut});
|
||||||
|
|
||||||
|
logoBl.angle = -4;
|
||||||
|
|
||||||
|
new FlxTimer().start(0.01, function(tmr:FlxTimer)
|
||||||
|
{
|
||||||
|
if(logoBl.angle == -4)
|
||||||
|
FlxTween.angle(logoBl, logoBl.angle, 4, 4, {ease: FlxEase.quartInOut});
|
||||||
|
if (logoBl.angle == 4)
|
||||||
|
FlxTween.angle(logoBl, logoBl.angle, -4, 4, {ease: FlxEase.quartInOut});
|
||||||
|
}, 0);
|
||||||
|
|
||||||
skippedIntro = true;
|
skippedIntro = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user