Merge branch 'master' into patch-2
This commit is contained in:
commit
dd4ddfd605
@ -9,7 +9,7 @@ install:
|
||||
- cd /home/appveyor
|
||||
- sudo add-apt-repository ppa:haxe/releases -y
|
||||
- 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
|
||||
- mkdir $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 run lime rebuild extension-webm windows
|
||||
- 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
|
||||
|
||||
# No tests idk lol
|
||||
|
@ -1,4 +1,4 @@
|
||||
Tutorial:gf:1
|
||||
Tutorial:gf:0
|
||||
Bopeebo:dad:1
|
||||
Fresh: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"?>
|
||||
<TextureAtlas imagePath="NOTE_assets.png">
|
||||
<!-- Created with Adobe Animate version 21.0.0.35450 -->
|
||||
<!-- http://www.adobe.com/products/animate.html -->
|
||||
<SubTexture name="arrow static instance 10000" x="488" y="238" width="155" height="158"/>
|
||||
<SubTexture name="arrow static instance 20000" x="647" y="238" width="157" height="155"/>
|
||||
<SubTexture name="arrow static instance 30000" x="808" y="238" width="155" height="157"/>
|
||||
<SubTexture name="arrow static instance 40000" x="323" y="240" width="157" height="154"/>
|
||||
<SubTexture name="blue hold end instance 10000" x="1062" y="452" width="51" height="64"/>
|
||||
<SubTexture name="blue hold piece instance 10000" x="1282" y="457" width="51" height="44"/>
|
||||
<SubTexture name="blue instance 10000" x="0" y="240" width="158" height="154"/>
|
||||
<SubTexture name="down confirm instance 10000" x="0" y="0" width="240" height="236"/>
|
||||
<SubTexture name="down confirm instance 10001" x="244" y="0" width="240" height="236"/>
|
||||
<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 confirm instance 10003" x="1206" y="235" width="221" height="218" frameX="-6" frameY="-12" frameWidth="240" frameHeight="236"/>
|
||||
<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 press instance 10001" x="805" y="399" width="143" height="139" frameX="-4" frameY="-3" frameWidth="150" frameHeight="146"/>
|
||||
<SubTexture name="down press instance 10002" x="1898" y="0" width="150" height="146"/>
|
||||
<SubTexture name="down press instance 10003" x="1898" y="0" width="150" height="146"/>
|
||||
<SubTexture name="green hold end instance 10000" x="1007" y="452" width="51" height="64"/>
|
||||
<SubTexture name="green hold piece instance 10000" x="1227" y="457" width="51" height="44"/>
|
||||
<SubTexture name="green instance 10000" x="162" y="240" width="157" height="154"/>
|
||||
<SubTexture name="left confirm instance 10000" x="972" y="0" width="230" height="232"/>
|
||||
<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 confirm instance 10002" x="1438" y="0" width="227" height="229" frameX="-2" frameY="-1" frameWidth="230" frameHeight="232"/>
|
||||
<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 press instance 10000" x="1898" y="449" width="139" height="142" frameX="-4" frameY="-3" frameWidth="146" frameHeight="149"/>
|
||||
<SubTexture name="left press instance 10001" x="1898" y="449" width="139" height="142" frameX="-4" frameY="-3" frameWidth="146" frameHeight="149"/>
|
||||
<SubTexture name="left press instance 10002" x="1898" y="150" width="146" height="149"/>
|
||||
<SubTexture name="left press instance 10003" x="1898" y="150" width="146" height="149"/>
|
||||
<SubTexture name="left press instance 10004" x="1898" y="150" width="146" height="149"/>
|
||||
<SubTexture name="left press instance 10005" x="1898" y="150" width="146" height="149"/>
|
||||
<SubTexture name="left press instance 10006" x="1898" y="150" width="146" height="149"/>
|
||||
<SubTexture name="left press instance 10007" x="1898" y="150" width="146" height="149"/>
|
||||
<SubTexture name="left press instance 10008" x="1898" y="150" width="146" height="149"/>
|
||||
<SubTexture name="left press instance 10009" x="1898" y="150" width="146" height="149"/>
|
||||
<SubTexture name="left press instance 10010" x="1898" y="150" width="146" height="149"/>
|
||||
<SubTexture name="left press instance 10011" x="1898" y="150" width="146" height="149"/>
|
||||
<SubTexture name="left press instance 10012" x="1898" y="150" width="146" height="149"/>
|
||||
<SubTexture name="left press instance 10013" x="1898" y="150" width="146" height="149"/>
|
||||
<SubTexture name="left press instance 10014" x="1898" y="150" width="146" height="149"/>
|
||||
<SubTexture name="left press instance 10015" x="1898" y="150" width="146" height="149"/>
|
||||
<SubTexture name="left press instance 10016" x="1898" y="150" width="146" height="149"/>
|
||||
<SubTexture name="left press instance 10017" x="1898" y="150" width="146" height="149"/>
|
||||
<SubTexture name="left press instance 10018" x="1898" y="150" width="146" height="149"/>
|
||||
<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>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TextureAtlas imagePath="NOTE_assets.png">
|
||||
<!-- Created with Adobe Animate version 21.0.7.42652 -->
|
||||
<!-- http://www.adobe.com/products/animate.html -->
|
||||
<SubTexture name="arrowDOWN0000" x="1147" y="5" width="157" height="154"/>
|
||||
<SubTexture name="arrowLEFT0000" x="1314" y="5" width="155" height="156"/>
|
||||
<SubTexture name="arrowRIGHT0000" x="1479" y="5" width="154" height="157"/>
|
||||
<SubTexture name="arrowUP0000" x="1643" y="5" width="157" height="154"/>
|
||||
<SubTexture name="blue0000" x="5" y="5" width="157" height="154"/>
|
||||
<SubTexture name="blue hold end0000" x="172" y="5" width="50" height="64"/>
|
||||
<SubTexture name="blue hold piece0000" x="232" y="5" width="50" height="44"/>
|
||||
<SubTexture name="down confirm0000" x="5" y="172" width="244" height="240"/>
|
||||
<SubTexture name="down confirm0001" x="259" y="172" width="244" height="240"/>
|
||||
<SubTexture name="down confirm0002" x="513" y="172" width="214" height="210" frameX="-15" frameY="-15" frameWidth="244" frameHeight="240"/>
|
||||
<SubTexture name="down press0000" x="737" y="172" width="142" height="140" frameX="-4" frameY="-2" frameWidth="149" 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 press0002" x="889" y="172" width="149" height="146"/>
|
||||
<SubTexture name="green0000" x="292" y="5" width="157" height="154"/>
|
||||
<SubTexture name="green hold end0000" x="459" y="5" width="50" height="64"/>
|
||||
<SubTexture name="green hold piece0000" x="519" y="5" width="50" height="44"/>
|
||||
<SubTexture name="left confirm0000" x="1048" y="172" width="231" height="235"/>
|
||||
<SubTexture name="left confirm0001" x="1289" y="172" width="231" height="235"/>
|
||||
<SubTexture name="left confirm0002" x="1530" y="172" width="210" height="214" frameX="-11" frameY="-12" frameWidth="231" frameHeight="235"/>
|
||||
<SubTexture name="left press0000" x="1750" y="172" width="140" height="142" frameX="-3" frameY="-3" frameWidth="146" frameHeight="149"/>
|
||||
<SubTexture name="left press0001" x="1750" y="172" width="140" height="142" frameX="-3" frameY="-3" frameWidth="146" frameHeight="149"/>
|
||||
<SubTexture name="left press0002" x="5" y="422" width="146" height="149"/>
|
||||
<SubTexture name="pruple end hold0000" x="579" y="5" width="50" height="64"/>
|
||||
<SubTexture name="purple0000" x="639" y="5" width="154" height="157"/>
|
||||
<SubTexture name="purple hold piece0000" x="803" y="5" width="50" height="44"/>
|
||||
<SubTexture name="red0000" x="863" y="5" width="154" height="157"/>
|
||||
<SubTexture name="red hold end0000" x="1027" y="5" width="50" height="64"/>
|
||||
<SubTexture name="red hold piece0000" x="1087" y="5" width="50" height="44"/>
|
||||
<SubTexture name="right confirm0000" x="161" y="422" width="237" height="241"/>
|
||||
<SubTexture name="right confirm0001" x="408" y="422" width="237" height="241"/>
|
||||
<SubTexture name="right confirm0002" x="655" y="422" width="210" height="214" frameX="-13" frameY="-14" frameWidth="237" frameHeight="241"/>
|
||||
<SubTexture name="right press0000" x="875" y="422" width="138" height="141" frameX="-3" frameY="-7" frameWidth="148" frameHeight="151"/>
|
||||
<SubTexture name="right press0001" x="875" y="422" width="138" height="141" frameX="-3" frameY="-7" frameWidth="148" frameHeight="151"/>
|
||||
<SubTexture name="right press0002" x="1023" y="422" width="148" height="151"/>
|
||||
<SubTexture name="up confirm0000" x="1181" y="422" width="238" height="234"/>
|
||||
<SubTexture name="up confirm0001" x="1429" y="422" width="238" height="234"/>
|
||||
<SubTexture name="up confirm0002" x="1677" y="422" width="212" height="209" frameX="-13" frameY="-12" frameWidth="238" frameHeight="234"/>
|
||||
<SubTexture name="up press0000" x="1899" y="422" width="144" height="141" frameX="-5" frameY="-4" frameWidth="153" frameHeight="150"/>
|
||||
<SubTexture name="up press0001" x="1899" y="422" width="144" height="141" frameX="-5" frameY="-4" frameWidth="153" frameHeight="150"/>
|
||||
<SubTexture name="up press0002" x="5" y="673" width="153" height="150"/>
|
||||
</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"?>
|
||||
<TextureAtlas imagePath="bfPixelsDEAD.png">
|
||||
<!-- Created with Adobe Animate version 20.0.0.17400 -->
|
||||
<!-- http://www.adobe.com/products/animate.html -->
|
||||
<!-- if you read this you're epic. -->
|
||||
<!-- 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 pixel0001" x="100" 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 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 pixel0056" x="696" y="450" width="77" height="76"/>
|
||||
<SubTexture name="BF Dies pixel0057" 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="691" y="448" width="90" height="81"/>
|
||||
<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 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
|
||||
var weekData:Array<Dynamic> = [
|
||||
|
||||
static function weekData():Array<Dynamic>
|
||||
{
|
||||
return [
|
||||
|
||||
['Tutorial'],
|
||||
|
||||
['Bopeebo', 'Fresh', 'Dadbattle'],
|
||||
@ -30,8 +32,9 @@ var weekData:Array<Dynamic> = [
|
||||
['Cocoa', 'Eggnog', 'Winter-Horrorland'],
|
||||
|
||||
['Senpai', 'Roses', 'Thorns']
|
||||
|
||||
];
|
||||
|
||||
];
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
@ -45,8 +48,10 @@ Example
|
||||
---
|
||||
|
||||
```haxe
|
||||
var weekData:Array<Dynamic> = [
|
||||
|
||||
static function weekData():Array<Dynamic>
|
||||
{
|
||||
return [
|
||||
|
||||
['Tutorial'],
|
||||
|
||||
['Bopeebo', 'Fresh', 'Dadbattle'],
|
||||
@ -58,12 +63,13 @@ var weekData:Array<Dynamic> = [
|
||||
['Satin-Panties', "High", "Milf"],
|
||||
|
||||
['Cocoa', 'Eggnog', 'Winter-Horrorland'],
|
||||
|
||||
|
||||
['Senpai', 'Roses', 'Thorns'],
|
||||
|
||||
['Ugh', 'Guns', 'Stress']
|
||||
|
||||
];
|
||||
|
||||
];
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
@ -83,6 +83,7 @@ class Caching extends MusicBeatState
|
||||
|
||||
var images = [];
|
||||
var music = [];
|
||||
var charts = [];
|
||||
|
||||
trace("caching images...");
|
||||
|
||||
@ -99,6 +100,7 @@ class Caching extends MusicBeatState
|
||||
{
|
||||
music.push(i);
|
||||
}
|
||||
|
||||
|
||||
toBeDone = Lambda.count(images) + Lambda.count(music);
|
||||
|
||||
@ -120,6 +122,7 @@ class Caching extends MusicBeatState
|
||||
done++;
|
||||
}
|
||||
|
||||
|
||||
trace("Finished caching...");
|
||||
|
||||
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.addByPrefix('scared', 'GF FEAR', 24);
|
||||
|
||||
addOffset('cheer');
|
||||
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);
|
||||
loadOffsetFile(curCharacter);
|
||||
|
||||
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.addByPrefix('scared', 'GF FEAR', 24);
|
||||
|
||||
addOffset('cheer');
|
||||
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);
|
||||
loadOffsetFile(curCharacter);
|
||||
|
||||
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,
|
||||
false);
|
||||
|
||||
addOffset('danceLeft', 0);
|
||||
addOffset('danceRight', 0);
|
||||
loadOffsetFile(curCharacter);
|
||||
|
||||
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('danceRight', 'GF IDLE', [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "", 24, false);
|
||||
|
||||
addOffset('danceLeft', 0);
|
||||
addOffset('danceRight', 0);
|
||||
loadOffsetFile(curCharacter);
|
||||
|
||||
playAnim('danceRight');
|
||||
|
||||
@ -132,11 +106,7 @@ class Character extends FlxSprite
|
||||
animation.addByPrefix('singDOWN', 'Dad Sing Note DOWN', 24);
|
||||
animation.addByPrefix('singLEFT', 'Dad Sing Note LEFT', 24);
|
||||
|
||||
addOffset('idle');
|
||||
addOffset("singUP", -6, 50);
|
||||
addOffset("singRIGHT", 0, 27);
|
||||
addOffset("singLEFT", -10, 10);
|
||||
addOffset("singDOWN", 0, -30);
|
||||
loadOffsetFile(curCharacter);
|
||||
|
||||
playAnim('idle');
|
||||
case 'spooky':
|
||||
@ -149,13 +119,7 @@ class Character extends FlxSprite
|
||||
animation.addByIndices('danceLeft', 'spooky dance idle', [0, 2, 6], "", 12, false);
|
||||
animation.addByIndices('danceRight', 'spooky dance idle', [8, 10, 12, 14], "", 12, false);
|
||||
|
||||
addOffset('danceLeft');
|
||||
addOffset('danceRight');
|
||||
|
||||
addOffset("singUP", -20, 26);
|
||||
addOffset("singRIGHT", -130, -14);
|
||||
addOffset("singLEFT", 130, -10);
|
||||
addOffset("singDOWN", -50, -130);
|
||||
loadOffsetFile(curCharacter);
|
||||
|
||||
playAnim('danceRight');
|
||||
case 'mom':
|
||||
@ -170,11 +134,7 @@ class Character extends FlxSprite
|
||||
// CUZ DAVE IS DUMB!
|
||||
animation.addByPrefix('singRIGHT', 'Mom Pose Left', 24, false);
|
||||
|
||||
addOffset('idle');
|
||||
addOffset("singUP", 14, 71);
|
||||
addOffset("singRIGHT", 10, -60);
|
||||
addOffset("singLEFT", 250, -23);
|
||||
addOffset("singDOWN", 20, -160);
|
||||
loadOffsetFile(curCharacter);
|
||||
|
||||
playAnim('idle');
|
||||
|
||||
@ -190,11 +150,7 @@ class Character extends FlxSprite
|
||||
// CUZ DAVE IS DUMB!
|
||||
animation.addByPrefix('singRIGHT', 'Mom Pose Left', 24, false);
|
||||
|
||||
addOffset('idle');
|
||||
addOffset("singUP", 14, 71);
|
||||
addOffset("singRIGHT", 10, -60);
|
||||
addOffset("singLEFT", 250, -23);
|
||||
addOffset("singDOWN", 20, -160);
|
||||
loadOffsetFile(curCharacter);
|
||||
|
||||
playAnim('idle');
|
||||
case 'monster':
|
||||
@ -206,11 +162,7 @@ class Character extends FlxSprite
|
||||
animation.addByPrefix('singLEFT', 'Monster left note', 24, false);
|
||||
animation.addByPrefix('singRIGHT', 'Monster Right note', 24, false);
|
||||
|
||||
addOffset('idle');
|
||||
addOffset("singUP", -20, 50);
|
||||
addOffset("singRIGHT", -51);
|
||||
addOffset("singLEFT", -30);
|
||||
addOffset("singDOWN", -30, -40);
|
||||
loadOffsetFile(curCharacter);
|
||||
playAnim('idle');
|
||||
case 'monster-christmas':
|
||||
tex = Paths.getSparrowAtlas('characters/monsterChristmas');
|
||||
@ -221,11 +173,7 @@ class Character extends FlxSprite
|
||||
animation.addByPrefix('singLEFT', 'Monster left note', 24, false);
|
||||
animation.addByPrefix('singRIGHT', 'Monster Right note', 24, false);
|
||||
|
||||
addOffset('idle');
|
||||
addOffset("singUP", -20, 50);
|
||||
addOffset("singRIGHT", -51);
|
||||
addOffset("singLEFT", -30);
|
||||
addOffset("singDOWN", -40, -94);
|
||||
loadOffsetFile(curCharacter);
|
||||
playAnim('idle');
|
||||
case 'pico':
|
||||
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('singDOWNmiss', 'Pico Down Note MISS', 24);
|
||||
|
||||
addOffset('idle');
|
||||
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);
|
||||
loadOffsetFile(curCharacter);
|
||||
|
||||
playAnim('idle');
|
||||
|
||||
@ -289,20 +229,7 @@ class Character extends FlxSprite
|
||||
|
||||
animation.addByPrefix('scared', 'BF idle shaking', 24);
|
||||
|
||||
addOffset('idle', -5);
|
||||
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);
|
||||
loadOffsetFile(curCharacter);
|
||||
|
||||
playAnim('idle');
|
||||
|
||||
@ -322,16 +249,7 @@ class Character extends FlxSprite
|
||||
animation.addByPrefix('singDOWNmiss', 'BF NOTE DOWN MISS', 24, false);
|
||||
animation.addByPrefix('hey', 'BF HEY', 24, false);
|
||||
|
||||
addOffset('idle', -5);
|
||||
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);
|
||||
loadOffsetFile(curCharacter);
|
||||
|
||||
playAnim('idle');
|
||||
|
||||
@ -349,15 +267,7 @@ class Character extends FlxSprite
|
||||
animation.addByPrefix('singRIGHTmiss', 'BF NOTE RIGHT MISS', 24, false);
|
||||
animation.addByPrefix('singDOWNmiss', 'BF NOTE DOWN MISS', 24, false);
|
||||
|
||||
addOffset('idle', -5);
|
||||
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);
|
||||
loadOffsetFile(curCharacter);
|
||||
playAnim('idle');
|
||||
|
||||
flipX = true;
|
||||
@ -373,15 +283,7 @@ class Character extends FlxSprite
|
||||
animation.addByPrefix('singRIGHTmiss', 'BF RIGHT MISS', 24, false);
|
||||
animation.addByPrefix('singDOWNmiss', 'BF DOWN MISS', 24, false);
|
||||
|
||||
addOffset('idle');
|
||||
addOffset("singUP");
|
||||
addOffset("singRIGHT");
|
||||
addOffset("singLEFT");
|
||||
addOffset("singDOWN");
|
||||
addOffset("singUPmiss");
|
||||
addOffset("singRIGHTmiss");
|
||||
addOffset("singLEFTmiss");
|
||||
addOffset("singDOWNmiss");
|
||||
loadOffsetFile(curCharacter);
|
||||
|
||||
setGraphicSize(Std.int(width * 6));
|
||||
updateHitbox();
|
||||
@ -402,9 +304,7 @@ class Character extends FlxSprite
|
||||
animation.addByPrefix('deathConfirm', "RETRY CONFIRM", 24, false);
|
||||
animation.play('firstDeath');
|
||||
|
||||
addOffset('firstDeath');
|
||||
addOffset('deathLoop', -37);
|
||||
addOffset('deathConfirm', -37);
|
||||
loadOffsetFile(curCharacter);
|
||||
playAnim('firstDeath');
|
||||
// pixel bullshit
|
||||
setGraphicSize(Std.int(width * 6));
|
||||
@ -420,11 +320,7 @@ class Character extends FlxSprite
|
||||
animation.addByPrefix('singRIGHT', 'SENPAI RIGHT NOTE', 24, false);
|
||||
animation.addByPrefix('singDOWN', 'SENPAI DOWN NOTE', 24, false);
|
||||
|
||||
addOffset('idle');
|
||||
addOffset("singUP", 5, 37);
|
||||
addOffset("singRIGHT");
|
||||
addOffset("singLEFT", 40);
|
||||
addOffset("singDOWN", 14);
|
||||
loadOffsetFile(curCharacter);
|
||||
|
||||
playAnim('idle');
|
||||
|
||||
@ -440,11 +336,7 @@ class Character extends FlxSprite
|
||||
animation.addByPrefix('singRIGHT', 'Angry Senpai RIGHT NOTE', 24, false);
|
||||
animation.addByPrefix('singDOWN', 'Angry Senpai DOWN NOTE', 24, false);
|
||||
|
||||
addOffset('idle');
|
||||
addOffset("singUP", 5, 37);
|
||||
addOffset("singRIGHT");
|
||||
addOffset("singLEFT", 40);
|
||||
addOffset("singDOWN", 14);
|
||||
loadOffsetFile(curCharacter);
|
||||
playAnim('idle');
|
||||
|
||||
setGraphicSize(Std.int(width * 6));
|
||||
@ -460,11 +352,7 @@ class Character extends FlxSprite
|
||||
animation.addByPrefix('singLEFT', "left_", 24, false);
|
||||
animation.addByPrefix('singDOWN', "spirit down_", 24, false);
|
||||
|
||||
addOffset('idle', -220, -280);
|
||||
addOffset('singUP', -220, -240);
|
||||
addOffset("singRIGHT", -220, -280);
|
||||
addOffset("singLEFT", -200, -280);
|
||||
addOffset("singDOWN", 170, 110);
|
||||
loadOffsetFile(curCharacter);
|
||||
|
||||
setGraphicSize(Std.int(width * 6));
|
||||
updateHitbox();
|
||||
@ -487,15 +375,7 @@ class Character extends FlxSprite
|
||||
animation.addByPrefix('singLEFT-alt', 'Parent Left Note Mom', 24, false);
|
||||
animation.addByPrefix('singRIGHT-alt', 'Parent Right Note Mom', 24, false);
|
||||
|
||||
addOffset('idle');
|
||||
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);
|
||||
loadOffsetFile(curCharacter);
|
||||
|
||||
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)
|
||||
{
|
||||
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));
|
||||
});
|
||||
|
||||
var characters:Array<String> = CoolUtil.coolTextFile(Paths.txt('characterList'));
|
||||
var gfVersions:Array<String> = CoolUtil.coolTextFile(Paths.txt('gfVersionList'));
|
||||
var stages:Array<String> = CoolUtil.coolTextFile(Paths.txt('stageList'));
|
||||
var noteStyles:Array<String> = CoolUtil.coolTextFile(Paths.txt('noteStyleList'));
|
||||
var characters:Array<String> = CoolUtil.coolTextFile(Paths.txt('data/characterList'));
|
||||
var gfVersions:Array<String> = CoolUtil.coolTextFile(Paths.txt('data/gfVersionList'));
|
||||
var stages:Array<String> = CoolUtil.coolTextFile(Paths.txt('data/stageList'));
|
||||
var noteStyles:Array<String> = CoolUtil.coolTextFile(Paths.txt('data/noteStyleList'));
|
||||
|
||||
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 note:Note = new Note(daStrumTime, daNoteInfo % 4,null,false,true);
|
||||
note.rawNoteData = daNoteInfo;
|
||||
note.sustainLength = daSus;
|
||||
note.setGraphicSize(GRID_SIZE, GRID_SIZE);
|
||||
note.updateHitbox();
|
||||
@ -1282,7 +1283,7 @@ class ChartingState extends MusicBeatState
|
||||
|
||||
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];
|
||||
}
|
||||
@ -1300,7 +1301,7 @@ class ChartingState extends MusicBeatState
|
||||
lastNote = note;
|
||||
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);
|
||||
}
|
||||
|
@ -155,7 +155,7 @@ class DialogueBox extends FlxSpriteGroup
|
||||
portraitLeft.visible = false;
|
||||
if (PlayState.SONG.song.toLowerCase() == 'thorns')
|
||||
{
|
||||
portraitLeft.color = FlxColor.BLACK;
|
||||
portraitLeft.visible = false;
|
||||
swagDialogue.color = FlxColor.WHITE;
|
||||
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;
|
||||
|
||||
import Song.SwagSong;
|
||||
import flixel.input.gamepad.FlxGamepad;
|
||||
import flash.text.TextField;
|
||||
import flixel.FlxG;
|
||||
@ -29,6 +30,7 @@ class FreeplayState extends MusicBeatState
|
||||
var scoreText:FlxText;
|
||||
var comboText:FlxText;
|
||||
var diffText:FlxText;
|
||||
var diffCalcText:FlxText;
|
||||
var lerpScore:Int = 0;
|
||||
var intendedScore:Int = 0;
|
||||
var combo:String = '';
|
||||
@ -38,16 +40,66 @@ class FreeplayState extends MusicBeatState
|
||||
|
||||
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()
|
||||
{
|
||||
var initSonglist = CoolUtil.coolTextFile(Paths.txt('freeplaySonglist'));
|
||||
var initSonglist = CoolUtil.coolTextFile(Paths.txt('data/freeplaySonglist'));
|
||||
|
||||
//var diffList = "";
|
||||
|
||||
for (i in 0...initSonglist.length)
|
||||
{
|
||||
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)
|
||||
{
|
||||
@ -101,7 +153,7 @@ class FreeplayState extends MusicBeatState
|
||||
scoreText.setFormat(Paths.font("vcr.ttf"), 32, FlxColor.WHITE, 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;
|
||||
add(scoreBG);
|
||||
|
||||
@ -109,6 +161,10 @@ class FreeplayState extends MusicBeatState
|
||||
diffText.font = scoreText.font;
|
||||
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.font = diffText.font;
|
||||
add(comboText);
|
||||
@ -238,14 +294,20 @@ class FreeplayState extends MusicBeatState
|
||||
case 'Dad-Battle': songFormat = 'Dadbattle';
|
||||
case 'Philly-Nice': songFormat = 'Philly';
|
||||
}
|
||||
|
||||
trace(songs[curSelected].songName);
|
||||
var hmm;
|
||||
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 = Song.loadFromJson(poop, songs[curSelected].songName);
|
||||
PlayState.SONG = hmm;
|
||||
PlayState.isStoryMode = false;
|
||||
PlayState.storyDifficulty = curDifficulty;
|
||||
PlayState.storyWeek = songs[curSelected].week;
|
||||
@ -274,7 +336,7 @@ class FreeplayState extends MusicBeatState
|
||||
intendedScore = Highscore.getScore(songHighscore, curDifficulty);
|
||||
combo = Highscore.getCombo(songHighscore, curDifficulty);
|
||||
#end
|
||||
|
||||
diffCalcText.text = 'RATING: ${DiffCalc.CalculateDiff(songData.get(songs[curSelected].songName)[curDifficulty])}';
|
||||
diffText.text = CoolUtil.difficultyFromInt(curDifficulty).toUpperCase();
|
||||
}
|
||||
|
||||
@ -310,6 +372,8 @@ class FreeplayState extends MusicBeatState
|
||||
// lerpScore = 0;
|
||||
#end
|
||||
|
||||
diffCalcText.text = 'RATING: ${DiffCalc.CalculateDiff(songData.get(songs[curSelected].songName)[curDifficulty])}';
|
||||
|
||||
#if PRELOAD_ALL
|
||||
FlxG.sound.playMusic(Paths.inst(songs[curSelected].songName), 0);
|
||||
#end
|
||||
|
@ -6,7 +6,10 @@ class KadeEngineData
|
||||
{
|
||||
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;
|
||||
|
||||
if (FlxG.save.data.downscroll == null)
|
||||
|
@ -320,7 +320,7 @@ class KeyBindMenu extends FlxSubState
|
||||
|
||||
var shouldReturn:Bool = true;
|
||||
|
||||
var notAllowed:Array<String> = ["START", "RIGHT_TRIGGER", "LEFT_TRIGGER"];
|
||||
var notAllowed:Array<String> = ["START"];
|
||||
|
||||
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 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.
|
||||
|
||||
|
@ -250,7 +250,7 @@ class ModchartState
|
||||
PlayState.instance.removeObject(PlayState.boyfriend);
|
||||
PlayState.boyfriend = new Boyfriend(oldboyfriendx, oldboyfriendy, id);
|
||||
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)
|
||||
|
@ -19,6 +19,7 @@ class Note extends FlxSprite
|
||||
|
||||
public var mustPress:Bool = false;
|
||||
public var noteData:Int = 0;
|
||||
public var rawNoteData:Int = 0;
|
||||
public var canBeHit:Bool = false;
|
||||
public var tooLate:Bool = false;
|
||||
public var wasGoodHit:Bool = false;
|
||||
@ -99,20 +100,20 @@ class Note extends FlxSprite
|
||||
default:
|
||||
frames = Paths.getSparrowAtlas('NOTE_assets');
|
||||
|
||||
animation.addByPrefix('greenScroll', 'green instance 1');
|
||||
animation.addByPrefix('redScroll', 'red instance 1');
|
||||
animation.addByPrefix('blueScroll', 'blue instance 1');
|
||||
animation.addByPrefix('purpleScroll', 'purple instance 1');
|
||||
animation.addByPrefix('greenScroll', 'green0');
|
||||
animation.addByPrefix('redScroll', 'red0');
|
||||
animation.addByPrefix('blueScroll', 'blue0');
|
||||
animation.addByPrefix('purpleScroll', 'purple0');
|
||||
|
||||
animation.addByPrefix('purpleholdend', 'pruple end hold instance 1');
|
||||
animation.addByPrefix('greenholdend', 'green hold end instance 1');
|
||||
animation.addByPrefix('redholdend', 'red hold end instance 1');
|
||||
animation.addByPrefix('blueholdend', 'blue hold end instance 1');
|
||||
animation.addByPrefix('purpleholdend', 'pruple end hold');
|
||||
animation.addByPrefix('greenholdend', 'green hold end');
|
||||
animation.addByPrefix('redholdend', 'red hold end');
|
||||
animation.addByPrefix('blueholdend', 'blue hold end');
|
||||
|
||||
animation.addByPrefix('purplehold', 'purple hold piece instance 1');
|
||||
animation.addByPrefix('greenhold', 'green hold piece instance 1');
|
||||
animation.addByPrefix('redhold', 'red hold piece instance 1');
|
||||
animation.addByPrefix('bluehold', 'blue hold piece instance 1');
|
||||
animation.addByPrefix('purplehold', 'purple hold piece');
|
||||
animation.addByPrefix('greenhold', 'green hold piece');
|
||||
animation.addByPrefix('redhold', 'red hold piece');
|
||||
animation.addByPrefix('bluehold', 'blue hold piece');
|
||||
|
||||
setGraphicSize(Std.int(width * 0.7));
|
||||
updateHitbox();
|
||||
@ -166,7 +167,7 @@ class Note extends FlxSprite
|
||||
|
||||
x -= width / 2;
|
||||
|
||||
if (PlayState.curStage.startsWith('school'))
|
||||
if (noteTypeCheck == 'pixel')
|
||||
x += 30;
|
||||
|
||||
if (prevNote.isSustainNote)
|
||||
|
@ -698,3 +698,127 @@ class CamZoomOption extends Option
|
||||
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 DistractionsAndEffectsOption("Toggle stage distractions that can hinder your gameplay."),
|
||||
new CamZoomOption("Toggle the camera zoom in-game."),
|
||||
#if desktop
|
||||
new RainbowFPSOption("Make the FPS Counter Rainbow"),
|
||||
new AccuracyOption("Display accuracy information."),
|
||||
new NPSDisplayOption("Shows your current Notes Per Second."),
|
||||
new SongPositionOption("Show the songs current position (as a bar)"),
|
||||
new CpuStrums("CPU's strumline lights up when a note hits it."),
|
||||
#end
|
||||
]),
|
||||
|
||||
new OptionCategory("Misc", [
|
||||
#if desktop
|
||||
new FPSOption("Toggle the FPS Counter"),
|
||||
#if desktop
|
||||
new ReplayOption("View replays"),
|
||||
#end
|
||||
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 ShowInput("Display every single input in the score screen."),
|
||||
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)
|
||||
{
|
||||
return getPath('data/$key.txt', TEXT, library);
|
||||
return getPath('$key.txt', TEXT, library);
|
||||
}
|
||||
|
||||
inline static public function xml(key:String, ?library:String)
|
||||
|
@ -253,6 +253,8 @@ class PlayState extends MusicBeatState
|
||||
}
|
||||
misses = 0;
|
||||
|
||||
|
||||
highestCombo = 0;
|
||||
repPresses = 0;
|
||||
repReleases = 0;
|
||||
|
||||
@ -360,11 +362,11 @@ class PlayState extends MusicBeatState
|
||||
"Only then I will even CONSIDER letting you\ndate my daughter!"
|
||||
];
|
||||
case 'senpai':
|
||||
dialogue = CoolUtil.coolTextFile(Paths.txt('senpai/senpaiDialogue'));
|
||||
dialogue = CoolUtil.coolTextFile(Paths.txt('data/senpai/senpaiDialogue'));
|
||||
case 'roses':
|
||||
dialogue = CoolUtil.coolTextFile(Paths.txt('roses/rosesDialogue'));
|
||||
dialogue = CoolUtil.coolTextFile(Paths.txt('data/roses/rosesDialogue'));
|
||||
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
|
||||
@ -1127,6 +1129,7 @@ class PlayState extends MusicBeatState
|
||||
rep = new Replay("na");
|
||||
|
||||
FlxG.stage.addEventListener(KeyboardEvent.KEY_DOWN,handleInput);
|
||||
FlxG.stage.addEventListener(KeyboardEvent.KEY_UP,releaseInput);
|
||||
|
||||
super.create();
|
||||
}
|
||||
@ -1366,6 +1369,41 @@ class PlayState extends MusicBeatState
|
||||
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
|
||||
|
||||
if (PlayStateChangeables.botPlay || loadRep || paused)
|
||||
@ -1399,15 +1437,16 @@ class PlayState extends MusicBeatState
|
||||
if (binds[i].toLowerCase() == key.toLowerCase())
|
||||
data = i;
|
||||
}
|
||||
|
||||
if (evt.keyLocation == KeyLocation.NUM_PAD)
|
||||
{
|
||||
trace(String.fromCharCode(evt.charCode) + " " + key);
|
||||
}
|
||||
|
||||
if (data == -1)
|
||||
return;
|
||||
|
||||
if (keys[data])
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
keys[data] = true;
|
||||
|
||||
var ana = new Ana(Conductor.songPosition, null, false, "miss", data);
|
||||
|
||||
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
|
||||
|
||||
|
||||
if (dataNotes.length != 0)
|
||||
{
|
||||
var coolNote = dataNotes[0];
|
||||
@ -1592,6 +1631,7 @@ class PlayState extends MusicBeatState
|
||||
swagNote.sustainLength = songNotes[2];
|
||||
swagNote.scrollFactor.set(0, 0);
|
||||
|
||||
|
||||
var susLength:Float = swagNote.sustainLength;
|
||||
|
||||
susLength = susLength / Conductor.stepCrochet;
|
||||
@ -1695,70 +1735,70 @@ class PlayState extends MusicBeatState
|
||||
|
||||
case 'normal':
|
||||
babyArrow.frames = Paths.getSparrowAtlas('NOTE_assets');
|
||||
babyArrow.animation.addByPrefix('green', 'arrow static instance 1');
|
||||
babyArrow.animation.addByPrefix('blue', 'arrow static instance 2');
|
||||
babyArrow.animation.addByPrefix('purple', 'arrow static instance 3');
|
||||
babyArrow.animation.addByPrefix('red', 'arrow static instance 4');
|
||||
|
||||
babyArrow.animation.addByPrefix('green', 'arrowUP');
|
||||
babyArrow.animation.addByPrefix('blue', 'arrowDOWN');
|
||||
babyArrow.animation.addByPrefix('purple', 'arrowLEFT');
|
||||
babyArrow.animation.addByPrefix('red', 'arrowRIGHT');
|
||||
|
||||
babyArrow.antialiasing = true;
|
||||
babyArrow.setGraphicSize(Std.int(babyArrow.width * 0.7));
|
||||
|
||||
|
||||
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:
|
||||
babyArrow.x += Note.swagWidth * 2;
|
||||
babyArrow.animation.addByPrefix('static', 'arrow static instance 4');
|
||||
babyArrow.animation.addByPrefix('pressed', 'up press instance 1', 24, false);
|
||||
babyArrow.animation.addByPrefix('confirm', 'up confirm instance 1', 24, false);
|
||||
babyArrow.animation.addByPrefix('static', 'arrowUP');
|
||||
babyArrow.animation.addByPrefix('pressed', 'up press', 24, false);
|
||||
babyArrow.animation.addByPrefix('confirm', 'up confirm', 24, false);
|
||||
case 3:
|
||||
babyArrow.x += Note.swagWidth * 3;
|
||||
babyArrow.animation.addByPrefix('static', 'arrow static instance 3');
|
||||
babyArrow.animation.addByPrefix('pressed', 'right press instance 1', 24, false);
|
||||
babyArrow.animation.addByPrefix('confirm', 'right confirm instance 1', 24, false);
|
||||
}
|
||||
babyArrow.animation.addByPrefix('static', 'arrowRIGHT');
|
||||
babyArrow.animation.addByPrefix('pressed', 'right press', 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:
|
||||
babyArrow.frames = Paths.getSparrowAtlas('NOTE_assets');
|
||||
babyArrow.animation.addByPrefix('green', 'arrow static instance 1');
|
||||
babyArrow.animation.addByPrefix('blue', 'arrow static instance 2');
|
||||
babyArrow.animation.addByPrefix('purple', 'arrow static instance 3');
|
||||
babyArrow.animation.addByPrefix('red', 'arrow static instance 4');
|
||||
babyArrow.animation.addByPrefix('green', 'arrowUP');
|
||||
babyArrow.animation.addByPrefix('blue', 'arrowDOWN');
|
||||
babyArrow.animation.addByPrefix('purple', 'arrowLEFT');
|
||||
babyArrow.animation.addByPrefix('red', 'arrowRIGHT');
|
||||
|
||||
babyArrow.antialiasing = true;
|
||||
babyArrow.setGraphicSize(Std.int(babyArrow.width * 0.7));
|
||||
|
||||
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:
|
||||
babyArrow.x += Note.swagWidth * 2;
|
||||
babyArrow.animation.addByPrefix('static', 'arrow static instance 4');
|
||||
babyArrow.animation.addByPrefix('pressed', 'up press instance 1', 24, false);
|
||||
babyArrow.animation.addByPrefix('confirm', 'up confirm instance 1', 24, false);
|
||||
babyArrow.animation.addByPrefix('static', 'arrowUP');
|
||||
babyArrow.animation.addByPrefix('pressed', 'up press', 24, false);
|
||||
babyArrow.animation.addByPrefix('confirm', 'up confirm', 24, false);
|
||||
case 3:
|
||||
babyArrow.x += Note.swagWidth * 3;
|
||||
babyArrow.animation.addByPrefix('static', 'arrow static instance 3');
|
||||
babyArrow.animation.addByPrefix('pressed', 'right press instance 1', 24, false);
|
||||
babyArrow.animation.addByPrefix('confirm', 'right confirm instance 1', 24, false);
|
||||
babyArrow.animation.addByPrefix('static', 'arrowRIGHT');
|
||||
babyArrow.animation.addByPrefix('pressed', 'right press', 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
|
||||
FlxG.switchState(new ChartingState());
|
||||
FlxG.stage.removeEventListener(KeyboardEvent.KEY_DOWN,handleInput);
|
||||
FlxG.stage.removeEventListener(KeyboardEvent.KEY_UP,releaseInput);
|
||||
#if windows
|
||||
if (luaModchart != null)
|
||||
{
|
||||
@ -2091,6 +2132,7 @@ class PlayState extends MusicBeatState
|
||||
|
||||
FlxG.switchState(new AnimationDebug(SONG.player2));
|
||||
FlxG.stage.removeEventListener(KeyboardEvent.KEY_DOWN,handleInput);
|
||||
FlxG.stage.removeEventListener(KeyboardEvent.KEY_UP,releaseInput);
|
||||
#if windows
|
||||
if (luaModchart != null)
|
||||
{
|
||||
@ -2104,6 +2146,7 @@ class PlayState extends MusicBeatState
|
||||
{
|
||||
FlxG.switchState(new AnimationDebug(SONG.player1));
|
||||
FlxG.stage.removeEventListener(KeyboardEvent.KEY_DOWN,handleInput);
|
||||
FlxG.stage.removeEventListener(KeyboardEvent.KEY_UP,releaseInput);
|
||||
#if windows
|
||||
if (luaModchart != null)
|
||||
{
|
||||
@ -2275,18 +2318,12 @@ class PlayState extends MusicBeatState
|
||||
|
||||
switch (dad.curCharacter)
|
||||
{
|
||||
case 'mom':
|
||||
case 'mom' | 'mom-car':
|
||||
camFollow.y = dad.getMidpoint().y;
|
||||
case 'senpai':
|
||||
camFollow.y = dad.getMidpoint().y - 430;
|
||||
camFollow.x = dad.getMidpoint().x - 100;
|
||||
case 'senpai-angry':
|
||||
case 'senpai' | 'senpai-angry':
|
||||
camFollow.y = dad.getMidpoint().y - 430;
|
||||
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)
|
||||
@ -2645,7 +2682,7 @@ class PlayState extends MusicBeatState
|
||||
});
|
||||
}
|
||||
|
||||
if (!inCutscene)
|
||||
if (!inCutscene && songStarted)
|
||||
keyShit();
|
||||
|
||||
|
||||
@ -2658,6 +2695,7 @@ class PlayState extends MusicBeatState
|
||||
function endSong():Void
|
||||
{
|
||||
FlxG.stage.removeEventListener(KeyboardEvent.KEY_DOWN,handleInput);
|
||||
FlxG.stage.removeEventListener(KeyboardEvent.KEY_UP,releaseInput);
|
||||
if (useVideo)
|
||||
{
|
||||
GlobalVideo.get().stop();
|
||||
@ -2750,17 +2788,13 @@ class PlayState extends MusicBeatState
|
||||
}
|
||||
#end
|
||||
|
||||
// if ()
|
||||
StoryMenuState.weekUnlocked[Std.int(Math.min(storyWeek + 1, StoryMenuState.weekUnlocked.length - 1))] = true;
|
||||
|
||||
if (SONG.validScore)
|
||||
{
|
||||
NGio.unlockMedal(60961);
|
||||
Highscore.saveWeekScore(storyWeek, campaignScore, storyDifficulty);
|
||||
}
|
||||
|
||||
FlxG.save.data.weekUnlocked = StoryMenuState.weekUnlocked;
|
||||
FlxG.save.flush();
|
||||
StoryMenuState.unlockNextWeek(storyWeek);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -3147,6 +3181,8 @@ class PlayState extends MusicBeatState
|
||||
};
|
||||
#end
|
||||
|
||||
var nonCpp = false;
|
||||
|
||||
|
||||
// Prevent player input if botplay is on
|
||||
if(PlayStateChangeables.botPlay)
|
||||
@ -3156,6 +3192,10 @@ class PlayState extends MusicBeatState
|
||||
releaseArray = [false, false, false, false];
|
||||
}
|
||||
|
||||
#if !cpp
|
||||
nonCpp = true;
|
||||
#end
|
||||
|
||||
var anas:Array<Ana> = [null,null,null,null];
|
||||
|
||||
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
|
||||
if (pressArray.contains(true) && generatedMusic)
|
||||
@ -3876,6 +3916,10 @@ class PlayState extends MusicBeatState
|
||||
boyfriend.playAnim('idle');
|
||||
}
|
||||
|
||||
if (!dad.animation.curAnim.name.startsWith("sing"))
|
||||
{
|
||||
dad.dance();
|
||||
}
|
||||
|
||||
if (curBeat % 8 == 7 && curSong == 'Bopeebo')
|
||||
{
|
||||
|
@ -2,7 +2,7 @@ package;
|
||||
|
||||
typedef SwagSection =
|
||||
{
|
||||
var sectionNotes:Array<Dynamic>;
|
||||
var sectionNotes:Array<Array<Dynamic>>;
|
||||
var lengthInSteps:Int;
|
||||
var typeOfSection:Int;
|
||||
var mustHitSection:Bool;
|
||||
@ -13,7 +13,7 @@ typedef SwagSection =
|
||||
|
||||
class Section
|
||||
{
|
||||
public var sectionNotes:Array<Dynamic> = [];
|
||||
public var sectionNotes:Array<Array<Dynamic>> = [];
|
||||
|
||||
public var lengthInSteps:Int = 16;
|
||||
public var typeOfSection:Int = 0;
|
||||
|
@ -24,18 +24,21 @@ class StoryMenuState extends MusicBeatState
|
||||
{
|
||||
var scoreText:FlxText;
|
||||
|
||||
var weekData:Array<Dynamic> = [
|
||||
['Tutorial'],
|
||||
['Bopeebo', 'Fresh', 'Dad Battle'],
|
||||
['Spookeez', 'South', "Monster"],
|
||||
['Pico', 'Philly Nice', "Blammed"],
|
||||
['Satin Panties', "High", "Milf"],
|
||||
['Cocoa', 'Eggnog', 'Winter Horrorland'],
|
||||
['Senpai', 'Roses', 'Thorns']
|
||||
];
|
||||
static function weekData():Array<Dynamic>
|
||||
{
|
||||
return [
|
||||
['Tutorial'],
|
||||
['Bopeebo', 'Fresh', 'Dad Battle'],
|
||||
['Spookeez', 'South', "Monster"],
|
||||
['Pico', 'Philly Nice', "Blammed"],
|
||||
['Satin Panties', "High", "Milf"],
|
||||
['Cocoa', 'Eggnog', 'Winter Horrorland'],
|
||||
['Senpai', 'Roses', 'Thorns']
|
||||
];
|
||||
}
|
||||
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> = [
|
||||
['', 'bf', 'gf'],
|
||||
@ -73,8 +76,28 @@ class StoryMenuState extends MusicBeatState
|
||||
var leftArrow: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()
|
||||
{
|
||||
weekUnlocked = unlockWeeks();
|
||||
|
||||
#if windows
|
||||
// Updating Discord Rich Presence
|
||||
DiscordClient.changePresence("In the Story Mode Menu", null);
|
||||
@ -110,17 +133,17 @@ class StoryMenuState extends MusicBeatState
|
||||
grpWeekText = new FlxTypedGroup<MenuItem>();
|
||||
add(grpWeekText);
|
||||
|
||||
grpLocks = new FlxTypedGroup<FlxSprite>();
|
||||
add(grpLocks);
|
||||
|
||||
var blackBarThingie:FlxSprite = new FlxSprite().makeGraphic(FlxG.width, 56, FlxColor.BLACK);
|
||||
add(blackBarThingie);
|
||||
|
||||
grpWeekCharacters = new FlxTypedGroup<MenuCharacter>();
|
||||
|
||||
grpLocks = new FlxTypedGroup<FlxSprite>();
|
||||
add(grpLocks);
|
||||
|
||||
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);
|
||||
weekThing.y += ((weekThing.height + 20) * i);
|
||||
@ -134,6 +157,7 @@ class StoryMenuState extends MusicBeatState
|
||||
// Needs an offset thingie
|
||||
if (!weekUnlocked[i])
|
||||
{
|
||||
trace('locking week ' + i);
|
||||
var lock:FlxSprite = new FlxSprite(weekThing.width + 10 + weekThing.x);
|
||||
lock.frames = ui_tex;
|
||||
lock.animation.addByPrefix('lock', 'lock');
|
||||
@ -195,6 +219,19 @@ class StoryMenuState extends MusicBeatState
|
||||
|
||||
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");
|
||||
|
||||
super.create();
|
||||
@ -314,7 +351,7 @@ class StoryMenuState extends MusicBeatState
|
||||
stopspamming = true;
|
||||
}
|
||||
|
||||
PlayState.storyPlaylist = weekData[curWeek];
|
||||
PlayState.storyPlaylist = weekData()[curWeek];
|
||||
PlayState.isStoryMode = true;
|
||||
selectedWeek = true;
|
||||
|
||||
@ -388,10 +425,10 @@ class StoryMenuState extends MusicBeatState
|
||||
{
|
||||
curWeek += change;
|
||||
|
||||
if (curWeek >= weekData.length)
|
||||
if (curWeek >= weekData().length)
|
||||
curWeek = 0;
|
||||
if (curWeek < 0)
|
||||
curWeek = weekData.length - 1;
|
||||
curWeek = weekData().length - 1;
|
||||
|
||||
var bullShit:Int = 0;
|
||||
|
||||
@ -417,7 +454,7 @@ class StoryMenuState extends MusicBeatState
|
||||
grpWeekCharacters.members[2].setCharacter(weekCharacters[curWeek][2]);
|
||||
|
||||
txtTracklist.text = "Tracks\n";
|
||||
var stringThing:Array<String> = weekData[curWeek];
|
||||
var stringThing:Array<String> = weekData()[curWeek];
|
||||
|
||||
for (i in stringThing)
|
||||
txtTracklist.text += "\n" + i;
|
||||
@ -433,4 +470,16 @@ class StoryMenuState extends MusicBeatState
|
||||
intendedScore = Highscore.getWeekScore(curWeek, curDifficulty);
|
||||
#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();
|
||||
|
||||
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
|
||||
FlxG.switchState(new FreeplayState());
|
||||
#elseif CHARTING
|
||||
FlxG.switchState(new ChartingState());
|
||||
#else
|
||||
#if !cpp
|
||||
new FlxTimer().start(1, function(tmr:FlxTimer)
|
||||
{
|
||||
startIntro();
|
||||
});
|
||||
#else
|
||||
startIntro();
|
||||
#end
|
||||
#end
|
||||
}
|
||||
|
||||
@ -172,7 +162,7 @@ class TitleState extends MusicBeatState
|
||||
add(bg);
|
||||
|
||||
if(Main.watermarks) {
|
||||
logoBl = new FlxSprite(-150, -100);
|
||||
logoBl = new FlxSprite(-150, 1500);
|
||||
logoBl.frames = Paths.getSparrowAtlas('KadeEngineLogoBumpin');
|
||||
logoBl.antialiasing = true;
|
||||
logoBl.animation.addByPrefix('bump', 'logo bumpin', 24);
|
||||
@ -253,7 +243,7 @@ class TitleState extends MusicBeatState
|
||||
|
||||
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 swagGoodArray:Array<Array<String>> = [];
|
||||
@ -468,6 +458,19 @@ class TitleState extends MusicBeatState
|
||||
|
||||
FlxG.camera.flash(FlxColor.WHITE, 4);
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user