Merge remote-tracking branch 'upstream/master' into patch-3
This commit is contained in:
commit
280828a06c
@ -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 -y
|
- sudo apt install neko tar gcc-multilib g++-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
|
||||||
@ -28,7 +28,10 @@ install:
|
|||||||
- haxelib git faxe https://github.com/uhrobots/faxe
|
- haxelib git faxe https://github.com/uhrobots/faxe
|
||||||
- haxelib git polymod https://github.com/larsiusprime/polymod.git
|
- haxelib git polymod https://github.com/larsiusprime/polymod.git
|
||||||
- haxelib git discord_rpc https://github.com/Aidan63/linc_discord-rpc
|
- haxelib git discord_rpc https://github.com/Aidan63/linc_discord-rpc
|
||||||
|
- haxelib git extension-webm https://github.com/KadeDev/extension-webm
|
||||||
|
- haxelib run lime rebuild extension-webm linux
|
||||||
- haxelib install linc_luajit
|
- haxelib install linc_luajit
|
||||||
|
- haxelib install actuate
|
||||||
- haxelib list
|
- haxelib list
|
||||||
- cd /home/appveyor/projects/kade-engine-linux
|
- cd /home/appveyor/projects/kade-engine-linux
|
||||||
|
|
||||||
|
@ -28,7 +28,11 @@ install:
|
|||||||
- haxelib git faxe https://github.com/uhrobots/faxe
|
- haxelib git faxe https://github.com/uhrobots/faxe
|
||||||
- haxelib git polymod https://github.com/larsiusprime/polymod.git
|
- haxelib git polymod https://github.com/larsiusprime/polymod.git
|
||||||
- haxelib git discord_rpc https://github.com/Aidan63/linc_discord-rpc
|
- haxelib git discord_rpc https://github.com/Aidan63/linc_discord-rpc
|
||||||
|
- haxelib git extension-webm https://github.com/KadeDev/extension-webm
|
||||||
|
- haxelib run lime rebuild extension-webm macos
|
||||||
- haxelib install linc_luajit
|
- haxelib install linc_luajit
|
||||||
|
- haxelib install actuate
|
||||||
|
- haxelib git extension-webm https://github.com/KadeDev/extension-webm
|
||||||
- haxelib list
|
- haxelib list
|
||||||
- cd /Users/appveyor/projects/kade-engine-macos
|
- cd /Users/appveyor/projects/kade-engine-macos
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@ install:
|
|||||||
- haxelib setup "%HAXELIB_ROOT%"
|
- haxelib setup "%HAXELIB_ROOT%"
|
||||||
# Install project dependencies
|
# Install project dependencies
|
||||||
- haxelib install lime 7.9.0
|
- haxelib install lime 7.9.0
|
||||||
|
- RefreshEnv
|
||||||
- haxelib install openfl
|
- haxelib install openfl
|
||||||
- haxelib install flixel
|
- haxelib install flixel
|
||||||
- haxelib run lime setup flixel
|
- haxelib run lime setup flixel
|
||||||
@ -32,7 +33,12 @@ install:
|
|||||||
- haxelib git faxe https://github.com/uhrobots/faxe
|
- haxelib git faxe https://github.com/uhrobots/faxe
|
||||||
- haxelib git polymod https://github.com/larsiusprime/polymod.git
|
- haxelib git polymod https://github.com/larsiusprime/polymod.git
|
||||||
- haxelib git discord_rpc https://github.com/Aidan63/linc_discord-rpc
|
- haxelib git discord_rpc https://github.com/Aidan63/linc_discord-rpc
|
||||||
|
- haxelib git extension-webm https://github.com/KadeDev/extension-webm
|
||||||
|
- haxelib run lime rebuild extension-webm windows
|
||||||
- haxelib install linc_luajit
|
- haxelib install linc_luajit
|
||||||
|
- haxelib install actuate
|
||||||
|
- haxelib git extension-webm https://github.com/KadeDev/extension-webm
|
||||||
|
- lime rebuild extension-webm windows
|
||||||
- haxelib list
|
- haxelib list
|
||||||
|
|
||||||
# No tests idk lol
|
# No tests idk lol
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 700 KiB After Width: | Height: | Size: 127 KiB |
@ -1,53 +1,92 @@
|
|||||||
<?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 20.0.0.17400 -->
|
<!-- Created with Adobe Animate version 21.0.0.35450 -->
|
||||||
<!-- http://www.adobe.com/products/animate.html -->
|
<!-- http://www.adobe.com/products/animate.html -->
|
||||||
<SubTexture name="arrowDOWN0000" x="0" y="235" width="157" height="153"/>
|
<SubTexture name="arrow static instance 10000" x="488" y="238" width="155" height="158"/>
|
||||||
<SubTexture name="arrowLEFT0000" x="310" y="235" width="153" height="157"/>
|
<SubTexture name="arrow static instance 20000" x="647" y="238" width="157" height="155"/>
|
||||||
<SubTexture name="arrowRIGHT0000" x="157" y="235" width="153" height="157"/>
|
<SubTexture name="arrow static instance 30000" x="808" y="238" width="155" height="157"/>
|
||||||
<SubTexture name="arrowUP0000" x="784" y="232" width="157" height="153"/>
|
<SubTexture name="arrow static instance 40000" x="323" y="240" width="157" height="154"/>
|
||||||
<SubTexture name="blue0000" x="1850" y="154" width="157" height="154"/>
|
<SubTexture name="blue hold end instance 10000" x="1062" y="452" width="51" height="64"/>
|
||||||
<SubTexture name="blue hold end0000" x="1170" y="447" width="50" height="64"/>
|
<SubTexture name="blue hold piece instance 10000" x="1282" y="457" width="51" height="44"/>
|
||||||
<SubTexture name="blue hold piece0000" x="1370" y="449" width="50" height="44"/>
|
<SubTexture name="blue instance 10000" x="0" y="240" width="158" height="154"/>
|
||||||
<SubTexture name="down confirm0000" x="0" y="0" width="238" height="235"/>
|
<SubTexture name="down confirm instance 10000" x="0" y="0" width="240" height="236"/>
|
||||||
<SubTexture name="down confirm0001" x="238" y="0" width="238" height="235"/>
|
<SubTexture name="down confirm instance 10001" x="244" y="0" width="240" height="236"/>
|
||||||
<SubTexture name="down confirm0002" x="1176" y="230" width="219" height="208" frameX="-6" frameY="-12" frameWidth="238" frameHeight="235"/>
|
<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 confirm0003" x="1176" y="230" width="219" height="208" frameX="-6" frameY="-12" frameWidth="238" frameHeight="235"/>
|
<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="149" y="392" 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="149" y="392" 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="0" y="388" width="149" height="146"/>
|
<SubTexture name="down press instance 10002" x="1898" y="0" width="150" height="146"/>
|
||||||
<SubTexture name="down press0003" x="0" y="388" width="149" height="146"/>
|
<SubTexture name="down press instance 10003" x="1898" y="0" width="150" height="146"/>
|
||||||
<SubTexture name="green0000" x="1850" y="0" width="157" height="154"/>
|
<SubTexture name="green hold end instance 10000" x="1007" y="452" width="51" height="64"/>
|
||||||
<SubTexture name="green hold end0000" x="1120" y="442" width="50" height="64"/>
|
<SubTexture name="green hold piece instance 10000" x="1227" y="457" width="51" height="44"/>
|
||||||
<SubTexture name="green hold piece0000" x="1320" y="447" width="50" height="44"/>
|
<SubTexture name="green instance 10000" x="162" y="240" width="157" height="154"/>
|
||||||
<SubTexture name="left confirm0000" x="948" y="0" width="228" height="231"/>
|
<SubTexture name="left confirm instance 10000" x="972" y="0" width="230" height="232"/>
|
||||||
<SubTexture name="left confirm0001" x="1402" y="228" width="218" height="221" frameX="-5" frameY="-5" frameWidth="228" frameHeight="231"/>
|
<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 confirm0002" x="1402" y="0" width="225" height="221" frameX="-2" frameY="-1" frameWidth="228" frameHeight="231"/>
|
<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 confirm0003" x="1402" y="0" width="225" height="221" frameX="-2" frameY="-1" frameWidth="228" frameHeight="231"/>
|
<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 press0000" x="291" y="392" width="140" height="142" frameX="-3" frameY="-3" frameWidth="146" frameHeight="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="left press0001" x="291" y="392" width="140" height="142" frameX="-3" 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 press0002" x="463" y="389" width="146" height="149"/>
|
<SubTexture name="left press instance 10002" x="1898" y="150" width="146" height="149"/>
|
||||||
<SubTexture name="left press0003" x="463" y="389" width="146" height="149"/>
|
<SubTexture name="left press instance 10003" x="1898" y="150" width="146" height="149"/>
|
||||||
<SubTexture name="pruple end hold0000" x="1220" y="447" width="50" height="64"/>
|
<SubTexture name="left press instance 10004" x="1898" y="150" width="146" height="149"/>
|
||||||
<SubTexture name="purple0000" x="630" y="232" width="154" height="157"/>
|
<SubTexture name="left press instance 10005" x="1898" y="150" width="146" height="149"/>
|
||||||
<SubTexture name="purple hold piece0000" x="1420" y="449" width="50" height="44"/>
|
<SubTexture name="left press instance 10006" x="1898" y="150" width="146" height="149"/>
|
||||||
<SubTexture name="red0000" x="476" y="232" width="154" height="157"/>
|
<SubTexture name="left press instance 10007" x="1898" y="150" width="146" height="149"/>
|
||||||
<SubTexture name="red hold end0000" x="1070" y="442" width="50" height="64"/>
|
<SubTexture name="left press instance 10008" x="1898" y="150" width="146" height="149"/>
|
||||||
<SubTexture name="red hold piece0000" x="1270" y="447" width="50" height="44"/>
|
<SubTexture name="left press instance 10009" x="1898" y="150" width="146" height="149"/>
|
||||||
<SubTexture name="right confirm0000" x="1627" y="0" width="223" height="226" frameX="-1" frameY="-3" frameWidth="226" frameHeight="230"/>
|
<SubTexture name="left press instance 10010" x="1898" y="150" width="146" height="149"/>
|
||||||
<SubTexture name="right confirm0001" x="1627" y="226" width="223" height="226" frameX="-1" frameY="-3" frameWidth="226" frameHeight="230"/>
|
<SubTexture name="left press instance 10011" x="1898" y="150" width="146" height="149"/>
|
||||||
<SubTexture name="right confirm0002" x="1176" y="0" width="226" height="230"/>
|
<SubTexture name="left press instance 10012" x="1898" y="150" width="146" height="149"/>
|
||||||
<SubTexture name="right confirm0003" x="1176" y="0" width="226" height="230"/>
|
<SubTexture name="left press instance 10013" x="1898" y="150" width="146" height="149"/>
|
||||||
<SubTexture name="right press0000" x="932" y="442" width="138" height="141" frameX="-3" frameY="-7" frameWidth="148" frameHeight="151"/>
|
<SubTexture name="left press instance 10014" x="1898" y="150" width="146" height="149"/>
|
||||||
<SubTexture name="right press0001" x="932" y="442" width="138" height="141" frameX="-3" frameY="-7" frameWidth="148" frameHeight="151"/>
|
<SubTexture name="left press instance 10015" x="1898" y="150" width="146" height="149"/>
|
||||||
<SubTexture name="right press0002" x="784" y="385" width="148" height="151"/>
|
<SubTexture name="left press instance 10016" x="1898" y="150" width="146" height="149"/>
|
||||||
<SubTexture name="right press0003" x="784" y="385" width="148" height="151"/>
|
<SubTexture name="left press instance 10017" x="1898" y="150" width="146" height="149"/>
|
||||||
<SubTexture name="up confirm0000" x="476" y="0" width="236" height="232"/>
|
<SubTexture name="left press instance 10018" x="1898" y="150" width="146" height="149"/>
|
||||||
<SubTexture name="up confirm0001" x="712" y="0" width="236" height="232"/>
|
<SubTexture name="left press instance 10019" x="1898" y="150" width="146" height="149"/>
|
||||||
<SubTexture name="up confirm0002" x="948" y="231" width="214" height="206" frameX="-11" frameY="-10" frameWidth="236" frameHeight="232"/>
|
<SubTexture name="pruple end hold instance 10000" x="1117" y="452" width="51" height="64"/>
|
||||||
<SubTexture name="up confirm0003" x="948" y="231" width="214" height="206" frameX="-11" frameY="-10" frameWidth="236" frameHeight="232"/>
|
<SubTexture name="purple hold piece instance 10000" x="1337" y="457" width="51" height="44"/>
|
||||||
<SubTexture name="up press0000" x="609" y="389" width="144" height="141" frameX="-5" frameY="-4" frameWidth="153" frameHeight="150"/>
|
<SubTexture name="purple instance 10000" x="0" y="398" width="154" height="157"/>
|
||||||
<SubTexture name="up press0001" x="609" y="389" width="144" height="141" frameX="-5" frameY="-4" frameWidth="153" frameHeight="150"/>
|
<SubTexture name="red hold end instance 10000" x="952" y="452" width="51" height="64"/>
|
||||||
<SubTexture name="up press0002" x="1850" y="308" width="153" height="150"/>
|
<SubTexture name="red hold piece instance 10000" x="1172" y="457" width="51" height="44"/>
|
||||||
<SubTexture name="up press0003" x="1850" y="308" width="153" height="150"/>
|
<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>
|
</TextureAtlas>
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 1.5 MiB After Width: | Height: | Size: 726 KiB |
@ -1,109 +1,109 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<TextureAtlas imagePath="Monster_Assets.png">
|
<TextureAtlas imagePath="Monster_Assets.png">
|
||||||
<!-- Created with Adobe Animate version 20.0.0.17400 -->
|
<!-- Created with Adobe Animate version 21.0.0.35450 -->
|
||||||
<!-- http://www.adobe.com/products/animate.html -->
|
<!-- http://www.adobe.com/products/animate.html -->
|
||||||
<SubTexture name="Monster Right note0000" x="0" y="0" width="375" height="674" frameX="-4" frameY="0" frameWidth="381" frameHeight="674"/>
|
<SubTexture name="Monster Right note0000" x="0" y="0" width="375" height="691" frameX="-4" frameY="0" frameWidth="381" frameHeight="691"/>
|
||||||
<SubTexture name="Monster Right note0001" x="0" y="0" width="375" height="674" frameX="-4" frameY="0" frameWidth="381" frameHeight="674"/>
|
<SubTexture name="Monster Right note0001" x="0" y="0" width="375" height="691" frameX="-4" frameY="0" frameWidth="381" frameHeight="691"/>
|
||||||
<SubTexture name="Monster Right note0002" x="385" y="0" width="381" height="671" frameX="0" frameY="0" frameWidth="381" frameHeight="674"/>
|
<SubTexture name="Monster Right note0002" x="385" y="0" width="381" height="680" frameX="0" frameY="-8" frameWidth="381" frameHeight="691"/>
|
||||||
<SubTexture name="Monster Right note0003" x="385" y="0" width="381" height="671" frameX="0" frameY="0" frameWidth="381" frameHeight="674"/>
|
<SubTexture name="Monster Right note0003" x="776" y="0" width="381" height="679" frameX="0" frameY="-9" frameWidth="381" frameHeight="691"/>
|
||||||
<SubTexture name="Monster Right note0004" x="776" y="0" width="381" height="671" frameX="0" frameY="0" frameWidth="381" frameHeight="674"/>
|
<SubTexture name="Monster Right note0004" x="1167" y="0" width="381" height="680" frameX="0" frameY="-8" frameWidth="381" frameHeight="691"/>
|
||||||
<SubTexture name="Monster Right note0005" x="776" y="0" width="381" height="671" frameX="0" frameY="0" frameWidth="381" frameHeight="674"/>
|
<SubTexture name="Monster Right note0005" x="1558" y="0" width="381" height="679" frameX="0" frameY="-9" frameWidth="381" frameHeight="691"/>
|
||||||
<SubTexture name="Monster Right note0006" x="1167" y="0" width="381" height="671" frameX="0" frameY="0" frameWidth="381" frameHeight="674"/>
|
<SubTexture name="Monster Right note0006" x="1949" y="0" width="381" height="680" frameX="0" frameY="-8" frameWidth="381" frameHeight="691"/>
|
||||||
<SubTexture name="Monster Right note0007" x="1167" y="0" width="381" height="671" frameX="0" frameY="0" frameWidth="381" frameHeight="674"/>
|
<SubTexture name="Monster Right note0007" x="2340" y="0" width="381" height="679" frameX="0" frameY="-9" frameWidth="381" frameHeight="691"/>
|
||||||
<SubTexture name="Monster Right note0008" x="1558" y="0" width="381" height="671" frameX="0" frameY="0" frameWidth="381" frameHeight="674"/>
|
<SubTexture name="Monster Right note0008" x="2731" y="0" width="381" height="680" frameX="0" frameY="-8" frameWidth="381" frameHeight="691"/>
|
||||||
<SubTexture name="Monster Right note0009" x="1558" y="0" width="381" height="671" frameX="0" frameY="0" frameWidth="381" frameHeight="674"/>
|
<SubTexture name="Monster Right note0009" x="3122" y="0" width="381" height="679" frameX="0" frameY="-9" frameWidth="381" frameHeight="691"/>
|
||||||
<SubTexture name="Monster Right note0010" x="1949" y="0" width="381" height="671" frameX="0" frameY="0" frameWidth="381" frameHeight="674"/>
|
<SubTexture name="Monster Right note0010" x="3513" y="0" width="381" height="680" frameX="0" frameY="-8" frameWidth="381" frameHeight="691"/>
|
||||||
<SubTexture name="Monster Right note0011" x="1949" y="0" width="381" height="671" frameX="0" frameY="0" frameWidth="381" frameHeight="674"/>
|
<SubTexture name="Monster Right note0011" x="3904" y="0" width="381" height="679" frameX="0" frameY="-9" frameWidth="381" frameHeight="691"/>
|
||||||
<SubTexture name="Monster Right note0012" x="2340" y="0" width="381" height="671" frameX="0" frameY="0" frameWidth="381" frameHeight="674"/>
|
<SubTexture name="Monster Right note0012" x="4295" y="0" width="381" height="680" frameX="0" frameY="-8" frameWidth="381" frameHeight="691"/>
|
||||||
<SubTexture name="Monster Right note0013" x="2340" y="0" width="381" height="671" frameX="0" frameY="0" frameWidth="381" frameHeight="674"/>
|
<SubTexture name="Monster Right note0013" x="4686" y="0" width="381" height="679" frameX="0" frameY="-9" frameWidth="381" frameHeight="691"/>
|
||||||
<SubTexture name="Monster Right note0014" x="385" y="0" width="381" height="671" frameX="0" frameY="0" frameWidth="381" frameHeight="674"/>
|
<SubTexture name="Monster Right note0014" x="385" y="0" width="381" height="680" frameX="0" frameY="-8" frameWidth="381" frameHeight="691"/>
|
||||||
<SubTexture name="Monster left note0000" x="2731" y="0" width="460" height="671" frameX="-15" frameY="0" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0000" x="5077" y="0" width="460" height="675" frameX="-15" frameY="0" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0001" x="2731" y="0" width="460" height="671" frameX="-15" frameY="0" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0001" x="5077" y="0" width="460" height="675" frameX="-15" frameY="0" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0002" x="3201" y="0" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0002" x="5547" y="0" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0003" x="3201" y="0" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0003" x="6028" y="0" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0004" x="0" y="684" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0004" x="6509" y="0" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0005" x="0" y="684" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0005" x="6990" y="0" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0006" x="481" y="684" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0006" x="7471" y="0" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0007" x="481" y="684" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0007" x="0" y="701" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0008" x="962" y="684" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0008" x="481" y="701" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0009" x="962" y="684" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0009" x="962" y="701" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0010" x="1443" y="684" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0010" x="1443" y="701" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0011" x="1443" y="684" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0011" x="1924" y="701" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0012" x="1924" y="684" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0012" x="2405" y="701" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0013" x="1924" y="684" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0013" x="2886" y="701" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0014" x="3201" y="0" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0014" x="5547" y="0" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0015" x="3201" y="0" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0015" x="6028" y="0" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0016" x="0" y="684" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0016" x="6509" y="0" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0017" x="0" y="684" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0017" x="6990" y="0" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0018" x="481" y="684" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0018" x="7471" y="0" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0019" x="481" y="684" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0019" x="0" y="701" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="monster down0000" x="2405" y="684" width="428" height="599" frameX="-12" frameY="-35" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0000" x="3367" y="701" width="428" height="571" frameX="-12" frameY="-18" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0001" x="2405" y="684" width="428" height="599" frameX="-12" frameY="-35" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0001" x="3367" y="701" width="428" height="571" frameX="-12" frameY="-18" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0002" x="2843" y="684" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0002" x="3805" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0003" x="2843" y="684" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0003" x="4249" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0004" x="3287" y="684" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0004" x="4693" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0005" x="3287" y="684" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0005" x="5137" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0006" x="0" y="1362" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0006" x="5581" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0007" x="0" y="1362" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0007" x="6025" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0008" x="444" y="1362" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0008" x="6469" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0009" x="444" y="1362" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0009" x="6913" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0010" x="888" y="1362" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0010" x="7357" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0011" x="888" y="1362" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0011" x="0" y="1380" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0012" x="1332" y="1362" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0012" x="444" y="1380" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0013" x="1332" y="1362" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0013" x="888" y="1380" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0014" x="2843" y="684" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0014" x="3805" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0015" x="2843" y="684" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0015" x="4249" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0016" x="3287" y="684" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0016" x="4693" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0017" x="3287" y="684" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0017" x="5137" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0018" x="0" y="1362" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0018" x="5581" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0019" x="0" y="1362" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0019" x="6025" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0020" x="444" y="1362" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0020" x="6469" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0021" x="444" y="1362" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0021" x="6913" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0022" x="888" y="1362" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0022" x="4249" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0023" x="888" y="1362" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0023" x="4249" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0024" x="1332" y="1362" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0024" x="6913" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0025" x="1332" y="1362" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0025" x="6913" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0026" x="2843" y="684" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0026" x="4249" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0027" x="2843" y="684" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0027" x="4249" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0028" x="3287" y="684" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0028" x="6913" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0029" x="3287" y="684" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0029" x="6913" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster idle0000" x="1776" y="1362" width="424" height="604" frameX="-46" frameY="-73" frameWidth="484" frameHeight="677"/>
|
<SubTexture name="monster idle0000" x="1332" y="1380" width="424" height="603" frameX="-46" frameY="-74" frameWidth="484" frameHeight="677"/>
|
||||||
<SubTexture name="monster idle0001" x="1776" y="1362" width="424" height="604" frameX="-46" frameY="-73" frameWidth="484" frameHeight="677"/>
|
<SubTexture name="monster idle0001" x="1766" y="1380" width="424" height="602" frameX="-46" frameY="-75" frameWidth="484" frameHeight="677"/>
|
||||||
<SubTexture name="monster idle0002" x="2210" y="1362" width="422" height="605" frameX="-49" frameY="-69" frameWidth="484" frameHeight="677"/>
|
<SubTexture name="monster idle0002" x="2200" y="1380" width="422" height="607" frameX="-49" frameY="-67" frameWidth="484" frameHeight="677"/>
|
||||||
<SubTexture name="monster idle0003" x="2210" y="1362" width="422" height="605" frameX="-49" frameY="-69" frameWidth="484" frameHeight="677"/>
|
<SubTexture name="monster idle0003" x="2632" y="1380" width="422" height="607" frameX="-49" frameY="-67" frameWidth="484" frameHeight="677"/>
|
||||||
<SubTexture name="monster idle0004" x="2642" y="1362" width="439" height="610" frameX="-38" frameY="-61" frameWidth="484" frameHeight="677"/>
|
<SubTexture name="monster idle0004" x="3064" y="1380" width="439" height="610" frameX="-38" frameY="-61" frameWidth="484" frameHeight="677"/>
|
||||||
<SubTexture name="monster idle0005" x="3091" y="1362" width="439" height="630" frameX="-38" frameY="-41" frameWidth="484" frameHeight="677"/>
|
<SubTexture name="monster idle0005" x="3513" y="1380" width="439" height="630" frameX="-38" frameY="-41" frameWidth="484" frameHeight="677"/>
|
||||||
<SubTexture name="monster idle0006" x="3540" y="1362" width="481" height="661" frameX="-3" frameY="-11" frameWidth="484" frameHeight="677"/>
|
<SubTexture name="monster idle0006" x="3962" y="1380" width="481" height="660" frameX="-3" frameY="-12" frameWidth="484" frameHeight="677"/>
|
||||||
<SubTexture name="monster idle0007" x="3540" y="1362" width="481" height="661" frameX="-3" frameY="-11" frameWidth="484" frameHeight="677"/>
|
<SubTexture name="monster idle0007" x="4453" y="1380" width="481" height="660" frameX="-3" frameY="-12" frameWidth="484" frameHeight="677"/>
|
||||||
<SubTexture name="monster idle0008" x="0" y="2033" width="484" height="670" frameX="0" frameY="-3" frameWidth="484" frameHeight="677"/>
|
<SubTexture name="monster idle0008" x="4944" y="1380" width="484" height="671" frameX="0" frameY="-2" frameWidth="484" frameHeight="677"/>
|
||||||
<SubTexture name="monster idle0009" x="0" y="2033" width="484" height="670" frameX="0" frameY="-3" frameWidth="484" frameHeight="677"/>
|
<SubTexture name="monster idle0009" x="5438" y="1380" width="484" height="671" frameX="0" frameY="-2" frameWidth="484" frameHeight="677"/>
|
||||||
<SubTexture name="monster idle0010" x="494" y="2033" width="484" height="673" frameX="0" frameY="0" frameWidth="484" frameHeight="677"/>
|
<SubTexture name="monster idle0010" x="5932" y="1380" width="484" height="673" frameX="0" frameY="0" frameWidth="484" frameHeight="677"/>
|
||||||
<SubTexture name="monster idle0011" x="494" y="2033" width="484" height="673" frameX="0" frameY="0" frameWidth="484" frameHeight="677"/>
|
<SubTexture name="monster idle0011" x="6426" y="1380" width="484" height="673" frameX="0" frameY="0" frameWidth="484" frameHeight="677"/>
|
||||||
<SubTexture name="monster idle0012" x="988" y="2033" width="484" height="673" frameX="0" frameY="0" frameWidth="484" frameHeight="677"/>
|
<SubTexture name="monster idle0012" x="6920" y="1380" width="484" height="673" frameX="0" frameY="0" frameWidth="484" frameHeight="677"/>
|
||||||
<SubTexture name="monster idle0013" x="988" y="2033" width="484" height="673" frameX="0" frameY="0" frameWidth="484" frameHeight="677"/>
|
<SubTexture name="monster idle0013" x="7414" y="1380" width="484" height="673" frameX="0" frameY="0" frameWidth="484" frameHeight="677"/>
|
||||||
<SubTexture name="monster idle0014" x="1482" y="2033" width="484" height="673" frameX="0" frameY="0" frameWidth="484" frameHeight="677"/>
|
<SubTexture name="monster idle0014" x="0" y="2063" width="484" height="673" frameX="0" frameY="0" frameWidth="484" frameHeight="677"/>
|
||||||
<SubTexture name="monster up note0000" x="1976" y="2033" width="410" height="714" frameX="-7" frameY="0" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0000" x="494" y="2063" width="410" height="753" frameX="-7" frameY="0" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0001" x="1976" y="2033" width="410" height="714" frameX="-7" frameY="0" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0001" x="494" y="2063" width="410" height="753" frameX="-7" frameY="0" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0002" x="2396" y="2033" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0002" x="914" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0003" x="2396" y="2033" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0003" x="1342" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0004" x="2824" y="2033" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0004" x="1770" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0005" x="2824" y="2033" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0005" x="2198" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0006" x="3252" y="2033" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0006" x="2626" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0007" x="3252" y="2033" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0007" x="3054" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0008" x="0" y="2757" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0008" x="3482" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0009" x="0" y="2757" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0009" x="3910" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0010" x="428" y="2757" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0010" x="4338" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0011" x="428" y="2757" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0011" x="4766" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0012" x="856" y="2757" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0012" x="5194" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0013" x="856" y="2757" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0013" x="5622" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0014" x="2396" y="2033" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0014" x="914" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0015" x="2396" y="2033" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0015" x="1342" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0016" x="2824" y="2033" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0016" x="1770" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0017" x="2824" y="2033" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0017" x="2198" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0018" x="3252" y="2033" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0018" x="2626" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0019" x="3252" y="2033" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0019" x="3054" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0020" x="0" y="2757" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0020" x="3482" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0021" x="0" y="2757" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0021" x="3910" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0022" x="428" y="2757" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0022" x="4338" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0023" x="428" y="2757" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0023" x="4766" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
</TextureAtlas>
|
</TextureAtlas>
|
||||||
|
@ -34,10 +34,22 @@
|
|||||||
|
|
||||||
### Windows-only dependencies (only for building *to* Windows. Building html5 on Windows does not require this)
|
### Windows-only dependencies (only for building *to* Windows. Building html5 on Windows does not require this)
|
||||||
If you are planning to build for Windows, you also need to install **Visual Studio 2019**. While installing it, *don't click on any of the options to install workloads*. Instead, go to the **individual components** tab and choose the following:
|
If you are planning to build for Windows, you also need to install **Visual Studio 2019**. While installing it, *don't click on any of the options to install workloads*. Instead, go to the **individual components** tab and choose the following:
|
||||||
- MSVC C++ x64/x86 build tools (versions 142 and up)
|
|
||||||
- Windows SDK (versions 10.0.19041.0 and up)
|
|
||||||
|
|
||||||
This will install about 4 GB of crap, but is necessary to build for Windows.
|
- MSVC v142 - VS 2019 C++ x64/x86 build tools
|
||||||
|
- Windows SDK (10.0.17763.0)
|
||||||
|
- C++ Profiling tools
|
||||||
|
- C++ CMake tools for windows
|
||||||
|
- C++ ATL for v142 build tools (x86 & x64)
|
||||||
|
- C++ MFC for v142 build tools (x86 & x64)
|
||||||
|
- C++/CLI support for v142 build tools (14.21)
|
||||||
|
- C++ Modules for v142 build tools (x64/x86)
|
||||||
|
- Clang Compiler for Windows
|
||||||
|
- Windows 10 SDK (10.0.17134.0)
|
||||||
|
- Windows 10 SDK (10.0.16299.0)
|
||||||
|
- MSVC v141 - VS 2017 C++ x64/x86 build tools
|
||||||
|
- MSVC v140 - VS 2015 C++ build tools (v14.00)
|
||||||
|
|
||||||
|
This will install about 22 GB of crap, but is necessary to build for Windows.
|
||||||
|
|
||||||
### macOS-only dependencies (these are required for building on macOS at all, including html5.)
|
### macOS-only dependencies (these are required for building on macOS at all, including html5.)
|
||||||
If you are running macOS, you'll need to install Xcode. You can download it from the macOS App Store or from the [Xcode website](https://developer.apple.com/xcode/).
|
If you are running macOS, you'll need to install Xcode. You can download it from the macOS App Store or from the [Xcode website](https://developer.apple.com/xcode/).
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Latest (master) changelog
|
# Changelog for 1.5.3
|
||||||
|
|
||||||
Changes marked with 💖 will be listed in the short version of the changelog in `version.downloadMe`.
|
Changes marked with 💖 will be listed in the short version of the changelog in `version.downloadMe`.
|
||||||
|
|
||||||
@ -14,3 +14,6 @@ Changes marked with 💖 will be listed in the short version of the changelog in
|
|||||||
### Bugfixes
|
### Bugfixes
|
||||||
- NPS not showing if accuracy is disabled
|
- NPS not showing if accuracy is disabled
|
||||||
- Fixed song names so they don't crash (💖)
|
- Fixed song names so they don't crash (💖)
|
||||||
|
|
||||||
|
## Links
|
||||||
|
[GitHub Release](https://github.com/KadeDev/Kade-Engine/releases/tag/1.5.3) · [Last Windows CI build](https://ci.appveyor.com/project/KadeDev/kade-engine-windows/builds/39671466) · [Last macOS CI build](https://ci.appveyor.com/project/KadeDev/kade-engine-macos/builds/39671465) · [Last Linux CI build](https://ci.appveyor.com/project/KadeDev/kade-engine-linux/builds/39671464)
|
||||||
|
17
docs/changelogs/changelog-1.5.4.md
Normal file
17
docs/changelogs/changelog-1.5.4.md
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# Latest (master) changelog
|
||||||
|
|
||||||
|
Changes marked with 💖 will be listed in the short version of the changelog in `version.downloadMe`.
|
||||||
|
|
||||||
|
### Additions
|
||||||
|
- Controller Support (💖)
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
- KeyBinds don't effect menu screen options anymore.
|
||||||
|
- Updated some image assets
|
||||||
|
- Fixed spookeez audio sync
|
||||||
|
|
||||||
|
### Bugfixes
|
||||||
|
- Fixed Input Drops/Disappering Notes (💖)
|
||||||
|
- Fixed HitGraph/Result Screen bugs
|
||||||
|
- Fixed the chart editor
|
||||||
|
- Fixed HTML5 Build issues
|
@ -83,6 +83,7 @@ class Caching extends MusicBeatState
|
|||||||
|
|
||||||
var images = [];
|
var images = [];
|
||||||
var music = [];
|
var music = [];
|
||||||
|
var charts = [];
|
||||||
|
|
||||||
trace("caching images...");
|
trace("caching images...");
|
||||||
|
|
||||||
@ -100,6 +101,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);
|
||||||
|
|
||||||
trace("LOADING: " + toBeDone + " OBJECTS.");
|
trace("LOADING: " + toBeDone + " OBJECTS.");
|
||||||
@ -120,6 +122,7 @@ class Caching extends MusicBeatState
|
|||||||
done++;
|
done++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
trace("Finished caching...");
|
trace("Finished caching...");
|
||||||
|
|
||||||
FlxG.switchState(new TitleState());
|
FlxG.switchState(new TitleState());
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package;
|
package;
|
||||||
|
|
||||||
|
import flixel.input.gamepad.FlxGamepad;
|
||||||
import flixel.FlxG;
|
import flixel.FlxG;
|
||||||
import flixel.input.FlxInput;
|
import flixel.input.FlxInput;
|
||||||
import flixel.input.actions.FlxAction;
|
import flixel.input.actions.FlxAction;
|
||||||
@ -571,8 +572,22 @@ class Controls extends FlxActionSet
|
|||||||
//trace(FlxKey.fromString(FlxG.save.data.upBind));
|
//trace(FlxKey.fromString(FlxG.save.data.upBind));
|
||||||
|
|
||||||
removeKeyboard();
|
removeKeyboard();
|
||||||
|
if (gamepadsAdded.length != 0)
|
||||||
|
removeGamepad();
|
||||||
KeyBinds.keyCheck();
|
KeyBinds.keyCheck();
|
||||||
|
|
||||||
|
var buttons = new Map<Control,Array<FlxGamepadInputID>>();
|
||||||
|
|
||||||
|
buttons.set(Control.UP,[FlxGamepadInputID.fromString(FlxG.save.data.gpupBind)]);
|
||||||
|
buttons.set(Control.LEFT,[FlxGamepadInputID.fromString(FlxG.save.data.gpleftBind)]);
|
||||||
|
buttons.set(Control.DOWN,[FlxGamepadInputID.fromString(FlxG.save.data.gpdownBind)]);
|
||||||
|
buttons.set(Control.RIGHT,[FlxGamepadInputID.fromString(FlxG.save.data.gprightBind)]);
|
||||||
|
buttons.set(Control.ACCEPT,[FlxGamepadInputID.A]);
|
||||||
|
buttons.set(Control.BACK,[FlxGamepadInputID.B]);
|
||||||
|
buttons.set(Control.PAUSE,[FlxGamepadInputID.START]);
|
||||||
|
|
||||||
|
addGamepad(0,buttons);
|
||||||
|
|
||||||
inline bindKeys(Control.UP, [FlxKey.fromString(FlxG.save.data.upBind), FlxKey.UP]);
|
inline bindKeys(Control.UP, [FlxKey.fromString(FlxG.save.data.upBind), FlxKey.UP]);
|
||||||
inline bindKeys(Control.DOWN, [FlxKey.fromString(FlxG.save.data.downBind), FlxKey.DOWN]);
|
inline bindKeys(Control.DOWN, [FlxKey.fromString(FlxG.save.data.downBind), FlxKey.DOWN]);
|
||||||
inline bindKeys(Control.LEFT, [FlxKey.fromString(FlxG.save.data.leftBind), FlxKey.LEFT]);
|
inline bindKeys(Control.LEFT, [FlxKey.fromString(FlxG.save.data.leftBind), FlxKey.LEFT]);
|
||||||
@ -599,6 +614,9 @@ class Controls extends FlxActionSet
|
|||||||
|
|
||||||
public function addGamepad(id:Int, ?buttonMap:Map<Control, Array<FlxGamepadInputID>>):Void
|
public function addGamepad(id:Int, ?buttonMap:Map<Control, Array<FlxGamepadInputID>>):Void
|
||||||
{
|
{
|
||||||
|
if (gamepadsAdded.contains(id))
|
||||||
|
gamepadsAdded.remove(id);
|
||||||
|
|
||||||
gamepadsAdded.push(id);
|
gamepadsAdded.push(id);
|
||||||
|
|
||||||
#if (haxe >= "4.0.0")
|
#if (haxe >= "4.0.0")
|
||||||
|
@ -177,7 +177,7 @@ class DialogueBox extends FlxSpriteGroup
|
|||||||
dialogueStarted = true;
|
dialogueStarted = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (FlxG.keys.justPressed.ANY && dialogueStarted == true)
|
if (PlayerSettings.player1.controls.ACCEPT && dialogueStarted == true)
|
||||||
{
|
{
|
||||||
remove(dialogue);
|
remove(dialogue);
|
||||||
|
|
||||||
|
92
source/DiffCalc.hx
Normal file
92
source/DiffCalc.hx
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
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],ii[1]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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 segments:Array<Int> = new_Array(1,Std.int(length));
|
||||||
|
|
||||||
|
// algo loop
|
||||||
|
for(i in cleanedNotes)
|
||||||
|
{
|
||||||
|
var index = Std.int(((i.strumTime / 1000)));
|
||||||
|
if (index + 1 > segments.length)
|
||||||
|
continue;
|
||||||
|
segments[index] = segments[index] + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// get the average of all of the segments
|
||||||
|
var sum:Float = 0;
|
||||||
|
|
||||||
|
var newLength = segments.length;
|
||||||
|
|
||||||
|
for (i in segments)
|
||||||
|
{
|
||||||
|
if (i == 0) // remove empty/breaks
|
||||||
|
{
|
||||||
|
newLength--;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
//trace(i);
|
||||||
|
sum += i / .5; // half it because otherwise instead of nps its just fucking notes per half second which is dumb and stupid
|
||||||
|
}
|
||||||
|
return HelperFunctions.truncateFloat(sum / newLength,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,7 @@
|
|||||||
package;
|
package;
|
||||||
|
|
||||||
|
import Song.SwagSong;
|
||||||
|
import flixel.input.gamepad.FlxGamepad;
|
||||||
import flash.text.TextField;
|
import flash.text.TextField;
|
||||||
import flixel.FlxG;
|
import flixel.FlxG;
|
||||||
import flixel.FlxSprite;
|
import flixel.FlxSprite;
|
||||||
@ -28,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 = '';
|
||||||
@ -37,6 +40,20 @@ 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('freeplaySonglist'));
|
||||||
@ -44,8 +61,23 @@ class FreeplayState extends MusicBeatState
|
|||||||
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(':');
|
||||||
|
var meta = new SongMetadata(data[0], Std.parseInt(data[2]), data[1]);
|
||||||
if(Std.parseInt(data[2]) <= FlxG.save.data.weekUnlocked - 1)
|
if(Std.parseInt(data[2]) <= FlxG.save.data.weekUnlocked - 1)
|
||||||
songs.push(new SongMetadata(data[0], Std.parseInt(data[2]), data[1]));
|
songs.push(new SongMetadata(data[0], Std.parseInt(data[2]), data[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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -101,7 +133,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 +141,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);
|
||||||
@ -185,10 +221,32 @@ class FreeplayState extends MusicBeatState
|
|||||||
scoreText.text = "PERSONAL BEST:" + lerpScore;
|
scoreText.text = "PERSONAL BEST:" + lerpScore;
|
||||||
comboText.text = combo + '\n';
|
comboText.text = combo + '\n';
|
||||||
|
|
||||||
var upP = controls.UP_P;
|
var upP = FlxG.keys.justPressed.UP;
|
||||||
var downP = controls.DOWN_P;
|
var downP = FlxG.keys.justPressed.DOWN;
|
||||||
var accepted = controls.ACCEPT;
|
var accepted = controls.ACCEPT;
|
||||||
|
|
||||||
|
var gamepad:FlxGamepad = FlxG.gamepads.lastActive;
|
||||||
|
|
||||||
|
if (gamepad != null)
|
||||||
|
{
|
||||||
|
if (gamepad.justPressed.DPAD_UP)
|
||||||
|
{
|
||||||
|
changeSelection(-1);
|
||||||
|
}
|
||||||
|
if (gamepad.justPressed.DPAD_DOWN)
|
||||||
|
{
|
||||||
|
changeSelection(1);
|
||||||
|
}
|
||||||
|
if (gamepad.justPressed.DPAD_LEFT)
|
||||||
|
{
|
||||||
|
changeDiff(-1);
|
||||||
|
}
|
||||||
|
if (gamepad.justPressed.DPAD_RIGHT)
|
||||||
|
{
|
||||||
|
changeDiff(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (upP)
|
if (upP)
|
||||||
{
|
{
|
||||||
changeSelection(-1);
|
changeSelection(-1);
|
||||||
@ -198,9 +256,9 @@ class FreeplayState extends MusicBeatState
|
|||||||
changeSelection(1);
|
changeSelection(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (controls.LEFT_P)
|
if (FlxG.keys.justPressed.LEFT)
|
||||||
changeDiff(-1);
|
changeDiff(-1);
|
||||||
if (controls.RIGHT_P)
|
if (FlxG.keys.justPressed.RIGHT)
|
||||||
changeDiff(1);
|
changeDiff(1);
|
||||||
|
|
||||||
if (controls.BACK)
|
if (controls.BACK)
|
||||||
@ -216,14 +274,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;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
hmm = songData.get(songs[curSelected].songName)[curDifficulty];
|
||||||
|
if (hmm == null)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
catch(ex)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
trace(songs[curSelected].songName);
|
|
||||||
|
|
||||||
var poop:String = Highscore.formatSong(songFormat, curDifficulty);
|
PlayState.SONG = hmm;
|
||||||
|
|
||||||
trace(poop);
|
|
||||||
|
|
||||||
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;
|
||||||
@ -252,7 +316,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();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -288,6 +352,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
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
import flixel.input.gamepad.FlxGamepad;
|
||||||
import openfl.Lib;
|
import openfl.Lib;
|
||||||
import flixel.FlxG;
|
import flixel.FlxG;
|
||||||
|
|
||||||
@ -96,6 +97,10 @@ class KadeEngineData
|
|||||||
if (FlxG.save.data.optimize == null)
|
if (FlxG.save.data.optimize == null)
|
||||||
FlxG.save.data.optimize = false;
|
FlxG.save.data.optimize = false;
|
||||||
|
|
||||||
|
var gamepad:FlxGamepad = FlxG.gamepads.lastActive;
|
||||||
|
|
||||||
|
KeyBinds.gamepad = gamepad != null;
|
||||||
|
|
||||||
Conductor.recalculateTimings();
|
Conductor.recalculateTimings();
|
||||||
PlayerSettings.player1.controls.loadKeyBinds();
|
PlayerSettings.player1.controls.loadKeyBinds();
|
||||||
KeyBinds.keyCheck();
|
KeyBinds.keyCheck();
|
||||||
|
@ -3,6 +3,7 @@ package;
|
|||||||
/// Code created by Rozebud for FPS Plus (thanks rozebud)
|
/// Code created by Rozebud for FPS Plus (thanks rozebud)
|
||||||
// modified by KadeDev for use in Kade Engine/Tricky
|
// modified by KadeDev for use in Kade Engine/Tricky
|
||||||
|
|
||||||
|
import flixel.input.gamepad.FlxGamepad;
|
||||||
import flixel.util.FlxAxes;
|
import flixel.util.FlxAxes;
|
||||||
import flixel.FlxSubState;
|
import flixel.FlxSubState;
|
||||||
import Options.Option;
|
import Options.Option;
|
||||||
@ -36,15 +37,19 @@ class KeyBindMenu extends FlxSubState
|
|||||||
var warningTween:FlxTween;
|
var warningTween:FlxTween;
|
||||||
var keyText:Array<String> = ["LEFT", "DOWN", "UP", "RIGHT"];
|
var keyText:Array<String> = ["LEFT", "DOWN", "UP", "RIGHT"];
|
||||||
var defaultKeys:Array<String> = ["A", "S", "W", "D", "R"];
|
var defaultKeys:Array<String> = ["A", "S", "W", "D", "R"];
|
||||||
|
var defaultGpKeys:Array<String> = ["DPAD_LEFT", "DPAD_DOWN", "DPAD_UP", "DPAD_RIGHT"];
|
||||||
var curSelected:Int = 0;
|
var curSelected:Int = 0;
|
||||||
|
|
||||||
var keys:Array<String> = [FlxG.save.data.leftBind,
|
var keys:Array<String> = [FlxG.save.data.leftBind,
|
||||||
FlxG.save.data.downBind,
|
FlxG.save.data.downBind,
|
||||||
FlxG.save.data.upBind,
|
FlxG.save.data.upBind,
|
||||||
FlxG.save.data.rightBind];
|
FlxG.save.data.rightBind];
|
||||||
|
var gpKeys:Array<String> = [FlxG.save.data.gpleftBind,
|
||||||
|
FlxG.save.data.gpdownBind,
|
||||||
|
FlxG.save.data.gpupBind,
|
||||||
|
FlxG.save.data.gprightBind];
|
||||||
var tempKey:String = "";
|
var tempKey:String = "";
|
||||||
var blacklist:Array<String> = ["ESCAPE", "ENTER", "BACKSPACE", "SPACE"];
|
var blacklist:Array<String> = ["ESCAPE", "ENTER", "BACKSPACE", "SPACE", "TAB"];
|
||||||
|
|
||||||
var blackBox:FlxSprite;
|
var blackBox:FlxSprite;
|
||||||
var infoText:FlxText;
|
var infoText:FlxText;
|
||||||
@ -61,9 +66,16 @@ class KeyBindMenu extends FlxSubState
|
|||||||
keys[i] = defaultKeys[i];
|
keys[i] = defaultKeys[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (i in 0...gpKeys.length)
|
||||||
|
{
|
||||||
|
var k = gpKeys[i];
|
||||||
|
if (k == null)
|
||||||
|
gpKeys[i] = defaultGpKeys[i];
|
||||||
|
}
|
||||||
|
|
||||||
//FlxG.sound.playMusic('assets/music/configurator' + TitleState.soundExt);
|
//FlxG.sound.playMusic('assets/music/configurator' + TitleState.soundExt);
|
||||||
|
|
||||||
persistentUpdate = persistentDraw = true;
|
persistentUpdate = true;
|
||||||
|
|
||||||
keyTextDisplay = new FlxText(-10, 0, 1280, "", 72);
|
keyTextDisplay = new FlxText(-10, 0, 1280, "", 72);
|
||||||
keyTextDisplay.scrollFactor.set(0, 0);
|
keyTextDisplay.scrollFactor.set(0, 0);
|
||||||
@ -74,7 +86,7 @@ class KeyBindMenu extends FlxSubState
|
|||||||
blackBox = new FlxSprite(0,0).makeGraphic(FlxG.width,FlxG.height,FlxColor.BLACK);
|
blackBox = new FlxSprite(0,0).makeGraphic(FlxG.width,FlxG.height,FlxColor.BLACK);
|
||||||
add(blackBox);
|
add(blackBox);
|
||||||
|
|
||||||
infoText = new FlxText(-10, 580, 1280, "(Escape to save, backspace to leave without saving)", 72);
|
infoText = new FlxText(-10, 580, 1280, 'Current Mode: ${KeyBinds.gamepad ? 'GAMEPAD' : 'KEYBOARD'}. Press TAB to switch\n(${KeyBinds.gamepad ? 'RIGHT Trigger' : 'Escape'} to save, ${KeyBinds.gamepad ? 'LEFT Trigger' : 'Backspace'} to leave without saving. ${KeyBinds.gamepad ? 'START To change a keybind' : ''})', 72);
|
||||||
infoText.scrollFactor.set(0, 0);
|
infoText.scrollFactor.set(0, 0);
|
||||||
infoText.setFormat("VCR OSD Mono", 24, FlxColor.WHITE, FlxTextAlign.CENTER, FlxTextBorderStyle.OUTLINE, FlxColor.BLACK);
|
infoText.setFormat("VCR OSD Mono", 24, FlxColor.WHITE, FlxTextAlign.CENTER, FlxTextBorderStyle.OUTLINE, FlxColor.BLACK);
|
||||||
infoText.borderSize = 2;
|
infoText.borderSize = 2;
|
||||||
@ -98,8 +110,14 @@ class KeyBindMenu extends FlxSubState
|
|||||||
super.create();
|
super.create();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var frames = 0;
|
||||||
|
|
||||||
override function update(elapsed:Float)
|
override function update(elapsed:Float)
|
||||||
{
|
{
|
||||||
|
var gamepad:FlxGamepad = FlxG.gamepads.lastActive;
|
||||||
|
|
||||||
|
if (frames <= 10)
|
||||||
|
frames++;
|
||||||
|
|
||||||
switch(state){
|
switch(state){
|
||||||
|
|
||||||
@ -116,6 +134,13 @@ class KeyBindMenu extends FlxSubState
|
|||||||
changeItem(1);
|
changeItem(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (FlxG.keys.justPressed.TAB)
|
||||||
|
{
|
||||||
|
KeyBinds.gamepad = !KeyBinds.gamepad;
|
||||||
|
infoText.text = 'Current Mode: ${KeyBinds.gamepad ? 'GAMEPAD' : 'KEYBOARD'}. Press TAB to switch\n(${KeyBinds.gamepad ? 'RIGHT Trigger' : 'Escape'} to save, ${KeyBinds.gamepad ? 'LEFT Trigger' : 'Backspace'} to leave without saving. ${KeyBinds.gamepad ? 'START To change a keybind' : ''})';
|
||||||
|
textUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
if (FlxG.keys.justPressed.ENTER){
|
if (FlxG.keys.justPressed.ENTER){
|
||||||
FlxG.sound.play(Paths.sound('scrollMenu'));
|
FlxG.sound.play(Paths.sound('scrollMenu'));
|
||||||
state = "input";
|
state = "input";
|
||||||
@ -126,14 +151,69 @@ class KeyBindMenu extends FlxSubState
|
|||||||
else if (FlxG.keys.justPressed.BACKSPACE){
|
else if (FlxG.keys.justPressed.BACKSPACE){
|
||||||
reset();
|
reset();
|
||||||
}
|
}
|
||||||
|
if (gamepad != null) // GP Logic
|
||||||
|
{
|
||||||
|
if (gamepad.justPressed.DPAD_UP)
|
||||||
|
{
|
||||||
|
FlxG.sound.play(Paths.sound('scrollMenu'));
|
||||||
|
changeItem(-1);
|
||||||
|
textUpdate();
|
||||||
|
}
|
||||||
|
if (gamepad.justPressed.DPAD_DOWN)
|
||||||
|
{
|
||||||
|
FlxG.sound.play(Paths.sound('scrollMenu'));
|
||||||
|
changeItem(1);
|
||||||
|
textUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gamepad.justPressed.START && frames > 10){
|
||||||
|
FlxG.sound.play(Paths.sound('scrollMenu'));
|
||||||
|
state = "input";
|
||||||
|
}
|
||||||
|
else if(gamepad.justPressed.LEFT_TRIGGER){
|
||||||
|
quit();
|
||||||
|
}
|
||||||
|
else if (gamepad.justPressed.RIGHT_TRIGGER){
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
case "input":
|
case "input":
|
||||||
tempKey = keys[curSelected];
|
tempKey = keys[curSelected];
|
||||||
keys[curSelected] = "?";
|
keys[curSelected] = "?";
|
||||||
|
if (KeyBinds.gamepad)
|
||||||
|
gpKeys[curSelected] = "?";
|
||||||
textUpdate();
|
textUpdate();
|
||||||
state = "waiting";
|
state = "waiting";
|
||||||
|
|
||||||
case "waiting":
|
case "waiting":
|
||||||
|
if (gamepad != null && KeyBinds.gamepad) // GP Logic
|
||||||
|
{
|
||||||
|
if(FlxG.keys.justPressed.ESCAPE){ // just in case you get stuck
|
||||||
|
gpKeys[curSelected] = tempKey;
|
||||||
|
state = "select";
|
||||||
|
FlxG.sound.play(Paths.sound('confirmMenu'));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gamepad.justPressed.START)
|
||||||
|
{
|
||||||
|
addKeyGamepad(defaultKeys[curSelected]);
|
||||||
|
save();
|
||||||
|
state = "select";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gamepad.justPressed.ANY)
|
||||||
|
{
|
||||||
|
trace(gamepad.firstJustPressedID());
|
||||||
|
addKeyGamepad(gamepad.firstJustPressedID());
|
||||||
|
save();
|
||||||
|
state = "select";
|
||||||
|
textUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
if(FlxG.keys.justPressed.ESCAPE){
|
if(FlxG.keys.justPressed.ESCAPE){
|
||||||
keys[curSelected] = tempKey;
|
keys[curSelected] = tempKey;
|
||||||
state = "select";
|
state = "select";
|
||||||
@ -149,6 +229,7 @@ class KeyBindMenu extends FlxSubState
|
|||||||
save();
|
save();
|
||||||
state = "select";
|
state = "select";
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
case "exiting":
|
case "exiting":
|
||||||
@ -170,12 +251,25 @@ class KeyBindMenu extends FlxSubState
|
|||||||
|
|
||||||
keyTextDisplay.text = "\n\n";
|
keyTextDisplay.text = "\n\n";
|
||||||
|
|
||||||
|
if (KeyBinds.gamepad)
|
||||||
|
{
|
||||||
|
for(i in 0...4){
|
||||||
|
|
||||||
|
var textStart = (i == curSelected) ? "> " : " ";
|
||||||
|
trace(gpKeys[i]);
|
||||||
|
keyTextDisplay.text += textStart + keyText[i] + ": " + gpKeys[i] + "\n";
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
for(i in 0...4){
|
for(i in 0...4){
|
||||||
|
|
||||||
var textStart = (i == curSelected) ? "> " : " ";
|
var textStart = (i == curSelected) ? "> " : " ";
|
||||||
keyTextDisplay.text += textStart + keyText[i] + ": " + ((keys[i] != keyText[i]) ? (keys[i] + " / ") : "" ) + keyText[i] + " ARROW\n";
|
keyTextDisplay.text += textStart + keyText[i] + ": " + ((keys[i] != keyText[i]) ? (keys[i] + " / ") : "" ) + keyText[i] + " ARROW\n";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
keyTextDisplay.screenCenter();
|
keyTextDisplay.screenCenter();
|
||||||
|
|
||||||
@ -188,6 +282,11 @@ class KeyBindMenu extends FlxSubState
|
|||||||
FlxG.save.data.leftBind = keys[0];
|
FlxG.save.data.leftBind = keys[0];
|
||||||
FlxG.save.data.rightBind = keys[3];
|
FlxG.save.data.rightBind = keys[3];
|
||||||
|
|
||||||
|
FlxG.save.data.gpupBind = gpKeys[2];
|
||||||
|
FlxG.save.data.gpdownBind = gpKeys[1];
|
||||||
|
FlxG.save.data.gpleftBind = gpKeys[0];
|
||||||
|
FlxG.save.data.gprightBind = gpKeys[3];
|
||||||
|
|
||||||
FlxG.save.flush();
|
FlxG.save.flush();
|
||||||
|
|
||||||
PlayerSettings.player1.controls.loadKeyBinds();
|
PlayerSettings.player1.controls.loadKeyBinds();
|
||||||
@ -217,6 +316,38 @@ class KeyBindMenu extends FlxSubState
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function addKeyGamepad(r:String){
|
||||||
|
|
||||||
|
var shouldReturn:Bool = true;
|
||||||
|
|
||||||
|
var notAllowed:Array<String> = ["START", "RIGHT_TRIGGER", "LEFT_TRIGGER"];
|
||||||
|
|
||||||
|
for(x in 0...gpKeys.length)
|
||||||
|
{
|
||||||
|
var oK = gpKeys[x];
|
||||||
|
if(oK == r)
|
||||||
|
gpKeys[x] = null;
|
||||||
|
if (notAllowed.contains(oK))
|
||||||
|
{
|
||||||
|
gpKeys[x] = null;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(shouldReturn){
|
||||||
|
gpKeys[curSelected] = r;
|
||||||
|
FlxG.sound.play(Paths.sound('scrollMenu'));
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
gpKeys[curSelected] = tempKey;
|
||||||
|
FlxG.sound.play(Paths.sound('scrollMenu'));
|
||||||
|
keyWarning.alpha = 1;
|
||||||
|
warningTween.cancel();
|
||||||
|
warningTween = FlxTween.tween(keyWarning, {alpha: 0}, 0.5, {ease: FlxEase.circOut, startDelay: 2});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
function addKey(r:String){
|
function addKey(r:String){
|
||||||
|
|
||||||
var shouldReturn:Bool = true;
|
var shouldReturn:Bool = true;
|
||||||
@ -233,6 +364,15 @@ class KeyBindMenu extends FlxSubState
|
|||||||
if(oK == r)
|
if(oK == r)
|
||||||
keys[x] = null;
|
keys[x] = null;
|
||||||
if (notAllowed.contains(oK))
|
if (notAllowed.contains(oK))
|
||||||
|
{
|
||||||
|
keys[x] = null;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (r.contains("NUMPAD"))
|
||||||
|
{
|
||||||
|
keys[curSelected] = null;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,6 +12,8 @@ import flixel.input.keyboard.FlxKey;
|
|||||||
class KeyBinds
|
class KeyBinds
|
||||||
{
|
{
|
||||||
|
|
||||||
|
public static var gamepad:Bool = false;
|
||||||
|
|
||||||
public static function resetBinds():Void{
|
public static function resetBinds():Void{
|
||||||
|
|
||||||
FlxG.save.data.upBind = "W";
|
FlxG.save.data.upBind = "W";
|
||||||
@ -19,6 +21,10 @@ class KeyBinds
|
|||||||
FlxG.save.data.leftBind = "A";
|
FlxG.save.data.leftBind = "A";
|
||||||
FlxG.save.data.rightBind = "D";
|
FlxG.save.data.rightBind = "D";
|
||||||
FlxG.save.data.killBind = "R";
|
FlxG.save.data.killBind = "R";
|
||||||
|
FlxG.save.data.gpupBind = "DPAD_UP";
|
||||||
|
FlxG.save.data.gpdownBind = "DPAD_DOWN";
|
||||||
|
FlxG.save.data.gpleftBind = "DPAD_LEFT";
|
||||||
|
FlxG.save.data.gprightBind = "DPAD_RIGHT";
|
||||||
PlayerSettings.player1.controls.loadKeyBinds();
|
PlayerSettings.player1.controls.loadKeyBinds();
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -29,22 +35,49 @@ class KeyBinds
|
|||||||
FlxG.save.data.upBind = "W";
|
FlxG.save.data.upBind = "W";
|
||||||
trace("No UP");
|
trace("No UP");
|
||||||
}
|
}
|
||||||
|
if (StringTools.contains(FlxG.save.data.upBind,"NUMPAD"))
|
||||||
|
FlxG.save.data.upBind = "W";
|
||||||
if(FlxG.save.data.downBind == null){
|
if(FlxG.save.data.downBind == null){
|
||||||
FlxG.save.data.downBind = "S";
|
FlxG.save.data.downBind = "S";
|
||||||
trace("No DOWN");
|
trace("No DOWN");
|
||||||
}
|
}
|
||||||
|
if (StringTools.contains(FlxG.save.data.downBind,"NUMPAD"))
|
||||||
|
FlxG.save.data.downBind = "S";
|
||||||
if(FlxG.save.data.leftBind == null){
|
if(FlxG.save.data.leftBind == null){
|
||||||
FlxG.save.data.leftBind = "A";
|
FlxG.save.data.leftBind = "A";
|
||||||
trace("No LEFT");
|
trace("No LEFT");
|
||||||
}
|
}
|
||||||
|
if (StringTools.contains(FlxG.save.data.leftBind,"NUMPAD"))
|
||||||
|
FlxG.save.data.leftBind = "A";
|
||||||
if(FlxG.save.data.rightBind == null){
|
if(FlxG.save.data.rightBind == null){
|
||||||
FlxG.save.data.rightBind = "D";
|
FlxG.save.data.rightBind = "D";
|
||||||
trace("No RIGHT");
|
trace("No RIGHT");
|
||||||
}
|
}
|
||||||
|
if (StringTools.contains(FlxG.save.data.rightBind,"NUMPAD"))
|
||||||
|
FlxG.save.data.rightBind = "D";
|
||||||
|
|
||||||
|
if(FlxG.save.data.gpupBind == null){
|
||||||
|
FlxG.save.data.gpupBind = "DPAD_UP";
|
||||||
|
trace("No GUP");
|
||||||
|
}
|
||||||
|
if(FlxG.save.data.gpdownBind == null){
|
||||||
|
FlxG.save.data.gpdownBind = "DPAD_DOWN";
|
||||||
|
trace("No GDOWN");
|
||||||
|
}
|
||||||
|
if(FlxG.save.data.gpleftBind == null){
|
||||||
|
FlxG.save.data.gpleftBind = "DPAD_LEFT";
|
||||||
|
trace("No GLEFT");
|
||||||
|
}
|
||||||
|
if(FlxG.save.data.gprightBind == null){
|
||||||
|
FlxG.save.data.gprightBind = "DPAD_RIGHT";
|
||||||
|
trace("No GRIGHT");
|
||||||
|
}
|
||||||
if(FlxG.save.data.killBind == null){
|
if(FlxG.save.data.killBind == null){
|
||||||
FlxG.save.data.killBind = "R";
|
FlxG.save.data.killBind = "R";
|
||||||
trace("No KILL");
|
trace("No KILL");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
trace('${FlxG.save.data.leftBind}-${FlxG.save.data.downBind}-${FlxG.save.data.upBind}-${FlxG.save.data.rightBind}');
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,7 +1,5 @@
|
|||||||
package;
|
package;
|
||||||
|
|
||||||
|
|
||||||
import webm.WebmPlayer;
|
|
||||||
import openfl.display.BlendMode;
|
import openfl.display.BlendMode;
|
||||||
import openfl.text.TextFormat;
|
import openfl.text.TextFormat;
|
||||||
import openfl.display.Application;
|
import openfl.display.Application;
|
||||||
@ -77,10 +75,12 @@ class Main extends Sprite
|
|||||||
gameHeight = Math.ceil(stageHeight / zoom);
|
gameHeight = Math.ceil(stageHeight / zoom);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if cpp
|
||||||
initialState = Caching;
|
initialState = Caching;
|
||||||
|
|
||||||
game = new FlxGame(gameWidth, gameHeight, initialState, zoom, framerate, framerate, skipSplash, startFullscreen);
|
game = new FlxGame(gameWidth, gameHeight, initialState, zoom, framerate, framerate, skipSplash, startFullscreen);
|
||||||
|
#else
|
||||||
|
game = new FlxGame(gameWidth, gameHeight, initialState, zoom, framerate, framerate, skipSplash, startFullscreen);
|
||||||
|
#end
|
||||||
addChild(game);
|
addChild(game);
|
||||||
|
|
||||||
#if !mobile
|
#if !mobile
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package;
|
package;
|
||||||
|
|
||||||
|
import flixel.input.gamepad.FlxGamepad;
|
||||||
import Controls.KeyboardScheme;
|
import Controls.KeyboardScheme;
|
||||||
import flixel.FlxG;
|
import flixel.FlxG;
|
||||||
import flixel.FlxObject;
|
import flixel.FlxObject;
|
||||||
@ -39,7 +40,7 @@ class MainMenuState extends MusicBeatState
|
|||||||
|
|
||||||
public static var nightly:String = "";
|
public static var nightly:String = "";
|
||||||
|
|
||||||
public static var kadeEngineVer:String = "1.5.3" + nightly;
|
public static var kadeEngineVer:String = "1.5.4" + nightly;
|
||||||
public static var gameVer:String = "0.2.7.1";
|
public static var gameVer:String = "0.2.7.1";
|
||||||
|
|
||||||
var magenta:FlxSprite;
|
var magenta:FlxSprite;
|
||||||
@ -144,13 +145,29 @@ class MainMenuState extends MusicBeatState
|
|||||||
|
|
||||||
if (!selectedSomethin)
|
if (!selectedSomethin)
|
||||||
{
|
{
|
||||||
if (controls.UP_P)
|
var gamepad:FlxGamepad = FlxG.gamepads.lastActive;
|
||||||
|
|
||||||
|
if (gamepad != null)
|
||||||
|
{
|
||||||
|
if (gamepad.justPressed.DPAD_UP)
|
||||||
|
{
|
||||||
|
FlxG.sound.play(Paths.sound('scrollMenu'));
|
||||||
|
changeItem(-1);
|
||||||
|
}
|
||||||
|
if (gamepad.justPressed.DPAD_DOWN)
|
||||||
|
{
|
||||||
|
FlxG.sound.play(Paths.sound('scrollMenu'));
|
||||||
|
changeItem(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (FlxG.keys.justPressed.UP)
|
||||||
{
|
{
|
||||||
FlxG.sound.play(Paths.sound('scrollMenu'));
|
FlxG.sound.play(Paths.sound('scrollMenu'));
|
||||||
changeItem(-1);
|
changeItem(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (controls.DOWN_P)
|
if (FlxG.keys.justPressed.DOWN)
|
||||||
{
|
{
|
||||||
FlxG.sound.play(Paths.sound('scrollMenu'));
|
FlxG.sound.play(Paths.sound('scrollMenu'));
|
||||||
changeItem(1);
|
changeItem(1);
|
||||||
|
@ -99,20 +99,20 @@ class Note extends FlxSprite
|
|||||||
default:
|
default:
|
||||||
frames = Paths.getSparrowAtlas('NOTE_assets');
|
frames = Paths.getSparrowAtlas('NOTE_assets');
|
||||||
|
|
||||||
animation.addByPrefix('greenScroll', 'green0');
|
animation.addByPrefix('greenScroll', 'green instance 1');
|
||||||
animation.addByPrefix('redScroll', 'red0');
|
animation.addByPrefix('redScroll', 'red instance 1');
|
||||||
animation.addByPrefix('blueScroll', 'blue0');
|
animation.addByPrefix('blueScroll', 'blue instance 1');
|
||||||
animation.addByPrefix('purpleScroll', 'purple0');
|
animation.addByPrefix('purpleScroll', 'purple instance 1');
|
||||||
|
|
||||||
animation.addByPrefix('purpleholdend', 'pruple end hold');
|
animation.addByPrefix('purpleholdend', 'pruple end hold instance 1');
|
||||||
animation.addByPrefix('greenholdend', 'green hold end');
|
animation.addByPrefix('greenholdend', 'green hold end instance 1');
|
||||||
animation.addByPrefix('redholdend', 'red hold end');
|
animation.addByPrefix('redholdend', 'red hold end instance 1');
|
||||||
animation.addByPrefix('blueholdend', 'blue hold end');
|
animation.addByPrefix('blueholdend', 'blue hold end instance 1');
|
||||||
|
|
||||||
animation.addByPrefix('purplehold', 'purple hold piece');
|
animation.addByPrefix('purplehold', 'purple hold piece instance 1');
|
||||||
animation.addByPrefix('greenhold', 'green hold piece');
|
animation.addByPrefix('greenhold', 'green hold piece instance 1');
|
||||||
animation.addByPrefix('redhold', 'red hold piece');
|
animation.addByPrefix('redhold', 'red hold piece instance 1');
|
||||||
animation.addByPrefix('bluehold', 'blue hold piece');
|
animation.addByPrefix('bluehold', 'blue hold piece instance 1');
|
||||||
|
|
||||||
setGraphicSize(Std.int(width * 0.7));
|
setGraphicSize(Std.int(width * 0.7));
|
||||||
updateHitbox();
|
updateHitbox();
|
||||||
|
@ -317,10 +317,10 @@ class Judgement extends Option
|
|||||||
|
|
||||||
override function getValue():String {
|
override function getValue():String {
|
||||||
return "Safe Frames: " + Conductor.safeFrames +
|
return "Safe Frames: " + Conductor.safeFrames +
|
||||||
" - SIK: " + HelperFunctions.truncateFloat(22 * Conductor.timeScale, 0) +
|
" - SIK: " + HelperFunctions.truncateFloat(45 * Conductor.timeScale, 0) +
|
||||||
"ms GD: " + HelperFunctions.truncateFloat(45 * Conductor.timeScale, 0) +
|
"ms GD: " + HelperFunctions.truncateFloat(90 * Conductor.timeScale, 0) +
|
||||||
"ms BD: " + HelperFunctions.truncateFloat(135 * Conductor.timeScale, 0) +
|
"ms BD: " + HelperFunctions.truncateFloat(135 * Conductor.timeScale, 0) +
|
||||||
"ms SHT: " + HelperFunctions.truncateFloat(155 * Conductor.timeScale, 0) +
|
"ms SHT: " + HelperFunctions.truncateFloat(166 * Conductor.timeScale, 0) +
|
||||||
"ms TOTAL: " + HelperFunctions.truncateFloat(Conductor.safeZoneOffset,0) + "ms";
|
"ms TOTAL: " + HelperFunctions.truncateFloat(Conductor.safeZoneOffset,0) + "ms";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package;
|
package;
|
||||||
|
|
||||||
|
import flixel.input.gamepad.FlxGamepad;
|
||||||
import flixel.tweens.FlxEase;
|
import flixel.tweens.FlxEase;
|
||||||
import flixel.tweens.FlxTween;
|
import flixel.tweens.FlxTween;
|
||||||
import openfl.Lib;
|
import openfl.Lib;
|
||||||
@ -150,9 +151,26 @@ class OptionsMenu extends MusicBeatState
|
|||||||
|
|
||||||
changeSelection(curSelected);
|
changeSelection(curSelected);
|
||||||
}
|
}
|
||||||
if (controls.UP_P)
|
|
||||||
|
var gamepad:FlxGamepad = FlxG.gamepads.lastActive;
|
||||||
|
|
||||||
|
if (gamepad != null)
|
||||||
|
{
|
||||||
|
if (gamepad.justPressed.DPAD_UP)
|
||||||
|
{
|
||||||
|
FlxG.sound.play(Paths.sound('scrollMenu'));
|
||||||
changeSelection(-1);
|
changeSelection(-1);
|
||||||
if (controls.DOWN_P)
|
}
|
||||||
|
if (gamepad.justPressed.DPAD_DOWN)
|
||||||
|
{
|
||||||
|
FlxG.sound.play(Paths.sound('scrollMenu'));
|
||||||
|
changeSelection(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (FlxG.keys.justPressed.UP)
|
||||||
|
changeSelection(-1);
|
||||||
|
if (FlxG.keys.justPressed.DOWN)
|
||||||
changeSelection(1);
|
changeSelection(1);
|
||||||
|
|
||||||
if (isCat)
|
if (isCat)
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package;
|
package;
|
||||||
|
|
||||||
|
import flixel.input.gamepad.FlxGamepad;
|
||||||
import openfl.Lib;
|
import openfl.Lib;
|
||||||
#if windows
|
#if windows
|
||||||
import llua.Lua;
|
import llua.Lua;
|
||||||
@ -108,13 +109,22 @@ class PauseSubState extends MusicBeatSubstate
|
|||||||
if (PlayState.instance.useVideo)
|
if (PlayState.instance.useVideo)
|
||||||
menuItems.remove('Resume');
|
menuItems.remove('Resume');
|
||||||
|
|
||||||
var upP = controls.UP_P;
|
var gamepad:FlxGamepad = FlxG.gamepads.lastActive;
|
||||||
var downP = controls.DOWN_P;
|
|
||||||
var leftP = controls.LEFT_P;
|
var upPcontroller:Bool = false;
|
||||||
var rightP = controls.RIGHT_P;
|
var downPcontroller:Bool = false;
|
||||||
var accepted = controls.ACCEPT;
|
var leftPcontroller:Bool = false;
|
||||||
|
var rightPcontroller:Bool = false;
|
||||||
var oldOffset:Float = 0;
|
var oldOffset:Float = 0;
|
||||||
|
|
||||||
|
if (gamepad != null && KeyBinds.gamepad)
|
||||||
|
{
|
||||||
|
upPcontroller = gamepad.justPressed.DPAD_UP;
|
||||||
|
downPcontroller = gamepad.justPressed.DPAD_DOWN;
|
||||||
|
leftPcontroller = gamepad.justPressed.DPAD_LEFT;
|
||||||
|
rightPcontroller = gamepad.justPressed.DPAD_RIGHT;
|
||||||
|
}
|
||||||
|
|
||||||
// pre lowercasing the song name (update)
|
// pre lowercasing the song name (update)
|
||||||
var songLowercase = StringTools.replace(PlayState.SONG.song, " ", "-").toLowerCase();
|
var songLowercase = StringTools.replace(PlayState.SONG.song, " ", "-").toLowerCase();
|
||||||
switch (songLowercase) {
|
switch (songLowercase) {
|
||||||
@ -123,17 +133,18 @@ class PauseSubState extends MusicBeatSubstate
|
|||||||
}
|
}
|
||||||
var songPath = 'assets/data/' + songLowercase + '/';
|
var songPath = 'assets/data/' + songLowercase + '/';
|
||||||
|
|
||||||
if (upP)
|
if (controls.UP_P || upPcontroller)
|
||||||
{
|
{
|
||||||
changeSelection(-1);
|
changeSelection(-1);
|
||||||
|
|
||||||
}else if (downP)
|
}
|
||||||
|
else if (controls.DOWN_P || downPcontroller)
|
||||||
{
|
{
|
||||||
changeSelection(1);
|
changeSelection(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if cpp
|
#if cpp
|
||||||
else if (leftP)
|
else if (controls.LEFT_P || leftPcontroller)
|
||||||
{
|
{
|
||||||
oldOffset = PlayState.songOffset;
|
oldOffset = PlayState.songOffset;
|
||||||
PlayState.songOffset -= 1;
|
PlayState.songOffset -= 1;
|
||||||
@ -160,7 +171,8 @@ class PauseSubState extends MusicBeatSubstate
|
|||||||
cameras = [FlxG.cameras.list[FlxG.cameras.list.length - 1]];
|
cameras = [FlxG.cameras.list[FlxG.cameras.list.length - 1]];
|
||||||
offsetChanged = true;
|
offsetChanged = true;
|
||||||
}
|
}
|
||||||
}else if (rightP)
|
}
|
||||||
|
else if (controls.RIGHT_P || rightPcontroller)
|
||||||
{
|
{
|
||||||
oldOffset = PlayState.songOffset;
|
oldOffset = PlayState.songOffset;
|
||||||
PlayState.songOffset += 1;
|
PlayState.songOffset += 1;
|
||||||
@ -188,7 +200,7 @@ class PauseSubState extends MusicBeatSubstate
|
|||||||
}
|
}
|
||||||
#end
|
#end
|
||||||
|
|
||||||
if (accepted)
|
if (controls.ACCEPT)
|
||||||
{
|
{
|
||||||
var daSelected:String = menuItems[curSelected];
|
var daSelected:String = menuItems[curSelected];
|
||||||
|
|
||||||
|
@ -1,12 +1,15 @@
|
|||||||
package;
|
package;
|
||||||
|
|
||||||
|
import openfl.ui.KeyLocation;
|
||||||
import openfl.events.Event;
|
import openfl.events.Event;
|
||||||
import haxe.EnumTools;
|
import haxe.EnumTools;
|
||||||
import openfl.ui.Keyboard;
|
import openfl.ui.Keyboard;
|
||||||
import openfl.events.KeyboardEvent;
|
import openfl.events.KeyboardEvent;
|
||||||
import Replay.Ana;
|
import Replay.Ana;
|
||||||
import Replay.Analysis;
|
import Replay.Analysis;
|
||||||
|
#if cpp
|
||||||
import webm.WebmPlayer;
|
import webm.WebmPlayer;
|
||||||
|
#end
|
||||||
import flixel.input.keyboard.FlxKey;
|
import flixel.input.keyboard.FlxKey;
|
||||||
import haxe.Exception;
|
import haxe.Exception;
|
||||||
import openfl.geom.Matrix;
|
import openfl.geom.Matrix;
|
||||||
@ -250,6 +253,8 @@ class PlayState extends MusicBeatState
|
|||||||
}
|
}
|
||||||
misses = 0;
|
misses = 0;
|
||||||
|
|
||||||
|
|
||||||
|
highestCombo = 0;
|
||||||
repPresses = 0;
|
repPresses = 0;
|
||||||
repReleases = 0;
|
repReleases = 0;
|
||||||
|
|
||||||
@ -996,7 +1001,7 @@ class PlayState extends MusicBeatState
|
|||||||
add(healthBar);
|
add(healthBar);
|
||||||
|
|
||||||
// Add Kade Engine watermark
|
// Add Kade Engine watermark
|
||||||
kadeEngineWatermark = new FlxText(4,healthBarBG.y + 50,0,SONG.song + " " + CoolUtil.difficultyFromInt(storyDifficulty) + (Main.watermarks ? " - KE " + MainMenuState.kadeEngineVer : ""), 16);
|
kadeEngineWatermark = new FlxText(4,healthBarBG.y + 50,0,SONG.song + " - " + CoolUtil.difficultyFromInt(storyDifficulty) + (Main.watermarks ? " | KE " + MainMenuState.kadeEngineVer : ""), 16);
|
||||||
kadeEngineWatermark.setFormat(Paths.font("vcr.ttf"), 16, FlxColor.WHITE, RIGHT, FlxTextBorderStyle.OUTLINE,FlxColor.BLACK);
|
kadeEngineWatermark.setFormat(Paths.font("vcr.ttf"), 16, FlxColor.WHITE, RIGHT, FlxTextBorderStyle.OUTLINE,FlxColor.BLACK);
|
||||||
kadeEngineWatermark.scrollFactor.set();
|
kadeEngineWatermark.scrollFactor.set();
|
||||||
add(kadeEngineWatermark);
|
add(kadeEngineWatermark);
|
||||||
@ -1124,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();
|
||||||
}
|
}
|
||||||
@ -1353,24 +1359,94 @@ class PlayState extends MusicBeatState
|
|||||||
var songTime:Float = 0;
|
var songTime:Float = 0;
|
||||||
|
|
||||||
|
|
||||||
private function handleInput(evt:KeyboardEvent):Void { // this actually handles press inputs
|
private function getKey(charCode:Int):String
|
||||||
|
{
|
||||||
|
for (key => value in FlxKey.fromStringMap)
|
||||||
|
{
|
||||||
|
if (charCode == value)
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
if (PlayStateChangeables.botPlay || loadRep || paused)
|
var keys = [false,false,false,false];
|
||||||
return;
|
|
||||||
|
|
||||||
var key = String.fromCharCode(evt.charCode);
|
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 binds:Array<String> = [FlxG.save.data.leftBind,FlxG.save.data.downBind, FlxG.save.data.upBind, FlxG.save.data.rightBind];
|
||||||
|
|
||||||
var data = -1;
|
var data = -1;
|
||||||
|
|
||||||
for (i in 0...binds.length)
|
switch(evt.keyCode) // arrow keys
|
||||||
if (binds[i].toLowerCase() == key)
|
{
|
||||||
|
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;
|
data = i;
|
||||||
|
}
|
||||||
|
|
||||||
if (data == -1)
|
if (data == -1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
keys[data] = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function handleInput(evt:KeyboardEvent):Void { // this actually handles press inputs
|
||||||
|
|
||||||
|
if (PlayStateChangeables.botPlay || loadRep || paused)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// first convert it from openfl to a flixel key code
|
||||||
|
// then use FlxKey to get the key's name based off of the FlxKey dictionary
|
||||||
|
// this makes it work for special characters
|
||||||
|
|
||||||
|
@: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;
|
||||||
|
|
||||||
|
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 = [];
|
||||||
@ -1555,6 +1631,18 @@ class PlayState extends MusicBeatState
|
|||||||
swagNote.sustainLength = songNotes[2];
|
swagNote.sustainLength = songNotes[2];
|
||||||
swagNote.scrollFactor.set(0, 0);
|
swagNote.scrollFactor.set(0, 0);
|
||||||
|
|
||||||
|
var addNote = false;
|
||||||
|
|
||||||
|
for (i in unspawnNotes)
|
||||||
|
if (i.strumTime == daStrumTime && i.noteData == daNoteData)
|
||||||
|
addNote = true;
|
||||||
|
|
||||||
|
if (addNote)
|
||||||
|
{
|
||||||
|
trace('stacked note, thats cringe');
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
var susLength:Float = swagNote.sustainLength;
|
var susLength:Float = swagNote.sustainLength;
|
||||||
|
|
||||||
susLength = susLength / Conductor.stepCrochet;
|
susLength = susLength / Conductor.stepCrochet;
|
||||||
@ -1658,10 +1746,10 @@ class PlayState extends MusicBeatState
|
|||||||
|
|
||||||
case 'normal':
|
case 'normal':
|
||||||
babyArrow.frames = Paths.getSparrowAtlas('NOTE_assets');
|
babyArrow.frames = Paths.getSparrowAtlas('NOTE_assets');
|
||||||
babyArrow.animation.addByPrefix('green', 'arrowUP');
|
babyArrow.animation.addByPrefix('green', 'arrow static instance 1');
|
||||||
babyArrow.animation.addByPrefix('blue', 'arrowDOWN');
|
babyArrow.animation.addByPrefix('blue', 'arrow static instance 2');
|
||||||
babyArrow.animation.addByPrefix('purple', 'arrowLEFT');
|
babyArrow.animation.addByPrefix('purple', 'arrow static instance 3');
|
||||||
babyArrow.animation.addByPrefix('red', 'arrowRIGHT');
|
babyArrow.animation.addByPrefix('red', 'arrow static instance 4');
|
||||||
|
|
||||||
babyArrow.antialiasing = true;
|
babyArrow.antialiasing = true;
|
||||||
babyArrow.setGraphicSize(Std.int(babyArrow.width * 0.7));
|
babyArrow.setGraphicSize(Std.int(babyArrow.width * 0.7));
|
||||||
@ -1670,32 +1758,32 @@ class PlayState extends MusicBeatState
|
|||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
babyArrow.x += Note.swagWidth * 0;
|
babyArrow.x += Note.swagWidth * 0;
|
||||||
babyArrow.animation.addByPrefix('static', 'arrowLEFT');
|
babyArrow.animation.addByPrefix('static', 'arrow static instance 1');
|
||||||
babyArrow.animation.addByPrefix('pressed', 'left press', 24, false);
|
babyArrow.animation.addByPrefix('pressed', 'left press instance 1', 24, false);
|
||||||
babyArrow.animation.addByPrefix('confirm', 'left confirm', 24, false);
|
babyArrow.animation.addByPrefix('confirm', 'left confirm instance 1', 24, false);
|
||||||
case 1:
|
case 1:
|
||||||
babyArrow.x += Note.swagWidth * 1;
|
babyArrow.x += Note.swagWidth * 1;
|
||||||
babyArrow.animation.addByPrefix('static', 'arrowDOWN');
|
babyArrow.animation.addByPrefix('static', 'arrow static instance 2');
|
||||||
babyArrow.animation.addByPrefix('pressed', 'down press', 24, false);
|
babyArrow.animation.addByPrefix('pressed', 'down press instance 1', 24, false);
|
||||||
babyArrow.animation.addByPrefix('confirm', 'down confirm', 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', 'arrowUP');
|
babyArrow.animation.addByPrefix('static', 'arrow static instance 4');
|
||||||
babyArrow.animation.addByPrefix('pressed', 'up press', 24, false);
|
babyArrow.animation.addByPrefix('pressed', 'up press instance 1', 24, false);
|
||||||
babyArrow.animation.addByPrefix('confirm', 'up confirm', 24, false);
|
babyArrow.animation.addByPrefix('confirm', 'up confirm instance 1', 24, false);
|
||||||
case 3:
|
case 3:
|
||||||
babyArrow.x += Note.swagWidth * 3;
|
babyArrow.x += Note.swagWidth * 3;
|
||||||
babyArrow.animation.addByPrefix('static', 'arrowRIGHT');
|
babyArrow.animation.addByPrefix('static', 'arrow static instance 3');
|
||||||
babyArrow.animation.addByPrefix('pressed', 'right press', 24, false);
|
babyArrow.animation.addByPrefix('pressed', 'right press instance 1', 24, false);
|
||||||
babyArrow.animation.addByPrefix('confirm', 'right confirm', 24, false);
|
babyArrow.animation.addByPrefix('confirm', 'right confirm instance 1', 24, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
babyArrow.frames = Paths.getSparrowAtlas('NOTE_assets');
|
babyArrow.frames = Paths.getSparrowAtlas('NOTE_assets');
|
||||||
babyArrow.animation.addByPrefix('green', 'arrowUP');
|
babyArrow.animation.addByPrefix('green', 'arrow static instance 1');
|
||||||
babyArrow.animation.addByPrefix('blue', 'arrowDOWN');
|
babyArrow.animation.addByPrefix('blue', 'arrow static instance 2');
|
||||||
babyArrow.animation.addByPrefix('purple', 'arrowLEFT');
|
babyArrow.animation.addByPrefix('purple', 'arrow static instance 3');
|
||||||
babyArrow.animation.addByPrefix('red', 'arrowRIGHT');
|
babyArrow.animation.addByPrefix('red', 'arrow static instance 4');
|
||||||
|
|
||||||
babyArrow.antialiasing = true;
|
babyArrow.antialiasing = true;
|
||||||
babyArrow.setGraphicSize(Std.int(babyArrow.width * 0.7));
|
babyArrow.setGraphicSize(Std.int(babyArrow.width * 0.7));
|
||||||
@ -1704,24 +1792,24 @@ class PlayState extends MusicBeatState
|
|||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
babyArrow.x += Note.swagWidth * 0;
|
babyArrow.x += Note.swagWidth * 0;
|
||||||
babyArrow.animation.addByPrefix('static', 'arrowLEFT');
|
babyArrow.animation.addByPrefix('static', 'arrow static instance 1');
|
||||||
babyArrow.animation.addByPrefix('pressed', 'left press', 24, false);
|
babyArrow.animation.addByPrefix('pressed', 'left press instance 1', 24, false);
|
||||||
babyArrow.animation.addByPrefix('confirm', 'left confirm', 24, false);
|
babyArrow.animation.addByPrefix('confirm', 'left confirm instance 1', 24, false);
|
||||||
case 1:
|
case 1:
|
||||||
babyArrow.x += Note.swagWidth * 1;
|
babyArrow.x += Note.swagWidth * 1;
|
||||||
babyArrow.animation.addByPrefix('static', 'arrowDOWN');
|
babyArrow.animation.addByPrefix('static', 'arrow static instance 2');
|
||||||
babyArrow.animation.addByPrefix('pressed', 'down press', 24, false);
|
babyArrow.animation.addByPrefix('pressed', 'down press instance 1', 24, false);
|
||||||
babyArrow.animation.addByPrefix('confirm', 'down confirm', 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', 'arrowUP');
|
babyArrow.animation.addByPrefix('static', 'arrow static instance 4');
|
||||||
babyArrow.animation.addByPrefix('pressed', 'up press', 24, false);
|
babyArrow.animation.addByPrefix('pressed', 'up press instance 1', 24, false);
|
||||||
babyArrow.animation.addByPrefix('confirm', 'up confirm', 24, false);
|
babyArrow.animation.addByPrefix('confirm', 'up confirm instance 1', 24, false);
|
||||||
case 3:
|
case 3:
|
||||||
babyArrow.x += Note.swagWidth * 3;
|
babyArrow.x += Note.swagWidth * 3;
|
||||||
babyArrow.animation.addByPrefix('static', 'arrowRIGHT');
|
babyArrow.animation.addByPrefix('static', 'arrow static instance 3');
|
||||||
babyArrow.animation.addByPrefix('pressed', 'right press', 24, false);
|
babyArrow.animation.addByPrefix('pressed', 'right press instance 1', 24, false);
|
||||||
babyArrow.animation.addByPrefix('confirm', 'right confirm', 24, false);
|
babyArrow.animation.addByPrefix('confirm', 'right confirm instance 1', 24, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1970,7 +2058,7 @@ class PlayState extends MusicBeatState
|
|||||||
|
|
||||||
scoreTxt.x = (originalX - (lengthInPx / 2)) + 335;
|
scoreTxt.x = (originalX - (lengthInPx / 2)) + 335;
|
||||||
|
|
||||||
if (FlxG.keys.justPressed.ENTER && startedCountdown && canPause)
|
if (controls.PAUSE && startedCountdown && canPause)
|
||||||
{
|
{
|
||||||
persistentUpdate = false;
|
persistentUpdate = false;
|
||||||
persistentDraw = true;
|
persistentDraw = true;
|
||||||
@ -1986,6 +2074,7 @@ class PlayState extends MusicBeatState
|
|||||||
openSubState(new PauseSubState(boyfriend.getScreenPosition().x, boyfriend.getScreenPosition().y));
|
openSubState(new PauseSubState(boyfriend.getScreenPosition().x, boyfriend.getScreenPosition().y));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (FlxG.keys.justPressed.SEVEN)
|
if (FlxG.keys.justPressed.SEVEN)
|
||||||
{
|
{
|
||||||
if (useVideo)
|
if (useVideo)
|
||||||
@ -2001,6 +2090,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)
|
||||||
{
|
{
|
||||||
@ -2053,6 +2143,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)
|
||||||
{
|
{
|
||||||
@ -2066,6 +2157,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)
|
||||||
{
|
{
|
||||||
@ -2620,6 +2712,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();
|
||||||
@ -2817,7 +2910,7 @@ class PlayState extends MusicBeatState
|
|||||||
ss = false;
|
ss = false;
|
||||||
shits++;
|
shits++;
|
||||||
if (FlxG.save.data.accuracyMod == 0)
|
if (FlxG.save.data.accuracyMod == 0)
|
||||||
totalNotesHit += 0.25;
|
totalNotesHit -= 1;
|
||||||
case 'bad':
|
case 'bad':
|
||||||
daRating = 'bad';
|
daRating = 'bad';
|
||||||
score = 0;
|
score = 0;
|
||||||
@ -3078,7 +3171,7 @@ class PlayState extends MusicBeatState
|
|||||||
var rightHold:Bool = false;
|
var rightHold:Bool = false;
|
||||||
var leftHold:Bool = false;
|
var leftHold:Bool = false;
|
||||||
|
|
||||||
// THIS FUNCTION JUST FUCKS WIT HELD NOTES AND BOTPLAY/REPLAY
|
// THIS FUNCTION JUST FUCKS WIT HELD NOTES AND BOTPLAY/REPLAY (also gamepad shit)
|
||||||
|
|
||||||
private function keyShit():Void // I've invested in emma stocks
|
private function keyShit():Void // I've invested in emma stocks
|
||||||
{
|
{
|
||||||
@ -3105,6 +3198,9 @@ 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)
|
||||||
{
|
{
|
||||||
@ -3113,11 +3209,15 @@ 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)
|
||||||
if (pressArray[i])
|
if (pressArray[i])
|
||||||
anas[i] = new Ana(Conductor.songPosition, null, false, "miss", i);*/
|
anas[i] = new Ana(Conductor.songPosition, null, false, "miss", i);
|
||||||
|
|
||||||
// HOLDS, check for sustain notes
|
// HOLDS, check for sustain notes
|
||||||
if (holdArray.contains(true) && /*!boyfriend.stunned && */ generatedMusic)
|
if (holdArray.contains(true) && /*!boyfriend.stunned && */ generatedMusic)
|
||||||
@ -3129,8 +3229,10 @@ class PlayState extends MusicBeatState
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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)
|
||||||
{
|
{
|
||||||
boyfriend.holdTimer = 0;
|
boyfriend.holdTimer = 0;
|
||||||
|
|
||||||
@ -3141,9 +3243,7 @@ class PlayState extends MusicBeatState
|
|||||||
|
|
||||||
notes.forEachAlive(function(daNote:Note)
|
notes.forEachAlive(function(daNote:Note)
|
||||||
{
|
{
|
||||||
if (daNote.canBeHit && daNote.mustPress && !daNote.tooLate && !daNote.wasGoodHit)
|
if (daNote.canBeHit && daNote.mustPress && !daNote.tooLate && !daNote.wasGoodHit && !directionsAccounted[daNote.noteData])
|
||||||
{
|
|
||||||
if (!directionsAccounted[daNote.noteData])
|
|
||||||
{
|
{
|
||||||
if (directionList.contains(daNote.noteData))
|
if (directionList.contains(daNote.noteData))
|
||||||
{
|
{
|
||||||
@ -3170,11 +3270,8 @@ class PlayState extends MusicBeatState
|
|||||||
directionList.push(daNote.noteData);
|
directionList.push(daNote.noteData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
trace('notes that can be hit: ' + possibleNotes.length);
|
|
||||||
|
|
||||||
for (note in dumbNotes)
|
for (note in dumbNotes)
|
||||||
{
|
{
|
||||||
FlxG.log.add("killing dumb ass note at " + note.strumTime);
|
FlxG.log.add("killing dumb ass note at " + note.strumTime);
|
||||||
@ -3184,7 +3281,6 @@ class PlayState extends MusicBeatState
|
|||||||
}
|
}
|
||||||
|
|
||||||
possibleNotes.sort((a, b) -> Std.int(a.strumTime - b.strumTime));
|
possibleNotes.sort((a, b) -> Std.int(a.strumTime - b.strumTime));
|
||||||
|
|
||||||
if (perfectMode)
|
if (perfectMode)
|
||||||
goodNoteHit(possibleNotes[0]);
|
goodNoteHit(possibleNotes[0]);
|
||||||
else if (possibleNotes.length > 0)
|
else if (possibleNotes.length > 0)
|
||||||
@ -3218,14 +3314,13 @@ class PlayState extends MusicBeatState
|
|||||||
if (pressArray[shit])
|
if (pressArray[shit])
|
||||||
noteMiss(shit, null);
|
noteMiss(shit, null);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}*/
|
if (!loadRep)
|
||||||
|
|
||||||
/*if (!loadRep)
|
|
||||||
for (i in anas)
|
for (i in anas)
|
||||||
if (i != null)
|
if (i != null)
|
||||||
replayAna.anaArray.push(i); // put em all there*/
|
replayAna.anaArray.push(i); // put em all there
|
||||||
|
}
|
||||||
notes.forEachAlive(function(daNote:Note)
|
notes.forEachAlive(function(daNote:Note)
|
||||||
{
|
{
|
||||||
if(PlayStateChangeables.useDownscroll && daNote.y > strumLine.y ||
|
if(PlayStateChangeables.useDownscroll && daNote.y > strumLine.y ||
|
||||||
@ -3331,6 +3426,7 @@ class PlayState extends MusicBeatState
|
|||||||
|
|
||||||
public function backgroundVideo(source:String) // for background videos
|
public function backgroundVideo(source:String) // for background videos
|
||||||
{
|
{
|
||||||
|
#if cpp
|
||||||
useVideo = true;
|
useVideo = true;
|
||||||
|
|
||||||
FlxG.stage.window.onFocusOut.add(focusOut);
|
FlxG.stage.window.onFocusOut.add(focusOut);
|
||||||
@ -3381,6 +3477,7 @@ class PlayState extends MusicBeatState
|
|||||||
webmHandler.pause();
|
webmHandler.pause();
|
||||||
else
|
else
|
||||||
webmHandler.resume();
|
webmHandler.resume();
|
||||||
|
#end
|
||||||
}
|
}
|
||||||
|
|
||||||
function noteMiss(direction:Int = 1, daNote:Note):Void
|
function noteMiss(direction:Int = 1, daNote:Note):Void
|
||||||
|
@ -82,7 +82,7 @@ class ResultsScreen extends FlxSubState
|
|||||||
comboText.scrollFactor.set();
|
comboText.scrollFactor.set();
|
||||||
add(comboText);
|
add(comboText);
|
||||||
|
|
||||||
contText = new FlxText(FlxG.width - 475,FlxG.height + 50,0,'Press ENTER to continue.');
|
contText = new FlxText(FlxG.width - 475,FlxG.height + 50,0,'Press ${KeyBinds.gamepad ? 'A' : 'ENTER'} to continue.');
|
||||||
contText.size = 28;
|
contText.size = 28;
|
||||||
contText.setBorderStyle(FlxTextBorderStyle.OUTLINE,FlxColor.BLACK,4,1);
|
contText.setBorderStyle(FlxTextBorderStyle.OUTLINE,FlxColor.BLACK,4,1);
|
||||||
contText.color = FlxColor.WHITE;
|
contText.color = FlxColor.WHITE;
|
||||||
@ -172,7 +172,7 @@ class ResultsScreen extends FlxSubState
|
|||||||
|
|
||||||
// keybinds
|
// keybinds
|
||||||
|
|
||||||
if (FlxG.keys.justPressed.ENTER)
|
if (PlayerSettings.player1.controls.ACCEPT)
|
||||||
{
|
{
|
||||||
music.fadeOut(0.3);
|
music.fadeOut(0.3);
|
||||||
|
|
||||||
@ -199,12 +199,6 @@ class ResultsScreen extends FlxSubState
|
|||||||
FlxG.switchState(new FreeplayState());
|
FlxG.switchState(new FreeplayState());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (FlxG.keys.justPressed.EIGHT)
|
|
||||||
{
|
|
||||||
graph.showInput = !graph.showInput;
|
|
||||||
graph.update();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (FlxG.keys.justPressed.F1)
|
if (FlxG.keys.justPressed.F1)
|
||||||
{
|
{
|
||||||
trace(PlayState.rep.path);
|
trace(PlayState.rep.path);
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package;
|
package;
|
||||||
|
|
||||||
|
import flixel.input.gamepad.FlxGamepad;
|
||||||
import flixel.FlxG;
|
import flixel.FlxG;
|
||||||
import flixel.FlxSprite;
|
import flixel.FlxSprite;
|
||||||
import flixel.addons.transition.FlxTransitionableState;
|
import flixel.addons.transition.FlxTransitionableState;
|
||||||
@ -239,12 +240,44 @@ class StoryMenuState extends MusicBeatState
|
|||||||
{
|
{
|
||||||
if (!selectedWeek)
|
if (!selectedWeek)
|
||||||
{
|
{
|
||||||
if (controls.UP_P)
|
var gamepad:FlxGamepad = FlxG.gamepads.lastActive;
|
||||||
|
|
||||||
|
if (gamepad != null)
|
||||||
|
{
|
||||||
|
if (gamepad.justPressed.DPAD_UP)
|
||||||
|
{
|
||||||
|
changeWeek(-1);
|
||||||
|
}
|
||||||
|
if (gamepad.justPressed.DPAD_DOWN)
|
||||||
|
{
|
||||||
|
changeWeek(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gamepad.pressed.DPAD_RIGHT)
|
||||||
|
rightArrow.animation.play('press')
|
||||||
|
else
|
||||||
|
rightArrow.animation.play('idle');
|
||||||
|
if (gamepad.pressed.DPAD_LEFT)
|
||||||
|
leftArrow.animation.play('press');
|
||||||
|
else
|
||||||
|
leftArrow.animation.play('idle');
|
||||||
|
|
||||||
|
if (gamepad.justPressed.DPAD_RIGHT)
|
||||||
|
{
|
||||||
|
changeDifficulty(1);
|
||||||
|
}
|
||||||
|
if (gamepad.justPressed.DPAD_LEFT)
|
||||||
|
{
|
||||||
|
changeDifficulty(-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (FlxG.keys.justPressed.UP)
|
||||||
{
|
{
|
||||||
changeWeek(-1);
|
changeWeek(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (controls.DOWN_P)
|
if (FlxG.keys.justPressed.DOWN)
|
||||||
{
|
{
|
||||||
changeWeek(1);
|
changeWeek(1);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
package;
|
package;
|
||||||
|
|
||||||
|
#if sys
|
||||||
|
import smTools.SMFile;
|
||||||
|
#end
|
||||||
import flixel.FlxG;
|
import flixel.FlxG;
|
||||||
import flixel.FlxSprite;
|
import flixel.FlxSprite;
|
||||||
import flixel.FlxState;
|
import flixel.FlxState;
|
||||||
@ -77,6 +80,8 @@ class TitleState extends MusicBeatState
|
|||||||
|
|
||||||
curWacky = FlxG.random.getObject(getIntroTextShit());
|
curWacky = FlxG.random.getObject(getIntroTextShit());
|
||||||
|
|
||||||
|
trace('hello');
|
||||||
|
|
||||||
// DEBUG BULLSHIT
|
// DEBUG BULLSHIT
|
||||||
|
|
||||||
super.create();
|
super.create();
|
||||||
@ -92,6 +97,9 @@ class TitleState extends MusicBeatState
|
|||||||
|
|
||||||
KadeEngineData.initSave();
|
KadeEngineData.initSave();
|
||||||
|
|
||||||
|
// var file:SMFile = SMFile.loadFile("file.sm");
|
||||||
|
// this was testing things
|
||||||
|
|
||||||
Highscore.load();
|
Highscore.load();
|
||||||
|
|
||||||
#if FREEPLAY
|
#if FREEPLAY
|
||||||
@ -257,7 +265,7 @@ class TitleState extends MusicBeatState
|
|||||||
FlxG.fullscreen = !FlxG.fullscreen;
|
FlxG.fullscreen = !FlxG.fullscreen;
|
||||||
}
|
}
|
||||||
|
|
||||||
var pressedEnter:Bool = FlxG.keys.justPressed.ENTER;
|
var pressedEnter:Bool = controls.ACCEPT;
|
||||||
|
|
||||||
#if mobile
|
#if mobile
|
||||||
for (touch in FlxG.touches.list)
|
for (touch in FlxG.touches.list)
|
||||||
@ -269,19 +277,6 @@ class TitleState extends MusicBeatState
|
|||||||
}
|
}
|
||||||
#end
|
#end
|
||||||
|
|
||||||
var gamepad:FlxGamepad = FlxG.gamepads.lastActive;
|
|
||||||
|
|
||||||
if (gamepad != null)
|
|
||||||
{
|
|
||||||
if (gamepad.justPressed.START)
|
|
||||||
pressedEnter = true;
|
|
||||||
|
|
||||||
#if switch
|
|
||||||
if (gamepad.justPressed.B)
|
|
||||||
pressedEnter = true;
|
|
||||||
#end
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pressedEnter && !transitioning && skippedIntro)
|
if (pressedEnter && !transitioning && skippedIntro)
|
||||||
{
|
{
|
||||||
#if !switch
|
#if !switch
|
||||||
|
61
source/smTools/SMFile.hx
Normal file
61
source/smTools/SMFile.hx
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
#if sys
|
||||||
|
package smTools;
|
||||||
|
|
||||||
|
import sys.io.File;
|
||||||
|
|
||||||
|
class SMFile
|
||||||
|
{
|
||||||
|
public static function loadFile(path):SMFile
|
||||||
|
{
|
||||||
|
return new SMFile(File.getContent(path).split('\n'));
|
||||||
|
}
|
||||||
|
|
||||||
|
private var _fileData:Array<String>;
|
||||||
|
|
||||||
|
public var _readTime:Float = 0;
|
||||||
|
|
||||||
|
public var header:SMHeader;
|
||||||
|
public var measures:Array<SMMeasure>;
|
||||||
|
|
||||||
|
public function new(data:Array<String>)
|
||||||
|
{
|
||||||
|
_fileData = data;
|
||||||
|
|
||||||
|
// Gather header data
|
||||||
|
var headerData = "";
|
||||||
|
var inc = 0;
|
||||||
|
while(!StringTools.contains(data[inc + 1],"//"))
|
||||||
|
{
|
||||||
|
headerData += data[inc] + "\n";
|
||||||
|
inc++;
|
||||||
|
// trace(data[inc]);
|
||||||
|
}
|
||||||
|
|
||||||
|
header = new SMHeader(headerData.split('\n'));
|
||||||
|
|
||||||
|
// check if this is a valid file, it should be a dance double file.
|
||||||
|
inc += 3; // skip three lines down
|
||||||
|
if (!StringTools.contains(data[inc],"dance-double:"))
|
||||||
|
return;
|
||||||
|
trace('this is dance double');
|
||||||
|
|
||||||
|
inc += 4; // skip 5 down to where da notes @
|
||||||
|
trace(data[inc]);
|
||||||
|
|
||||||
|
measures = [];
|
||||||
|
|
||||||
|
while(data[inc + 1] != ";")
|
||||||
|
{
|
||||||
|
var measure = "";
|
||||||
|
while(data[inc + 1] != ",")
|
||||||
|
{
|
||||||
|
inc++;
|
||||||
|
var line = data[inc];
|
||||||
|
measure += line + "\n";
|
||||||
|
}
|
||||||
|
measures.push(new SMMeasure(measure.split('\n')));
|
||||||
|
}
|
||||||
|
trace(measures.length + " Measures");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#end
|
39
source/smTools/SMHeader.hx
Normal file
39
source/smTools/SMHeader.hx
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
#if sys
|
||||||
|
package smTools;
|
||||||
|
|
||||||
|
class SMHeader
|
||||||
|
{
|
||||||
|
private var _header:Array<String>;
|
||||||
|
|
||||||
|
public var TITLE = "";
|
||||||
|
public var SUBTITLE = "";
|
||||||
|
public var ARTIST = "";
|
||||||
|
public var GENRE = "";
|
||||||
|
public var CREDIT = "";
|
||||||
|
public var MUSIC = "";
|
||||||
|
public var BANNER = "";
|
||||||
|
public var BACKGROUND = "";
|
||||||
|
public var CDTITLE = "";
|
||||||
|
public var OFFSET = "";
|
||||||
|
public var BPMS = "";
|
||||||
|
|
||||||
|
public function new(headerData:Array<String>)
|
||||||
|
{
|
||||||
|
_header = headerData;
|
||||||
|
for (i in headerData)
|
||||||
|
readHeaderLine(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
function readHeaderLine(line:String)
|
||||||
|
{
|
||||||
|
var propName = line.split('#')[1].split(':')[0];
|
||||||
|
var value = line.split(':')[1].split(';')[0];
|
||||||
|
var prop = Reflect.getProperty(this,propName);
|
||||||
|
|
||||||
|
if (prop != null)
|
||||||
|
{
|
||||||
|
Reflect.setProperty(this,propName,value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#end
|
16
source/smTools/SMMeasure.hx
Normal file
16
source/smTools/SMMeasure.hx
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#if sys
|
||||||
|
package smTools;
|
||||||
|
|
||||||
|
class SMMeasure
|
||||||
|
{
|
||||||
|
public var notes:Array<SMNote>;
|
||||||
|
|
||||||
|
private var _measure:Array<String>;
|
||||||
|
|
||||||
|
public function new(measureData:Array<String>)
|
||||||
|
{
|
||||||
|
_measure = measureData;
|
||||||
|
notes = [];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#end
|
10
source/smTools/SMNote.hx
Normal file
10
source/smTools/SMNote.hx
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#if sys
|
||||||
|
package smTools;
|
||||||
|
|
||||||
|
class SMNote
|
||||||
|
{
|
||||||
|
public var time:Float;
|
||||||
|
public var data:Int;
|
||||||
|
public var length:Float;
|
||||||
|
}
|
||||||
|
#end
|
@ -1,6 +1,3 @@
|
|||||||
1.5.3;
|
1.5.4;
|
||||||
- Score Screen
|
- Controller Support
|
||||||
- Rewrote the entire hit ranking system
|
- Fixed Input Drops/Disappering Notes
|
||||||
- Fixed song names so they don't crash
|
|
||||||
- New asset loading system
|
|
||||||
- New Logo
|
|
Loading…
x
Reference in New Issue
Block a user