Merge pull request #1750 from KadeDev/master

Master
This commit is contained in:
Kade M 2021-08-14 13:54:07 -07:00 committed by GitHub
commit f20ed9c7e9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
50 changed files with 1905 additions and 782 deletions

View File

@ -127,7 +127,7 @@
<haxelib name="faxe" if='switch'/> <haxelib name="faxe" if='switch'/>
<haxelib name="polymod"/> <haxelib name="polymod"/>
<haxelib name="discord_rpc" if="windows"/> <haxelib name="discord_rpc" if="windows"/>
<haxelib name="linc_luajit" if="windows"/> <haxelib name="linc_luajit"/>
<!-- <haxelib name="hxcpp-debug-server" if="desktop"/> --> <!-- <haxelib name="hxcpp-debug-server" if="desktop"/> -->

Binary file not shown.

View File

@ -1,3 +1,3 @@
:dad:Not bad for an ugly worm. :dad:Not bad for an ugly worm.
:dad:But this time I'll rip your nuts off right after your girlfriend finishes gargling mine. :dad:But this time I'll rip your nuts off right after your girlfriend finishes gargling mine.
:bf:Bop beep be be skdoo bep :bf:Bop beep be be skdoo bep

View File

@ -1,3 +1,3 @@
:dad:Ah, a new fair maiden has come in search of true love! :dad:Ah, a new fair maiden has come in search of true love!
:dad:A serenade between gentlemen shall decide where her beautiful heart shall reside. :dad:A serenade between gentlemen shall decide where her beautiful heart shall reside.
:bf:Beep bo bop :bf:Beep bo bop

View File

@ -1,5 +1,5 @@
:dad:Direct contact with real humans, after being trapped in here for so long... :dad:Direct contact with real humans, after being trapped in here for so long...
:dad:and HER of all people. :dad:and HER of all people.
:dad:I'll make her father pay for what he's done to me and all the others,,,, :dad:I'll make her father pay for what he's done to me and all the others,,,,
:dad:I'll beat you and make you take my place. :dad:I'll beat you and make you take my place.
:dad:You don't mind your bodies being borrowed right? It's only fair... :dad:You don't mind your bodies being borrowed right? It's only fair...

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 1.2 MiB

View File

@ -1,50 +1,129 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<TextureAtlas imagePath="DADDY_DEAREST.png"> <TextureAtlas imagePath="DADDY_DEAREST.png">
<!-- Created with Adobe Animate version 20.0.0.17400 --> <!-- Created with Adobe Animate version 21.0.1.37179 -->
<!-- http://www.adobe.com/products/animate.html --> <!-- http://www.adobe.com/products/animate.html -->
<SubTexture name="Dad Sing Note DOWN0000" x="1369" y="0" width="470" height="730" frameX="0" frameY="-5" frameWidth="470" frameHeight="735"/> <SubTexture name="Dad Sing Note DOWN0000" x="1409" y="10" width="470" height="730" pivotX="3.7" pivotY="69.7" frameX="0" frameY="-5" frameWidth="470" frameHeight="735"/>
<SubTexture name="Dad Sing Note DOWN0001" x="1369" y="0" width="470" height="730" frameX="0" frameY="-5" frameWidth="470" frameHeight="735"/> <SubTexture name="Dad Sing Note DOWN0001" x="1409" y="10" width="470" height="730" frameX="0" frameY="-5" frameWidth="470" frameHeight="735"/>
<SubTexture name="Dad Sing Note DOWN0002" x="1839" y="0" width="462" height="735" frameX="-4" frameY="0" frameWidth="470" frameHeight="735"/> <SubTexture name="Dad Sing Note DOWN0002" x="1889" y="10" width="463" height="735" frameX="-3" frameY="0" frameWidth="470" frameHeight="735"/>
<SubTexture name="Dad Sing Note DOWN0003" x="1839" y="0" width="462" height="735" frameX="-4" frameY="0" frameWidth="470" frameHeight="735"/> <SubTexture name="Dad Sing Note DOWN0003" x="1889" y="10" width="463" height="735" frameX="-3" frameY="0" frameWidth="470" frameHeight="735"/>
<SubTexture name="Dad Sing Note DOWN0004" x="1839" y="0" width="462" height="735" frameX="-4" frameY="0" frameWidth="470" frameHeight="735"/> <SubTexture name="Dad Sing Note DOWN0004" x="1889" y="10" width="463" height="735" frameX="-3" frameY="0" frameWidth="470" frameHeight="735"/>
<SubTexture name="Dad Sing Note DOWN0005" x="1839" y="0" width="462" height="735" frameX="-4" frameY="0" frameWidth="470" frameHeight="735"/> <SubTexture name="Dad Sing Note DOWN0005" x="1889" y="10" width="463" height="735" frameX="-3" frameY="0" frameWidth="470" frameHeight="735"/>
<SubTexture name="Dad Sing Note DOWN0006" x="1839" y="0" width="462" height="735" frameX="-4" frameY="0" frameWidth="470" frameHeight="735"/> <SubTexture name="Dad Sing Note DOWN0006" x="1889" y="10" width="463" height="735" frameX="-3" frameY="0" frameWidth="470" frameHeight="735"/>
<SubTexture name="Dad Sing Note LEFT0000" x="843" y="793" width="370" height="777"/> <SubTexture name="Dad Sing Note DOWN0007" x="1889" y="10" width="463" height="735" frameX="-3" frameY="0" frameWidth="470" frameHeight="735"/>
<SubTexture name="Dad Sing Note RIGHT0000" x="0" y="0" width="465" height="792" frameX="0" frameY="-1" frameWidth="465" frameHeight="793"/> <SubTexture name="Dad Sing Note DOWN0008" x="1889" y="10" width="463" height="735" frameX="-3" frameY="0" frameWidth="470" frameHeight="735"/>
<SubTexture name="Dad Sing Note RIGHT0001" x="0" y="0" width="465" height="792" frameX="0" frameY="-1" frameWidth="465" frameHeight="793"/> <SubTexture name="Dad Sing Note DOWN0009" x="1889" y="10" width="463" height="735" frameX="-3" frameY="0" frameWidth="470" frameHeight="735"/>
<SubTexture name="Dad Sing Note RIGHT0002" x="465" y="0" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/> <SubTexture name="Dad Sing Note DOWN0010" x="1889" y="10" width="463" height="735" frameX="-3" frameY="0" frameWidth="470" frameHeight="735"/>
<SubTexture name="Dad Sing Note RIGHT0003" x="465" y="0" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/> <SubTexture name="Dad Sing Note DOWN0011" x="1889" y="10" width="463" height="735" frameX="-3" frameY="0" frameWidth="470" frameHeight="735"/>
<SubTexture name="Dad Sing Note RIGHT0004" x="917" y="0" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/> <SubTexture name="Dad Sing Note DOWN0012" x="1889" y="10" width="463" height="735" frameX="-3" frameY="0" frameWidth="470" frameHeight="735"/>
<SubTexture name="Dad Sing Note RIGHT0005" x="917" y="0" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/> <SubTexture name="Dad Sing Note DOWN0013" x="1889" y="10" width="463" height="735" frameX="-3" frameY="0" frameWidth="470" frameHeight="735"/>
<SubTexture name="Dad Sing Note RIGHT0006" x="465" y="0" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/> <SubTexture name="Dad Sing Note DOWN0014" x="1889" y="10" width="463" height="735" frameX="-3" frameY="0" frameWidth="470" frameHeight="735"/>
<SubTexture name="Dad Sing Note RIGHT0007" x="465" y="0" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/> <SubTexture name="Dad Sing Note DOWN0015" x="1889" y="10" width="463" height="735" frameX="-3" frameY="0" frameWidth="470" frameHeight="735"/>
<SubTexture name="Dad Sing Note RIGHT0008" x="917" y="0" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/> <SubTexture name="Dad Sing Note LEFT0000" x="3173" y="829" width="371" height="777" pivotX="-46.5" pivotY="76.45" frameX="0" frameY="0" frameWidth="383" frameHeight="777"/>
<SubTexture name="Dad Sing Note RIGHT0009" x="917" y="0" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/> <SubTexture name="Dad Sing Note LEFT0001" x="3173" y="829" width="371" height="777" frameX="0" frameY="0" frameWidth="383" frameHeight="777"/>
<SubTexture name="Dad Sing Note RIGHT0010" x="465" y="0" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/> <SubTexture name="Dad Sing Note LEFT0002" x="873" y="813" width="383" height="777"/>
<SubTexture name="Dad Sing Note RIGHT0011" x="465" y="0" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/> <SubTexture name="Dad Sing Note LEFT0003" x="873" y="813" width="383" height="777"/>
<SubTexture name="Dad Sing Note RIGHT0012" x="917" y="0" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/> <SubTexture name="Dad Sing Note LEFT0004" x="2780" y="829" width="383" height="777"/>
<SubTexture name="Dad Sing Note RIGHT0013" x="917" y="0" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/> <SubTexture name="Dad Sing Note LEFT0005" x="2780" y="829" width="383" height="777"/>
<SubTexture name="Dad Sing Note RIGHT0014" x="465" y="0" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/> <SubTexture name="Dad Sing Note LEFT0006" x="873" y="813" width="383" height="777"/>
<SubTexture name="Dad Sing Note RIGHT0015" x="465" y="0" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/> <SubTexture name="Dad Sing Note LEFT0007" x="873" y="813" width="383" height="777"/>
<SubTexture name="Dad Sing Note RIGHT0016" x="917" y="0" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/> <SubTexture name="Dad Sing Note LEFT0008" x="2780" y="829" width="383" height="777"/>
<SubTexture name="Dad Sing Note RIGHT0017" x="917" y="0" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/> <SubTexture name="Dad Sing Note LEFT0009" x="2780" y="829" width="383" height="777"/>
<SubTexture name="Dad Sing Note RIGHT0018" x="465" y="0" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/> <SubTexture name="Dad Sing Note LEFT0010" x="873" y="813" width="383" height="777"/>
<SubTexture name="Dad Sing Note UP0000" x="2301" y="0" width="408" height="818" frameX="-1" frameY="0" frameWidth="409" frameHeight="818"/> <SubTexture name="Dad Sing Note LEFT0011" x="873" y="813" width="383" height="777"/>
<SubTexture name="Dad Sing Note UP0001" x="2301" y="0" width="408" height="818" frameX="-1" frameY="0" frameWidth="409" frameHeight="818"/> <SubTexture name="Dad Sing Note LEFT0012" x="2780" y="829" width="383" height="777"/>
<SubTexture name="Dad Sing Note UP0002" x="2709" y="0" width="408" height="810" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/> <SubTexture name="Dad Sing Note LEFT0013" x="2780" y="829" width="383" height="777"/>
<SubTexture name="Dad Sing Note UP0003" x="2709" y="0" width="408" height="810" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/> <SubTexture name="Dad Sing Note LEFT0014" x="873" y="813" width="383" height="777"/>
<SubTexture name="Dad Sing Note UP0004" x="3117" y="0" width="408" height="810" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/> <SubTexture name="Dad Sing Note LEFT0015" x="873" y="813" width="383" height="777"/>
<SubTexture name="Dad idle dance0000" x="1369" y="730" width="419" height="767" frameX="-6" frameY="0" frameWidth="429" frameHeight="767"/> <SubTexture name="Dad Sing Note RIGHT0000" x="10" y="10" width="465" height="792" pivotX="0.45" pivotY="111.35" frameX="0" frameY="-1" frameWidth="465" frameHeight="793"/>
<SubTexture name="Dad idle dance0001" x="1369" y="730" width="419" height="767" frameX="-6" frameY="0" frameWidth="429" frameHeight="767"/> <SubTexture name="Dad Sing Note RIGHT0001" x="10" y="10" width="465" height="792" frameX="0" frameY="-1" frameWidth="465" frameHeight="793"/>
<SubTexture name="Dad idle dance0002" x="3525" y="0" width="429" height="759" frameX="0" frameY="-8" frameWidth="429" frameHeight="767"/> <SubTexture name="Dad Sing Note RIGHT0002" x="485" y="10" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/>
<SubTexture name="Dad idle dance0003" x="3525" y="0" width="429" height="759" frameX="0" frameY="-8" frameWidth="429" frameHeight="767"/> <SubTexture name="Dad Sing Note RIGHT0003" x="485" y="10" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/>
<SubTexture name="Dad idle dance0004" x="0" y="792" width="424" height="757" frameX="-2" frameY="-10" frameWidth="429" frameHeight="767"/> <SubTexture name="Dad Sing Note RIGHT0004" x="947" y="10" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/>
<SubTexture name="Dad idle dance0005" x="0" y="792" width="424" height="757" frameX="-2" frameY="-10" frameWidth="429" frameHeight="767"/> <SubTexture name="Dad Sing Note RIGHT0005" x="947" y="10" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/>
<SubTexture name="Dad idle dance0006" x="3525" y="759" width="423" height="759" frameX="-3" frameY="-8" frameWidth="429" frameHeight="767"/> <SubTexture name="Dad Sing Note RIGHT0006" x="485" y="10" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/>
<SubTexture name="Dad idle dance0007" x="3525" y="759" width="423" height="759" frameX="-3" frameY="-8" frameWidth="429" frameHeight="767"/> <SubTexture name="Dad Sing Note RIGHT0007" x="485" y="10" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/>
<SubTexture name="Dad idle dance0008" x="424" y="793" width="419" height="766" frameX="-5" frameY="-1" frameWidth="429" frameHeight="767"/> <SubTexture name="Dad Sing Note RIGHT0008" x="947" y="10" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/>
<SubTexture name="Dad idle dance0009" x="424" y="793" width="419" height="766" frameX="-5" frameY="-1" frameWidth="429" frameHeight="767"/> <SubTexture name="Dad Sing Note RIGHT0009" x="947" y="10" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/>
<SubTexture name="Dad idle dance0010" x="1788" y="735" width="419" height="767" frameX="-6" frameY="0" frameWidth="429" frameHeight="767"/> <SubTexture name="Dad Sing Note RIGHT0010" x="485" y="10" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/>
<SubTexture name="Dad idle dance0011" x="1788" y="735" width="419" height="767" frameX="-6" frameY="0" frameWidth="429" frameHeight="767"/> <SubTexture name="Dad Sing Note RIGHT0011" x="485" y="10" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/>
<SubTexture name="Dad idle dance0012" x="1369" y="730" width="419" height="767" frameX="-6" frameY="0" frameWidth="429" frameHeight="767"/> <SubTexture name="Dad Sing Note RIGHT0012" x="947" y="10" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/>
<SubTexture name="Dad Sing Note RIGHT0013" x="947" y="10" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/>
<SubTexture name="Dad Sing Note RIGHT0014" x="485" y="10" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/>
<SubTexture name="Dad Sing Note RIGHT0015" x="485" y="10" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/>
<SubTexture name="Dad Sing Note RIGHT0016" x="947" y="10" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/>
<SubTexture name="Dad Sing Note RIGHT0017" x="947" y="10" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/>
<SubTexture name="Dad Sing Note RIGHT0018" x="485" y="10" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/>
<SubTexture name="Dad Sing Note UP0000" x="2362" y="10" width="408" height="818" pivotX="373.3" pivotY="597.65" frameX="-1" frameY="0" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0001" x="2362" y="10" width="408" height="818" frameX="-1" frameY="0" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0002" x="2780" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0003" x="2780" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0004" x="3198" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0005" x="3198" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0006" x="2780" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0007" x="2780" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0008" x="3198" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0009" x="3198" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0010" x="2780" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0011" x="2780" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0012" x="3198" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0013" x="3198" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0014" x="2780" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0015" x="2780" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0016" x="3198" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0017" x="3198" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0018" x="2780" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0019" x="2780" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0020" x="3198" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0021" x="3198" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0022" x="2780" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0023" x="2780" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0024" x="3198" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0025" x="3198" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0026" x="2780" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0027" x="2780" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0028" x="3198" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0029" x="3198" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0030" x="2780" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0031" x="2780" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0032" x="3198" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0033" x="3198" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0034" x="2780" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0035" x="2780" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0036" x="3198" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0037" x="3198" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0038" x="2780" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0039" x="2780" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0040" x="3198" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0041" x="3198" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0042" x="2780" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0043" x="2780" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0044" x="3198" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0045" x="3198" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0046" x="2780" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0047" x="2780" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0048" x="3198" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0049" x="3198" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0050" x="2780" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0051" x="2780" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0052" x="3198" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0053" x="3198" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0054" x="2780" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0055" x="2780" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0056" x="3198" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0057" x="3198" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0058" x="2780" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad Sing Note UP0059" x="2780" y="10" width="408" height="809" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
<SubTexture name="Dad idle dance0000" x="1409" y="750" width="419" height="767" pivotX="382" pivotY="547.15" frameX="-6" frameY="0" frameWidth="429" frameHeight="767"/>
<SubTexture name="Dad idle dance0001" x="1409" y="750" width="419" height="767" frameX="-6" frameY="0" frameWidth="429" frameHeight="767"/>
<SubTexture name="Dad idle dance0002" x="3616" y="10" width="429" height="759" frameX="0" frameY="-8" frameWidth="429" frameHeight="767"/>
<SubTexture name="Dad idle dance0003" x="3616" y="10" width="429" height="759" frameX="0" frameY="-8" frameWidth="429" frameHeight="767"/>
<SubTexture name="Dad idle dance0004" x="10" y="812" width="424" height="757" frameX="-2" frameY="-10" frameWidth="429" frameHeight="767"/>
<SubTexture name="Dad idle dance0005" x="10" y="812" width="424" height="757" frameX="-2" frameY="-10" frameWidth="429" frameHeight="767"/>
<SubTexture name="Dad idle dance0006" x="3616" y="779" width="423" height="759" frameX="-3" frameY="-8" frameWidth="429" frameHeight="767"/>
<SubTexture name="Dad idle dance0007" x="3616" y="779" width="423" height="759" frameX="-3" frameY="-8" frameWidth="429" frameHeight="767"/>
<SubTexture name="Dad idle dance0008" x="444" y="813" width="419" height="766" frameX="-5" frameY="-1" frameWidth="429" frameHeight="767"/>
<SubTexture name="Dad idle dance0009" x="444" y="813" width="419" height="766" frameX="-5" frameY="-1" frameWidth="429" frameHeight="767"/>
<SubTexture name="Dad idle dance0010" x="1838" y="755" width="419" height="767" frameX="-6" frameY="0" frameWidth="429" frameHeight="767"/>
<SubTexture name="Dad idle dance0011" x="1838" y="755" width="419" height="767" frameX="-6" frameY="0" frameWidth="429" frameHeight="767"/>
<SubTexture name="Dad idle dance0012" x="1409" y="750" width="419" height="767" frameX="-6" frameY="0" frameWidth="429" frameHeight="767"/>
</TextureAtlas> </TextureAtlas>

View File

@ -24,7 +24,7 @@
- `haxelib install flixel-ui` - `haxelib install flixel-ui`
- `haxelib install hscript` - `haxelib install hscript`
- `haxelib install newgrounds` - `haxelib install newgrounds`
- `haxelib install linc_luajit` - `haxelib git linc_luajit https://github.com/AndreiRudenko/linc_luajit.git`
- `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`

View File

@ -0,0 +1,29 @@
# Latest (master) changelog/Changelog
Changes marked with 💖 will be listed in the short version of the changelog in `version.downloadMe`.
### Additions
- Added a Instant Respawn Option
- 💖 Added the ability to select and modify notes in the editor
- Added the ability for note specific alternative animation toggles
- 💖 Added copy and paste (with ctrl z support) while selecting notes
- Added 12th and 24th snaps
### Changes
- Play Here option changed for the better
- Changed left or right in the charter to skip forward or backward a section
- 💖 Optimized gameplay (less lag??)
- 💖 Optimized the chart editor (less lag on longer songs, and faster load times)
- Gameplay Customization now allows for you to change the zoom of the play field
- SM Files now give you more details on why they can't be loaded.
### Bugfixes
- 💖 Fixed stutter at the start of a song
- Fixed a bunch of week 6 crashing related issues
- Fixed tutorial crashing on story mode
- Fixed notes in an SM file desyncing with sections
- 💖 Fixed scroll speed changes so they work when more then one of them exist
- Fixed steps reseting to 0 on a bpm change IN gameplay
- Fixed claps so they're based on time instead of the note's y position
- Swap Section no longer breaks with duets
- 💖 Modcharts now work on Linux!

View File

@ -1,6 +1,7 @@
# Changelogs # Changelogs
- [Latest](latest) (Contains changes that are not in a release yet) - [Latest](latest) (Contains changes that are not in a release yet)
- [1.6.2](changelog-1.6.2)
- [1.6.1](changelog-1.6.1) - [1.6.1](changelog-1.6.1)
- [1.6](changelog-1.6) - [1.6](changelog-1.6)
- [1.5.4](changelog-1.5.4) - [1.5.4](changelog-1.5.4)

View File

@ -1,5 +1,6 @@
package; package;
import flixel.math.FlxPoint;
import flixel.tweens.FlxEase; import flixel.tweens.FlxEase;
import flixel.tweens.FlxTween; import flixel.tweens.FlxTween;
import flixel.FlxG; import flixel.FlxG;
@ -47,11 +48,20 @@ class Alphabet extends FlxSpriteGroup
var pastX:Float = 0; var pastX:Float = 0;
var pastY:Float = 0; var pastY:Float = 0;
public function new(x:Float, y:Float, text:String = "", ?bold:Bool = false, typed:Bool = false, shouldMove:Bool = false) // ThatGuy: Variables here to be used later
var xScale:Float;
var yScale:Float;
// ThatGuy: Added 2 more variables, xScale and yScale for resizing text
public function new(x:Float, y:Float, text:String = "", ?bold:Bool = false, typed:Bool = false, shouldMove:Bool = false, xScale:Float = 1, yScale:Float = 1)
{ {
pastX = x; pastX = x;
pastY = y; pastY = y;
// ThatGuy: Have to assign these variables
this.xScale = xScale;
this.yScale = yScale;
super(x, y); super(x, y);
_finalText = text; _finalText = text;
@ -72,7 +82,7 @@ class Alphabet extends FlxSpriteGroup
} }
} }
public function reType(text) public function reType(text, xScale:Float = 1, yScale:Float = 1)
{ {
for (i in listOAlphabets) for (i in listOAlphabets)
remove(i); remove(i);
@ -86,6 +96,9 @@ class Alphabet extends FlxSpriteGroup
listOAlphabets.clear(); listOAlphabets.clear();
x = pastX; x = pastX;
y = pastY; y = pastY;
this.xScale = xScale;
this.yScale = yScale;
addText(); addText();
} }
@ -111,17 +124,24 @@ class Alphabet extends FlxSpriteGroup
{ {
if (lastSprite != null) if (lastSprite != null)
{ {
xPos = lastSprite.x + lastSprite.width; // ThatGuy: This is the line that fixes the spacing error when the x position of this class's objects was anything other than 0
xPos = lastSprite.x - pastX + lastSprite.width;
} }
if (lastWasSpace) if (lastWasSpace)
{ {
xPos += 40; // ThatGuy: Also this line
xPos += 40 * xScale;
lastWasSpace = false; lastWasSpace = false;
} }
// var letter:AlphaCharacter = new AlphaCharacter(30 * loopNum, 0); // var letter:AlphaCharacter = new AlphaCharacter(30 * loopNum, 0);
var letter:AlphaCharacter = new AlphaCharacter(xPos, 0); var letter:AlphaCharacter = new AlphaCharacter(xPos, 0);
// ThatGuy: These are the lines that change the individual scaling of each character
letter.scale.set(xScale, yScale);
letter.updateHitbox();
listOAlphabets.add(letter); listOAlphabets.add(letter);
if (isBold) if (isBold)
@ -147,6 +167,7 @@ class Alphabet extends FlxSpriteGroup
public var personTalking:String = 'gf'; public var personTalking:String = 'gf';
// ThatGuy: THIS FUNCTION ISNT CHANGED! Because i dont use it lol
public function startTypedText():Void public function startTypedText():Void
{ {
_finalText = text; _finalText = text;
@ -261,6 +282,36 @@ class Alphabet extends FlxSpriteGroup
super.update(elapsed); super.update(elapsed);
} }
// ThatGuy: Ooga booga function for resizing text, with the option of wanting it to have the same midPoint
// Side note: Do not, EVER, do updateHitbox() unless you are retyping the whole thing. Don't know why, but the position gets retarded if you do that
public function resizeText(xScale:Float, yScale:Float, xStaysCentered:Bool = true, yStaysCentered:Bool = false):Void {
var oldMidpoint:FlxPoint = this.getMidpoint();
reType(text, xScale, yScale);
if(!(xStaysCentered && yStaysCentered)){
if(xStaysCentered) {
//I can just use this juicy new function i made
moveTextToMidpoint(new FlxPoint(oldMidpoint.x, getMidpoint().y));
}
if(yStaysCentered) {
moveTextToMidpoint(new FlxPoint(getMidpoint().x, oldMidpoint.y));
}
} else {
moveTextToMidpoint(new FlxPoint(oldMidpoint.x, oldMidpoint.y));
}
}
// ThatGuy: Function used to keep text centered on one point instead of manually having to come up with offsets for each sentence
public function moveTextToMidpoint(midpoint:FlxPoint):Void {
/*
e.g. You want your midpoint at (100, 100)
and your text is 200 wide, 50 tall
then, x = 100 - 200/2, y = 100 - 50/2
*/
this.x = midpoint.x - this.width / 2;
this.y = midpoint.y - this.height / 2;
}
} }
class AlphaCharacter extends FlxSprite class AlphaCharacter extends FlxSprite

View File

@ -14,10 +14,7 @@ class BackgroundDancer extends FlxSprite
animation.addByIndices('danceLeft', 'bg dancer sketch PINK', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "", 24, false); animation.addByIndices('danceLeft', 'bg dancer sketch PINK', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "", 24, false);
animation.addByIndices('danceRight', 'bg dancer sketch PINK', [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "", 24, false); animation.addByIndices('danceRight', 'bg dancer sketch PINK', [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "", 24, false);
animation.play('danceLeft'); animation.play('danceLeft');
if(FlxG.save.data.antialiasing) antialiasing = FlxG.save.data.antialiasing;
{
antialiasing = true;
}
} }
var danceDir:Bool = false; var danceDir:Bool = false;

View File

@ -73,10 +73,15 @@ class Caching extends MusicBeatState
text.y -= kadeLogo.height / 2 - 125; text.y -= kadeLogo.height / 2 - 125;
text.x -= 170; text.x -= 170;
kadeLogo.setGraphicSize(Std.int(kadeLogo.width * 0.6)); kadeLogo.setGraphicSize(Std.int(kadeLogo.width * 0.6));
kadeLogo.antialiasing = true; if(FlxG.save.data.antialiasing != null)
kadeLogo.antialiasing = FlxG.save.data.antialiasing;
else
kadeLogo.antialiasing = true;
kadeLogo.alpha = 0; kadeLogo.alpha = 0;
FlxGraphic.defaultPersist = FlxG.save.data.cacheImages;
#if cpp #if cpp
if (FlxG.save.data.cacheImages) if (FlxG.save.data.cacheImages)
{ {

View File

@ -26,10 +26,7 @@ class Character extends FlxSprite
this.isPlayer = isPlayer; this.isPlayer = isPlayer;
var tex:FlxAtlasFrames; var tex:FlxAtlasFrames;
if(FlxG.save.data.antialiasing) antialiasing = FlxG.save.data.antialiasing;
{
antialiasing = true;
}
switch (curCharacter) switch (curCharacter)
{ {
@ -103,11 +100,11 @@ class Character extends FlxSprite
// DAD ANIMATION LOADING CODE // DAD ANIMATION LOADING CODE
tex = Paths.getSparrowAtlas('DADDY_DEAREST','shared',true); tex = Paths.getSparrowAtlas('DADDY_DEAREST','shared',true);
frames = tex; frames = tex;
animation.addByPrefix('idle', 'Dad idle dance', 24); animation.addByPrefix('idle', 'Dad idle dance', 24, false);
animation.addByPrefix('singUP', 'Dad Sing Note UP', 24); animation.addByPrefix('singUP', 'Dad Sing Note UP', 24, false);
animation.addByPrefix('singRIGHT', 'Dad Sing Note RIGHT', 24); animation.addByPrefix('singRIGHT', 'Dad Sing Note RIGHT', 24, false);
animation.addByPrefix('singDOWN', 'Dad Sing Note DOWN', 24); animation.addByPrefix('singDOWN', 'Dad Sing Note DOWN', 24, false);
animation.addByPrefix('singLEFT', 'Dad Sing Note LEFT', 24); animation.addByPrefix('singLEFT', 'Dad Sing Note LEFT', 24, false);
loadOffsetFile(curCharacter); loadOffsetFile(curCharacter);
@ -181,7 +178,7 @@ class Character extends FlxSprite
case 'pico': case 'pico':
tex = Paths.getSparrowAtlas('Pico_FNF_assetss','shared',true); tex = Paths.getSparrowAtlas('Pico_FNF_assetss','shared',true);
frames = tex; frames = tex;
animation.addByPrefix('idle', "Pico Idle Dance", 24); animation.addByPrefix('idle', "Pico Idle Dance", 24, false);
animation.addByPrefix('singUP', 'pico Up note0', 24, false); animation.addByPrefix('singUP', 'pico Up note0', 24, false);
animation.addByPrefix('singDOWN', 'Pico Down Note0', 24, false); animation.addByPrefix('singDOWN', 'Pico Down Note0', 24, false);
if (isPlayer) if (isPlayer)
@ -348,7 +345,7 @@ class Character extends FlxSprite
antialiasing = false; antialiasing = false;
case 'spirit': case 'spirit':
frames = Paths.getPackerAtlas('spirit','shared',false); frames = Paths.getPackerAtlas('spirit','shared',true);
animation.addByPrefix('idle', "idle spirit_", 24, false); animation.addByPrefix('idle', "idle spirit_", 24, false);
animation.addByPrefix('singUP', "up_", 24, false); animation.addByPrefix('singUP', "up_", 24, false);
animation.addByPrefix('singRIGHT', "right_", 24, false); animation.addByPrefix('singRIGHT', "right_", 24, false);
@ -455,7 +452,7 @@ class Character extends FlxSprite
/** /**
* FOR GF DANCING SHIT * FOR GF DANCING SHIT
*/ */
public function dance(forced:Bool = false) public function dance(forced:Bool = false, altAnim:Bool = false)
{ {
if (!debugMode) if (!debugMode)
{ {
@ -479,13 +476,25 @@ class Character extends FlxSprite
else else
playAnim('danceLeft'); playAnim('danceLeft');
default: default:
playAnim('idle', forced); if (altAnim && animation.getByName('idle-alt') != null)
playAnim('idle-alt', forced);
else
playAnim('idle', forced);
} }
} }
} }
public function playAnim(AnimName:String, Force:Bool = false, Reversed:Bool = false, Frame:Int = 0):Void public function playAnim(AnimName:String, Force:Bool = false, Reversed:Bool = false, Frame:Int = 0):Void
{ {
if (AnimName.endsWith('alt') && animation.getByName(AnimName) == null)
{
#if debug
FlxG.log.warn(['Such alt animation doesnt exist: ' + AnimName]);
#end
AnimName = AnimName.split('-')[0];
}
animation.play(AnimName, Force, Reversed, Frame); animation.play(AnimName, Force, Reversed, Frame);
var daOffset = animOffsets.get(AnimName); var daOffset = animOffsets.get(AnimName);

17
source/ChartingBox.hx Normal file
View File

@ -0,0 +1,17 @@
import flixel.util.FlxColor;
import flixel.FlxSprite;
class ChartingBox extends FlxSprite
{
public var connectedNote:Note;
public var connectedNoteData:Array<Dynamic>;
public function new(x,y, originalNote:Note)
{
super(x,y);
connectedNote = originalNote;
makeGraphic(40,40,FlxColor.fromRGB(173, 216, 230));
alpha = 0.4;
}
}

File diff suppressed because it is too large Load Diff

View File

@ -89,10 +89,7 @@ class DiffOverview extends FlxSubState
babyArrow.animation.addByPrefix('blue', 'arrowDOWN'); babyArrow.animation.addByPrefix('blue', 'arrowDOWN');
babyArrow.animation.addByPrefix('purple', 'arrowLEFT'); babyArrow.animation.addByPrefix('purple', 'arrowLEFT');
babyArrow.animation.addByPrefix('red', 'arrowRIGHT'); babyArrow.animation.addByPrefix('red', 'arrowRIGHT');
if(FlxG.save.data.antialiasing) babyArrow.antialiasing = FlxG.save.data.antialiasing;
{
babyArrow.antialiasing = true;
}
babyArrow.setGraphicSize(Std.int(babyArrow.width * 0.7)); babyArrow.setGraphicSize(Std.int(babyArrow.width * 0.7));
switch (Math.abs(i)) switch (Math.abs(i))

View File

@ -67,6 +67,7 @@ class FreeplayState extends MusicBeatState
override function create() override function create()
{ {
clean();
var initSonglist = CoolUtil.coolTextFile(Paths.txt('data/freeplaySonglist')); var initSonglist = CoolUtil.coolTextFile(Paths.txt('data/freeplaySonglist'));
//var diffList = ""; //var diffList = "";
@ -179,10 +180,7 @@ class FreeplayState extends MusicBeatState
// LOAD CHARACTERS // LOAD CHARACTERS
var bg:FlxSprite = new FlxSprite().loadGraphic(Paths.image('menuBGBlue')); var bg:FlxSprite = new FlxSprite().loadGraphic(Paths.image('menuBGBlue'));
if(FlxG.save.data.antialiasing) bg.antialiasing = FlxG.save.data.antialiasing;
{
bg.antialiasing = true;
}
add(bg); add(bg);
grpSongs = new FlxTypedGroup<Alphabet>(); grpSongs = new FlxTypedGroup<Alphabet>();
@ -382,7 +380,8 @@ class FreeplayState extends MusicBeatState
} }
PlayState.SONG = hmm;
PlayState.SONG = Song.conversionChecks(hmm);
PlayState.isStoryMode = false; PlayState.isStoryMode = false;
PlayState.storyDifficulty = curDifficulty; PlayState.storyDifficulty = curDifficulty;
PlayState.storyWeek = songs[curSelected].week; PlayState.storyWeek = songs[curSelected].week;
@ -400,6 +399,7 @@ class FreeplayState extends MusicBeatState
PlayState.isSM = false; PlayState.isSM = false;
#end #end
LoadingState.loadAndSwitchState(new PlayState()); LoadingState.loadAndSwitchState(new PlayState());
clean();
} }
} }
@ -479,6 +479,7 @@ class FreeplayState extends MusicBeatState
#end #end
diffCalcText.text = 'RATING: ${DiffCalc.CalculateDiff(songData.get(songs[curSelected].songName)[curDifficulty])}'; diffCalcText.text = 'RATING: ${DiffCalc.CalculateDiff(songData.get(songs[curSelected].songName)[curDifficulty])}';
diffText.text = CoolUtil.difficultyFromInt(curDifficulty).toUpperCase();
#if PRELOAD_ALL #if PRELOAD_ALL
if (songs[curSelected].songCharacter == "sm") if (songs[curSelected].songCharacter == "sm")

View File

@ -23,12 +23,13 @@ class GameOverState extends FlxTransitionableState
override function create() override function create()
{ {
var loser:FlxSprite = new FlxSprite(100, 100); var loser:FlxSprite = new FlxSprite(100, 100);
var loseTex = Paths.getSparrowAtlas('lose'); var loseTex = Paths.getSparrowAtlas('lose');
loser.frames = loseTex; loser.frames = loseTex;
loser.animation.addByPrefix('lose', 'lose', 24, false); loser.animation.addByPrefix('lose', 'lose', 24, false);
loser.animation.play('lose'); loser.animation.play('lose');
add(loser); loser.antialiasing = FlxG.save.data.antialiasing;
add(loser);
var bf:Boyfriend = new Boyfriend(bfX, bfY); var bf:Boyfriend = new Boyfriend(bfX, bfY);
// bf.scrollFactor.set(); // bf.scrollFactor.set();
@ -37,15 +38,12 @@ class GameOverState extends FlxTransitionableState
FlxG.camera.follow(bf, LOCKON, 0.001); FlxG.camera.follow(bf, LOCKON, 0.001);
var restart:FlxSprite = new FlxSprite(500, 50).loadGraphic(Paths.image('restart')); var restart:FlxSprite = new FlxSprite(500, 50).loadGraphic(Paths.image('restart'));
restart.setGraphicSize(Std.int(restart.width * 0.6)); restart.setGraphicSize(Std.int(restart.width * 0.6));
restart.updateHitbox(); restart.updateHitbox();
restart.alpha = 0; restart.alpha = 0;
if(FlxG.save.data.antialiasing) restart.antialiasing = FlxG.save.data.antialiasing;
{ add(restart);
restart.antialiasing = true;
}
add(restart);
FlxG.sound.music.fadeOut(2, FlxG.sound.music.volume * 0.6); FlxG.sound.music.fadeOut(2, FlxG.sound.music.volume * 0.6);
@ -63,6 +61,16 @@ class GameOverState extends FlxTransitionableState
var gamepad:FlxGamepad = FlxG.gamepads.lastActive; var gamepad:FlxGamepad = FlxG.gamepads.lastActive;
if(FlxG.save.data.InstantRespawn)
{
fading = true;
FlxG.sound.music.fadeOut(0.5, 0, function(twn:FlxTween)
{
FlxG.sound.music.stop();
LoadingState.loadAndSwitchState(new PlayState());
});
}
if (gamepad != null) if (gamepad != null)
{ {
if (gamepad.justPressed.ANY) if (gamepad.justPressed.ANY)

View File

@ -59,6 +59,11 @@ class GameOverSubstate extends MusicBeatSubstate
endBullshit(); endBullshit();
} }
if(FlxG.save.data.InstantRespawn)
{
LoadingState.loadAndSwitchState(new PlayState());
}
if (controls.BACK) if (controls.BACK)
{ {
FlxG.sound.music.stop(); FlxG.sound.music.stop();

View File

@ -47,10 +47,14 @@ class GameplayCustomizeState extends MusicBeatState
#end #end
sick = new FlxSprite().loadGraphic(Paths.image('sick','shared')); sick = new FlxSprite().loadGraphic(Paths.image('sick','shared'));
sick.antialiasing = FlxG.save.data.antialiasing;
sick.scrollFactor.set(); sick.scrollFactor.set();
background = new FlxSprite(-600, -200).loadGraphic(Paths.image('stageback','shared')); background = new FlxSprite(-1000, -200).loadGraphic(Paths.image('stageback','shared'));
curt = new FlxSprite(-500, -300).loadGraphic(Paths.image('stagecurtains','shared')); curt = new FlxSprite(-500, -300).loadGraphic(Paths.image('stagecurtains','shared'));
front = new FlxSprite(-650, 600).loadGraphic(Paths.image('stagefront','shared')); front = new FlxSprite(-650, 600).loadGraphic(Paths.image('stagefront','shared'));
background.antialiasing = FlxG.save.data.antialiasing;
curt.antialiasing = FlxG.save.data.antialiasing;
front.antialiasing = FlxG.save.data.antialiasing;
//Conductor.changeBPM(102); //Conductor.changeBPM(102);
persistentUpdate = true; persistentUpdate = true;
@ -61,6 +65,8 @@ class GameplayCustomizeState extends MusicBeatState
camHUD.bgColor.alpha = 0; camHUD.bgColor.alpha = 0;
FlxG.cameras.add(camHUD); FlxG.cameras.add(camHUD);
camHUD.zoom = FlxG.save.data.zoom;
background.scrollFactor.set(0.9,0.9); background.scrollFactor.set(0.9,0.9);
curt.scrollFactor.set(0.9,0.9); curt.scrollFactor.set(0.9,0.9);
front.scrollFactor.set(0.9,0.9); front.scrollFactor.set(0.9,0.9);
@ -116,13 +122,19 @@ class GameplayCustomizeState extends MusicBeatState
generateStaticArrows(0); generateStaticArrows(0);
generateStaticArrows(1); generateStaticArrows(1);
text = new FlxText(5, FlxG.height + 40, 0, "Click and drag around gameplay elements to customize their positions.\nPress R to reset.\nPress Escape to go back.", 12); text = new FlxText(5, FlxG.height + 40, 0, "Click and drag around gameplay elements to customize their positions. Press R to reset. Q/E to change zoom. Press Escape to go back.", 12);
text.scrollFactor.set(); text.scrollFactor.set();
text.setFormat("VCR OSD Mono", 16, FlxColor.WHITE, LEFT, FlxTextBorderStyle.OUTLINE, FlxColor.BLACK); text.setFormat("VCR OSD Mono", 16, FlxColor.WHITE, LEFT, FlxTextBorderStyle.OUTLINE, FlxColor.BLACK);
blackBorder = new FlxSprite(-30,FlxG.height + 40).makeGraphic((Std.int(text.width + 900)),Std.int(text.height + 600),FlxColor.BLACK); blackBorder = new FlxSprite(-30,FlxG.height + 40).makeGraphic((Std.int(text.width + 900)),Std.int(text.height + 600),FlxColor.BLACK);
blackBorder.alpha = 0.5; blackBorder.alpha = 0.5;
background.cameras = [camHUD];
text.cameras = [camHUD];
text.scrollFactor.set();
background.scrollFactor.set();
add(blackBorder); add(blackBorder);
add(text); add(text);
@ -150,13 +162,19 @@ class GameplayCustomizeState extends MusicBeatState
super.update(elapsed); super.update(elapsed);
if (FlxG.save.data.zoom < 0.8)
FlxG.save.data.zoom = 0.8;
if (FlxG.save.data.zoom > 1.2)
FlxG.save.data.zoom = 1.2;
FlxG.camera.zoom = FlxMath.lerp(0.9, FlxG.camera.zoom, 0.95); FlxG.camera.zoom = FlxMath.lerp(0.9, FlxG.camera.zoom, 0.95);
camHUD.zoom = FlxMath.lerp(1, camHUD.zoom, 0.95); camHUD.zoom = FlxMath.lerp(FlxG.save.data.zoom, camHUD.zoom, 0.95);
if (FlxG.mouse.overlaps(sick) && FlxG.mouse.pressed) if (FlxG.mouse.overlaps(sick) && FlxG.mouse.pressed)
{ {
sick.x = FlxG.mouse.x - sick.width / 2; sick.x = (FlxG.mouse.x - sick.width / 2) - 60;
sick.y = FlxG.mouse.y - sick.height; sick.y = (FlxG.mouse.y - sick.height) - 60;
} }
for (i in playerStrums) for (i in playerStrums)
@ -164,6 +182,19 @@ class GameplayCustomizeState extends MusicBeatState
for (i in strumLineNotes) for (i in strumLineNotes)
i.y = strumLine.y; i.y = strumLine.y;
if (FlxG.keys.justPressed.Q)
{
FlxG.save.data.zoom += 0.02;
camHUD.zoom = FlxG.save.data.zoom;
}
if (FlxG.keys.justPressed.E)
{
FlxG.save.data.zoom -= 0.02;
camHUD.zoom = FlxG.save.data.zoom;
}
if (FlxG.mouse.overlaps(sick) && FlxG.mouse.justReleased) if (FlxG.mouse.overlaps(sick) && FlxG.mouse.justReleased)
{ {
FlxG.save.data.changedHitX = sick.x; FlxG.save.data.changedHitX = sick.x;
@ -175,6 +206,8 @@ class GameplayCustomizeState extends MusicBeatState
{ {
sick.x = defaultX; sick.x = defaultX;
sick.y = defaultY; sick.y = defaultY;
FlxG.save.data.zoom = 1;
camHUD.zoom = FlxG.save.data.zoom;
FlxG.save.data.changedHitX = sick.x; FlxG.save.data.changedHitX = sick.x;
FlxG.save.data.changedHitY = sick.y; FlxG.save.data.changedHitY = sick.y;
FlxG.save.data.changedHit = false; FlxG.save.data.changedHit = false;
@ -218,7 +251,7 @@ class GameplayCustomizeState extends MusicBeatState
babyArrow.animation.addByPrefix('blue', 'arrowDOWN'); babyArrow.animation.addByPrefix('blue', 'arrowDOWN');
babyArrow.animation.addByPrefix('purple', 'arrowLEFT'); babyArrow.animation.addByPrefix('purple', 'arrowLEFT');
babyArrow.animation.addByPrefix('red', 'arrowRIGHT'); babyArrow.animation.addByPrefix('red', 'arrowRIGHT');
babyArrow.antialiasing = true; babyArrow.antialiasing = FlxG.save.data.antialiasing;
babyArrow.setGraphicSize(Std.int(babyArrow.width * 0.7)); babyArrow.setGraphicSize(Std.int(babyArrow.width * 0.7));
switch (Math.abs(i)) switch (Math.abs(i))
{ {

View File

@ -22,20 +22,14 @@ class GitarooPause extends MusicBeatState
FlxG.sound.music.stop(); FlxG.sound.music.stop();
var bg:FlxSprite = new FlxSprite().loadGraphic(Paths.image('pauseAlt/pauseBG')); var bg:FlxSprite = new FlxSprite().loadGraphic(Paths.image('pauseAlt/pauseBG'));
if(FlxG.save.data.antialiasing) bg.antialiasing = FlxG.save.data.antialiasing;
{
bg.antialiasing = true;
}
add(bg); add(bg);
var bf:FlxSprite = new FlxSprite(0, 30); var bf:FlxSprite = new FlxSprite(0, 30);
bf.frames = Paths.getSparrowAtlas('pauseAlt/bfLol'); bf.frames = Paths.getSparrowAtlas('pauseAlt/bfLol');
bf.animation.addByPrefix('lol', "funnyThing", 13); bf.animation.addByPrefix('lol', "funnyThing", 13);
bf.animation.play('lol'); bf.animation.play('lol');
if(FlxG.save.data.antialiasing) bf.antialiasing = FlxG.save.data.antialiasing;
{
bf.antialiasing = true;
}
add(bf); add(bf);
bf.screenCenter(X); bf.screenCenter(X);
@ -44,10 +38,7 @@ class GitarooPause extends MusicBeatState
replayButton.animation.addByPrefix('selected', 'bluereplay', 0, false); replayButton.animation.addByPrefix('selected', 'bluereplay', 0, false);
replayButton.animation.appendByPrefix('selected', 'yellowreplay'); replayButton.animation.appendByPrefix('selected', 'yellowreplay');
replayButton.animation.play('selected'); replayButton.animation.play('selected');
if(FlxG.save.data.antialiasing) replayButton.antialiasing = FlxG.save.data.antialiasing;
{
replayButton.antialiasing = true;
}
add(replayButton); add(replayButton);
cancelButton = new FlxSprite(FlxG.width * 0.58, replayButton.y); cancelButton = new FlxSprite(FlxG.width * 0.58, replayButton.y);
@ -55,10 +46,7 @@ class GitarooPause extends MusicBeatState
cancelButton.animation.addByPrefix('selected', 'bluecancel', 0, false); cancelButton.animation.addByPrefix('selected', 'bluecancel', 0, false);
cancelButton.animation.appendByPrefix('selected', 'cancelyellow'); cancelButton.animation.appendByPrefix('selected', 'cancelyellow');
cancelButton.animation.play('selected'); cancelButton.animation.play('selected');
if(FlxG.save.data.antialiasing) cancelButton.antialiasing = FlxG.save.data.antialiasing;
{
cancelButton.antialiasing = true;
}
add(cancelButton); add(cancelButton);
changeThing(); changeThing();

View File

@ -25,16 +25,7 @@ class HealthIcon extends FlxSprite
isPlayer = isOldIcon = false; isPlayer = isOldIcon = false;
if (FlxG.save.data.antialiasing) antialiasing = FlxG.save.data.antialiasing;
{
switch(char)
{
case 'bf-pixel' | 'senpai' | 'senpai-angry' | 'spirit' | 'gf-pixel':
antialiasing = false;
default:
antialiasing = true;
}
}
changeIcon(char); changeIcon(char);
scrollFactor.set(); scrollFactor.set();
@ -51,6 +42,10 @@ class HealthIcon extends FlxSprite
char = char.split("-")[0]; char = char.split("-")[0];
loadGraphic(Paths.image('icons/icon-' + char), true, 150, 150); loadGraphic(Paths.image('icons/icon-' + char), true, 150, 150);
if(char.endsWith('-pixel') || char.startsWith('senpai') || char.startsWith('spirit'))
antialiasing = false
else
antialiasing = FlxG.save.data.antialiasing;
animation.add(char, [0, 1], 0, false, isPlayer); animation.add(char, [0, 1], 0, false, isPlayer);
animation.play(char); animation.play(char);
} }

View File

@ -1,3 +1,4 @@
import flixel.FlxG;
import flixel.math.FlxMath; import flixel.math.FlxMath;
class HelperFunctions class HelperFunctions

View File

@ -81,6 +81,9 @@ class KadeEngineData
if (FlxG.save.data.resetButton == null) if (FlxG.save.data.resetButton == null)
FlxG.save.data.resetButton = false; FlxG.save.data.resetButton = false;
if (FlxG.save.data.InstantRespawn == null)
FlxG.save.data.InstantRespawn = false;
if (FlxG.save.data.botplay == null) if (FlxG.save.data.botplay == null)
FlxG.save.data.botplay = false; FlxG.save.data.botplay = false;
@ -109,8 +112,11 @@ class KadeEngineData
if (FlxG.save.data.cacheImages == null) if (FlxG.save.data.cacheImages == null)
FlxG.save.data.cacheImages = false; FlxG.save.data.cacheImages = false;
if (FlxG.save.data.editor == null) if (FlxG.save.data.editorBG == null)
FlxG.save.data.editor = true; FlxG.save.data.editor = false;
if (FlxG.save.data.zoom == null)
FlxG.save.data.zoom = 1;
var gamepad:FlxGamepad = FlxG.gamepads.lastActive; var gamepad:FlxGamepad = FlxG.gamepads.lastActive;

View File

@ -71,10 +71,7 @@ class LoadReplayState extends MusicBeatState
menuBG.setGraphicSize(Std.int(menuBG.width * 1.1)); menuBG.setGraphicSize(Std.int(menuBG.width * 1.1));
menuBG.updateHitbox(); menuBG.updateHitbox();
menuBG.screenCenter(); menuBG.screenCenter();
if(FlxG.save.data.antialiasing) menuBG.antialiasing = FlxG.save.data.antialiasing;
{
menuBG.antialiasing = true;
}
add(menuBG); add(menuBG);
grpControls = new FlxTypedGroup<Alphabet>(); grpControls = new FlxTypedGroup<Alphabet>();

View File

@ -38,10 +38,7 @@ class LoadingState extends MusicBeatState
{ {
logo = new FlxSprite(-150, -100); logo = new FlxSprite(-150, -100);
logo.frames = Paths.getSparrowAtlas('logoBumpin'); logo.frames = Paths.getSparrowAtlas('logoBumpin');
if(FlxG.save.data.antialiasing) logo.antialiasing = FlxG.save.data.antialiasing;
{
logo.antialiasing = true;
}
logo.animation.addByPrefix('bump', 'logo bumpin', 24); logo.animation.addByPrefix('bump', 'logo bumpin', 24);
logo.animation.play('bump'); logo.animation.play('bump');
logo.updateHitbox(); logo.updateHitbox();
@ -52,10 +49,7 @@ class LoadingState extends MusicBeatState
gfDance.frames = Paths.getSparrowAtlas('gfDanceTitle'); gfDance.frames = Paths.getSparrowAtlas('gfDanceTitle');
gfDance.animation.addByIndices('danceLeft', 'gfDance', [30, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "", 24, false); gfDance.animation.addByIndices('danceLeft', 'gfDance', [30, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "", 24, false);
gfDance.animation.addByIndices('danceRight', 'gfDance', [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "", 24, false); gfDance.animation.addByIndices('danceRight', 'gfDance', [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "", 24, false);
if(FlxG.save.data.antialiasing) gfDance.antialiasing = FlxG.save.data.antialiasing;
{
gfDance.antialiasing = true;
}
add(gfDance); add(gfDance);
add(logo); add(logo);

View File

@ -40,7 +40,7 @@ class MainMenuState extends MusicBeatState
public static var nightly:String = ""; public static var nightly:String = "";
public static var kadeEngineVer:String = "1.6.1" + nightly; public static var kadeEngineVer:String = "1.6.2" + 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;
@ -49,6 +49,7 @@ class MainMenuState extends MusicBeatState
override function create() override function create()
{ {
clean();
#if windows #if windows
// Updating Discord Rich Presence // Updating Discord Rich Presence
DiscordClient.changePresence("In the Menus", null); DiscordClient.changePresence("In the Menus", null);
@ -67,10 +68,7 @@ class MainMenuState extends MusicBeatState
bg.setGraphicSize(Std.int(bg.width * 1.1)); bg.setGraphicSize(Std.int(bg.width * 1.1));
bg.updateHitbox(); bg.updateHitbox();
bg.screenCenter(); bg.screenCenter();
if(FlxG.save.data.antialiasing) bg.antialiasing = FlxG.save.data.antialiasing;
{
bg.antialiasing = true;
}
add(bg); add(bg);
camFollow = new FlxObject(0, 0, 1, 1); camFollow = new FlxObject(0, 0, 1, 1);
@ -83,10 +81,7 @@ class MainMenuState extends MusicBeatState
magenta.updateHitbox(); magenta.updateHitbox();
magenta.screenCenter(); magenta.screenCenter();
magenta.visible = false; magenta.visible = false;
if(FlxG.save.data.antialiasing) magenta.antialiasing = FlxG.save.data.antialiasing;
{
magenta.antialiasing = true;
}
magenta.color = 0xFFfd719b; magenta.color = 0xFFfd719b;
add(magenta); add(magenta);
// magenta.scrollFactor.set(); // magenta.scrollFactor.set();
@ -107,10 +102,7 @@ class MainMenuState extends MusicBeatState
menuItem.screenCenter(X); menuItem.screenCenter(X);
menuItems.add(menuItem); menuItems.add(menuItem);
menuItem.scrollFactor.set(); menuItem.scrollFactor.set();
if(FlxG.save.data.antialiasing) menuItem.antialiasing = FlxG.save.data.antialiasing;
{
menuItem.antialiasing = true;
}
if (firstStart) if (firstStart)
FlxTween.tween(menuItem,{y: 60 + (i * 160)},1 + (i * 0.25) ,{ease: FlxEase.expoInOut, onComplete: function(flxTween:FlxTween) FlxTween.tween(menuItem,{y: 60 + (i * 160)},1 + (i * 0.25) ,{ease: FlxEase.expoInOut, onComplete: function(flxTween:FlxTween)
{ {

View File

@ -44,10 +44,7 @@ class MenuCharacter extends FlxSprite
super(x, y); super(x, y);
this.flipped = flipped; this.flipped = flipped;
if(FlxG.save.data.antialiasing) antialiasing = FlxG.save.data.antialiasing;
{
antialiasing = true;
}
frames = Paths.getSparrowAtlas('campaign_menu_UI_characters'); frames = Paths.getSparrowAtlas('campaign_menu_UI_characters');

View File

@ -4,7 +4,7 @@
import openfl.display3D.textures.VideoTexture; import openfl.display3D.textures.VideoTexture;
import flixel.graphics.FlxGraphic; import flixel.graphics.FlxGraphic;
import flixel.graphics.frames.FlxAtlasFrames; import flixel.graphics.frames.FlxAtlasFrames;
#if windows #if cpp
import flixel.tweens.FlxEase; import flixel.tweens.FlxEase;
import openfl.filters.ShaderFilter; import openfl.filters.ShaderFilter;
import flixel.tweens.FlxTween; import flixel.tweens.FlxTween;

View File

@ -1,5 +1,6 @@
package; package;
import flixel.FlxBasic;
#if windows #if windows
import Discord.DiscordClient; import Discord.DiscordClient;
#end #end
@ -22,6 +23,26 @@ class MusicBeatState extends FlxUIState
inline function get_controls():Controls inline function get_controls():Controls
return PlayerSettings.player1.controls; return PlayerSettings.player1.controls;
private var assets:Array<FlxBasic> = [];
override function add(Object:flixel.FlxBasic):flixel.FlxBasic
{
if (FlxG.save.data.optimize)
assets.push(Object);
return super.add(Object);
}
public function clean()
{
if (FlxG.save.data.optimize)
{
for(i in assets)
{
remove(i);
}
}
}
override function create() override function create()
{ {
TimingStruct.clearTimings(); TimingStruct.clearTimings();
@ -86,9 +107,6 @@ class MusicBeatState extends FlxUIState
var step = ((60 / data.bpm) * 1000) / 4; var step = ((60 / data.bpm) * 1000) / 4;
var startInMS = (data.startTime * 1000); var startInMS = (data.startTime * 1000);
var percent = (Conductor.songPosition - startInMS) / (data.length * 1000);
curDecimalBeat = data.startBeat + (((Conductor.songPosition/1000) - data.startTime) * (data.bpm / 60)); curDecimalBeat = data.startBeat + (((Conductor.songPosition/1000) - data.startTime) * (data.bpm / 60));
var ste:Int = Math.floor(data.startStep + ((Conductor.songPosition - startInMS) / step)); var ste:Int = Math.floor(data.startStep + ((Conductor.songPosition - startInMS) / step));
if (ste >= 0) if (ste >= 0)
@ -104,6 +122,7 @@ class MusicBeatState extends FlxUIState
} }
else if (ste < curStep) else if (ste < curStep)
{ {
trace("reset steps for some reason?? at " + Conductor.songPosition);
//Song reset? //Song reset?
curStep = ste; curStep = ste;
updateBeat(); updateBeat();
@ -129,6 +148,7 @@ class MusicBeatState extends FlxUIState
else if (nextStep < curStep) else if (nextStep < curStep)
{ {
//Song reset? //Song reset?
trace("(no bpm change) reset steps for some reason?? at " + Conductor.songPosition);
curStep = nextStep; curStep = nextStep;
updateBeat(); updateBeat();
stepHit(); stepHit();

View File

@ -18,6 +18,8 @@ class Note extends FlxSprite
public var strumTime:Float = 0; public var strumTime:Float = 0;
public var baseStrum:Float = 0; public var baseStrum:Float = 0;
public var charterSelected:Bool = false;
public var rStrumTime:Float = 0; public var rStrumTime:Float = 0;
public var mustPress:Bool = false; public var mustPress:Bool = false;
@ -33,6 +35,8 @@ class Note extends FlxSprite
public var originColor:Int = 0; // The sustain note's original note's color public var originColor:Int = 0; // The sustain note's original note's color
public var noteSection:Int = 0; public var noteSection:Int = 0;
public var isAlt:Bool = false;
public var noteCharterObject:FlxSprite; public var noteCharterObject:FlxSprite;
public var noteScore:Float = 1; public var noteScore:Float = 1;
@ -61,13 +65,15 @@ class Note extends FlxSprite
public var children:Array<Note> = []; public var children:Array<Note> = [];
public function new(strumTime:Float, noteData:Int, ?prevNote:Note, ?sustainNote:Bool = false, ?inCharter:Bool = false) public function new(strumTime:Float, noteData:Int, ?prevNote:Note, ?sustainNote:Bool = false, ?inCharter:Bool = false, ?isAlt:Bool = false)
{ {
super(); super();
if (prevNote == null) if (prevNote == null)
prevNote = this; prevNote = this;
this.isAlt = isAlt;
this.prevNote = prevNote; this.prevNote = prevNote;
isSustainNote = sustainNote; isSustainNote = sustainNote;
@ -83,12 +89,15 @@ class Note extends FlxSprite
else else
{ {
this.strumTime = strumTime; this.strumTime = strumTime;
rStrumTime = strumTime - (FlxG.save.data.offset + PlayState.songOffset);
#if sys #if sys
if (PlayState.isSM) if (PlayState.isSM)
{ {
rStrumTime = Math.round(rStrumTime + Std.parseFloat(PlayState.sm.header.OFFSET)); rStrumTime = strumTime;
} }
else
rStrumTime = (strumTime - FlxG.save.data.offset + PlayState.songOffset);
#else
rStrumTime = (strumTime - FlxG.save.data.offset + PlayState.songOffset);
#end #end
} }
@ -116,10 +125,7 @@ class Note extends FlxSprite
setGraphicSize(Std.int(width * 0.7)); setGraphicSize(Std.int(width * 0.7));
updateHitbox(); updateHitbox();
if(FlxG.save.data.antialiasing) antialiasing = FlxG.save.data.antialiasing;
{
antialiasing = true;
}
} }
else else
{ {
@ -141,7 +147,9 @@ class Note extends FlxSprite
animation.add(dataColor[i] + 'holdend', [i + 4]); // Tails animation.add(dataColor[i] + 'holdend', [i + 4]); // Tails
} }
setGraphicSize(Std.int(width * PlayState.daPixelZoom)); var widthSize = Std.int(PlayState.curStage.startsWith('school') ? (width * PlayState.daPixelZoom) : (isSustainNote ? (width * (PlayState.daPixelZoom - 1.5)) : (width * PlayState.daPixelZoom)));
setGraphicSize(widthSize);
updateHitbox(); updateHitbox();
default: default:
frames = Paths.getSparrowAtlas('NOTE_assets'); frames = Paths.getSparrowAtlas('NOTE_assets');
@ -156,10 +164,7 @@ class Note extends FlxSprite
setGraphicSize(Std.int(width * 0.7)); setGraphicSize(Std.int(width * 0.7));
updateHitbox(); updateHitbox();
if(FlxG.save.data.antialiasing) antialiasing = FlxG.save.data.antialiasing;
{
antialiasing = true;
}
} }
} }
@ -190,6 +195,7 @@ class Note extends FlxSprite
// and flip it so it doesn't look weird. // and flip it so it doesn't look weird.
// THIS DOESN'T FUCKING FLIP THE NOTE, CONTRIBUTERS DON'T JUST COMMENT THIS OUT JESUS // THIS DOESN'T FUCKING FLIP THE NOTE, CONTRIBUTERS DON'T JUST COMMENT THIS OUT JESUS
// then what is this lol // then what is this lol
// BRO IT LITERALLY SAYS IT FLIPS IF ITS A TRAIL AND ITS DOWNSCROLL
if (FlxG.save.data.downscroll && sustainNote) if (FlxG.save.data.downscroll && sustainNote)
flipY = true; flipY = true;
@ -245,25 +251,23 @@ class Note extends FlxSprite
if (mustPress) if (mustPress)
{ {
// ass
if (isSustainNote) if (isSustainNote)
{ {
if (strumTime > Conductor.songPosition - (Conductor.safeZoneOffset * 1.5) if (strumTime - Conductor.songPosition <= ((166 * Conductor.timeScale) * 0.5)
&& strumTime < Conductor.songPosition + (Conductor.safeZoneOffset * 0.5)) && strumTime - Conductor.songPosition >= (-166 * Conductor.timeScale))
canBeHit = true; canBeHit = true;
else else
canBeHit = false; canBeHit = false;
} }
else else
{ {
if (strumTime > Conductor.songPosition - Conductor.safeZoneOffset if (strumTime - Conductor.songPosition <= (166 * Conductor.timeScale)
&& strumTime < Conductor.songPosition + Conductor.safeZoneOffset) && strumTime - Conductor.songPosition >= (-166 * Conductor.timeScale))
canBeHit = true; canBeHit = true;
else else
canBeHit = false; canBeHit = false;
} }
if (strumTime - Conductor.songPosition < -166 && !wasGoodHit)
if (strumTime < Conductor.songPosition - Conductor.safeZoneOffset * Conductor.timeScale && !wasGoodHit)
tooLate = true; tooLate = true;
} }
else else
@ -274,7 +278,7 @@ class Note extends FlxSprite
wasGoodHit = true; wasGoodHit = true;
} }
if (tooLate) if (tooLate && !wasGoodHit)
{ {
if (alpha > 0.3) if (alpha > 0.3)
alpha = 0.3; alpha = 0.3;

View File

@ -152,7 +152,7 @@ class EditorRes extends Option
public override function press():Bool public override function press():Bool
{ {
FlxG.save.data.editor = !FlxG.save.data.editor; FlxG.save.data.editorBG = !FlxG.save.data.editorBG;
display = updateDisplay(); display = updateDisplay();
return true; return true;
@ -160,7 +160,7 @@ class EditorRes extends Option
private override function updateDisplay():String private override function updateDisplay():String
{ {
return FlxG.save.data.editor ? "Show Editor Grid" : "Do not Show Editor Grid"; return FlxG.save.data.editorBG ? "Show Editor Grid" : "Do not Show Editor Grid";
} }
} }
@ -307,6 +307,27 @@ class ResetButtonOption extends Option
} }
} }
class InstantRespawn extends Option
{
public function new(desc:String)
{
super();
description = desc;
}
public override function press():Bool
{
FlxG.save.data.InstantRespawn = !FlxG.save.data.InstantRespawn;
display = updateDisplay();
return true;
}
private override function updateDisplay():String
{
return "Instant Respawn " + (!FlxG.save.data.InstantRespawn ? "off" : "on");
}
}
class FlashingLightsOption extends Option class FlashingLightsOption extends Option
{ {
public function new(desc:String) public function new(desc:String)

View File

@ -36,6 +36,7 @@ class OptionsMenu extends MusicBeatState
new ScrollSpeedOption("Change your scroll speed. (1 = Chart dependent)"), new ScrollSpeedOption("Change your scroll speed. (1 = Chart dependent)"),
new AccuracyDOption("Change how accuracy is calculated. (Accurate = Simple, Complex = Milisecond Based)"), new AccuracyDOption("Change how accuracy is calculated. (Accurate = Simple, Complex = Milisecond Based)"),
new ResetButtonOption("Toggle pressing R to gameover."), new ResetButtonOption("Toggle pressing R to gameover."),
new InstantRespawn("Toggle if you instantly respawn after dying."),
// new OffsetMenu("Get a note offset based off of your inputs!"), // new OffsetMenu("Get a note offset based off of your inputs!"),
new CustomizeGameplay("Drag and drop gameplay modules to your prefered positions!") new CustomizeGameplay("Drag and drop gameplay modules to your prefered positions!")
]), ]),
@ -85,6 +86,7 @@ class OptionsMenu extends MusicBeatState
var blackBorder:FlxSprite; var blackBorder:FlxSprite;
override function create() override function create()
{ {
clean();
instance = this; instance = this;
var menuBG:FlxSprite = new FlxSprite().loadGraphic(Paths.image("menuDesat")); var menuBG:FlxSprite = new FlxSprite().loadGraphic(Paths.image("menuDesat"));
@ -92,10 +94,7 @@ class OptionsMenu extends MusicBeatState
menuBG.setGraphicSize(Std.int(menuBG.width * 1.1)); menuBG.setGraphicSize(Std.int(menuBG.width * 1.1));
menuBG.updateHitbox(); menuBG.updateHitbox();
menuBG.screenCenter(); menuBG.screenCenter();
if(FlxG.save.data.antialiasing) menuBG.antialiasing = FlxG.save.data.antialiasing;
{
menuBG.antialiasing = true;
}
add(menuBG); add(menuBG);
grpControls = new FlxTypedGroup<Alphabet>(); grpControls = new FlxTypedGroup<Alphabet>();
@ -141,7 +140,9 @@ class OptionsMenu extends MusicBeatState
if (acceptInput) if (acceptInput)
{ {
if (controls.BACK && !isCat) if (controls.BACK && !isCat)
{
FlxG.switchState(new MainMenuState()); FlxG.switchState(new MainMenuState());
}
else if (controls.BACK) else if (controls.BACK)
{ {
isCat = false; isCat = false;

View File

@ -32,10 +32,7 @@ class OutdatedSubState extends MusicBeatState
bg.scale.x *= 1.55; bg.scale.x *= 1.55;
bg.scale.y *= 1.55; bg.scale.y *= 1.55;
bg.screenCenter(); bg.screenCenter();
if(FlxG.save.data.antialiasing) bg.antialiasing = FlxG.save.data.antialiasing;
{
bg.antialiasing = true;
}
add(bg); add(bg);
var kadeLogo:FlxSprite = new FlxSprite(FlxG.width, 0).loadGraphic(Paths.image('KadeEngineLogo')); var kadeLogo:FlxSprite = new FlxSprite(FlxG.width, 0).loadGraphic(Paths.image('KadeEngineLogo'));
@ -44,10 +41,7 @@ class OutdatedSubState extends MusicBeatState
kadeLogo.x -= kadeLogo.frameHeight; kadeLogo.x -= kadeLogo.frameHeight;
kadeLogo.y -= 180; kadeLogo.y -= 180;
kadeLogo.alpha = 0.8; kadeLogo.alpha = 0.8;
if(FlxG.save.data.antialiasing) kadeLogo.antialiasing = FlxG.save.data.antialiasing;
{
kadeLogo.antialiasing = true;
}
add(kadeLogo); add(kadeLogo);
var txt:FlxText = new FlxText(0, 0, FlxG.width, var txt:FlxText = new FlxText(0, 0, FlxG.width,

View File

@ -1,8 +1,6 @@
package; package;
import openfl.utils.Assets;
import flixel.graphics.FlxGraphic; import flixel.graphics.FlxGraphic;
import flixel.system.FlxAssets.FlxGraphicAsset;
import flixel.FlxG; import flixel.FlxG;
import flixel.graphics.frames.FlxAtlasFrames; import flixel.graphics.frames.FlxAtlasFrames;
import openfl.utils.AssetType; import openfl.utils.AssetType;

View File

@ -209,6 +209,7 @@ class PauseSubState extends MusicBeatSubstate
{ {
var daSelected:String = menuItems[curSelected]; var daSelected:String = menuItems[curSelected];
switch (daSelected) switch (daSelected)
{ {
case "Resume": case "Resume":
@ -221,6 +222,7 @@ class PauseSubState extends MusicBeatSubstate
PlayState.instance.remove(PlayState.instance.videoSprite); PlayState.instance.remove(PlayState.instance.videoSprite);
PlayState.instance.removedVideo = true; PlayState.instance.removedVideo = true;
} }
PlayState.instance.clean();
FlxG.resetState(); FlxG.resetState();
case "Exit to menu": case "Exit to menu":
PlayState.startTime = 0; PlayState.startTime = 0;
@ -247,6 +249,8 @@ class PauseSubState extends MusicBeatSubstate
if (FlxG.save.data.fpsCap > 290) if (FlxG.save.data.fpsCap > 290)
(cast (Lib.current.getChildAt(0), Main)).setFPSCap(290); (cast (Lib.current.getChildAt(0), Main)).setFPSCap(290);
PlayState.instance.clean();
if (PlayState.isStoryMode) if (PlayState.isStoryMode)
FlxG.switchState(new StoryMenuState()); FlxG.switchState(new StoryMenuState());
else else

File diff suppressed because it is too large Load Diff

View File

@ -5,4 +5,5 @@ class PlayStateChangeables
public static var scrollSpeed:Float; public static var scrollSpeed:Float;
public static var botPlay:Bool; public static var botPlay:Bool;
public static var Optimize:Bool; public static var Optimize:Bool;
public static var zoom:Float;
} }

View File

@ -106,11 +106,7 @@ class Ratings
// IF LEMON SEES THIS I'M SORRY :( // IF LEMON SEES THIS I'M SORRY :(
// trace('Hit Info\nDifference: ' + noteDiff + '\nZone: ' + Conductor.safeZoneOffset * 1.5 + "\nTS: " + customTimeScale + "\nLate: " + 155 * customTimeScale); // trace('Hit Info\nDifference: ' + noteDiff + '\nZone: ' + Conductor.safeZoneOffset * 1.5 + "\nTS: " + customTimeScale + "\nLate: " + 155 * customTimeScale);
if (FlxG.save.data.botplay && !PlayState.loadRep)
return "sick"; // FUNNY
var rating = checkRating(noteDiff,customTimeScale); var rating = checkRating(noteDiff,customTimeScale);
@ -119,7 +115,7 @@ class Ratings
public static function checkRating(ms:Float, ts:Float) public static function checkRating(ms:Float, ts:Float)
{ {
var rating = "sick"; var rating = "shit";
if (ms <= 166 * ts && ms >= 135 * ts) if (ms <= 166 * ts && ms >= 135 * ts)
rating = "shit"; rating = "shit";
if (ms < 135 * ts && ms >= 90 * ts) if (ms < 135 * ts && ms >= 90 * ts)

View File

@ -83,7 +83,12 @@ class ResultsScreen extends FlxSubState
text.text = "Week Cleared!"; text.text = "Week Cleared!";
} }
comboText = new FlxText(20,-75,0,'Judgements:\nSicks - ${PlayState.sicks}\nGoods - ${PlayState.goods}\nBads - ${PlayState.bads}\n\nCombo Breaks: ${(PlayState.isStoryMode ? PlayState.campaignMisses : PlayState.misses)}\nHighest Combo: ${PlayState.highestCombo + 1}\nScore: ${PlayState.instance.songScore}\nAccuracy: ${HelperFunctions.truncateFloat(PlayState.instance.accuracy,2)}%\n\n${Ratings.GenerateLetterRank(PlayState.instance.accuracy)}\n\n${!PlayState.loadRep ? "F1 - View replay\nF2 - Replay song" : ""} var sicks = PlayState.isStoryMode ? PlayState.campaignSicks : PlayState.sicks;
var goods = PlayState.isStoryMode ? PlayState.campaignGoods : PlayState.goods;
var bads = PlayState.isStoryMode ? PlayState.campaignBads : PlayState.bads;
var shits = PlayState.isStoryMode ? PlayState.campaignShits : PlayState.shits;
comboText = new FlxText(20,-75,0,'Judgements:\nSicks - ${sicks}\nGoods - ${goods}\nBads - ${bads}\n\nCombo Breaks: ${(PlayState.isStoryMode ? PlayState.campaignMisses : PlayState.misses)}\nHighest Combo: ${PlayState.highestCombo + 1}\nScore: ${PlayState.instance.songScore}\nAccuracy: ${HelperFunctions.truncateFloat(PlayState.instance.accuracy,2)}%\n\n${Ratings.GenerateLetterRank(PlayState.instance.accuracy)}\n\n${!PlayState.loadRep ? "F1 - View replay\nF2 - Replay song" : ""}
'); ');
comboText.size = 28; comboText.size = 28;
comboText.setBorderStyle(FlxTextBorderStyle.OUTLINE,FlxColor.BLACK,4,1); comboText.setBorderStyle(FlxTextBorderStyle.OUTLINE,FlxColor.BLACK,4,1);
@ -145,6 +150,11 @@ class ResultsScreen extends FlxSubState
graph.addToHistory(diff, judge, obj3); graph.addToHistory(diff, judge, obj3);
} }
if (sicks == Math.POSITIVE_INFINITY || sicks == Math.NaN)
sicks = 0;
if (goods == Math.POSITIVE_INFINITY || goods == Math.NaN)
goods = 0;
graph.update(); graph.update();
mean = HelperFunctions.truncateFloat(mean / PlayState.rep.replay.songNotes.length,2); mean = HelperFunctions.truncateFloat(mean / PlayState.rep.replay.songNotes.length,2);
@ -208,6 +218,7 @@ class ResultsScreen extends FlxSubState
} }
else else
FlxG.switchState(new FreeplayState()); FlxG.switchState(new FreeplayState());
PlayState.instance.clean();
} }
if (FlxG.keys.justPressed.F1 && !PlayState.loadRep) if (FlxG.keys.justPressed.F1 && !PlayState.loadRep)
@ -272,12 +283,13 @@ class ResultsScreen extends FlxSubState
music.fadeOut(0.3); music.fadeOut(0.3);
if (PlayState.isSM) if (PlayState.isSM)
PlayState.SONG = Song.loadFromJsonRAW(poop); PlayState.SONG = Song.conversionChecks(Song.loadFromJsonRAW(poop));
else else
PlayState.SONG = Song.loadFromJson(poop, PlayState.rep.replay.songName); PlayState.SONG = Song.conversionChecks(Song.loadFromJson(poop, PlayState.rep.replay.songName));
PlayState.isStoryMode = false; PlayState.isStoryMode = false;
PlayState.storyDifficulty = PlayState.rep.replay.songDiff; PlayState.storyDifficulty = PlayState.rep.replay.songDiff;
LoadingState.loadAndSwitchState(new PlayState()); LoadingState.loadAndSwitchState(new PlayState());
PlayState.instance.clean();
} }
if (FlxG.keys.justPressed.F2 && !PlayState.loadRep) if (FlxG.keys.justPressed.F2 && !PlayState.loadRep)
@ -314,6 +326,7 @@ class ResultsScreen extends FlxSubState
PlayState.isStoryMode = false; PlayState.isStoryMode = false;
PlayState.storyDifficulty = PlayState.storyDifficulty; PlayState.storyDifficulty = PlayState.storyDifficulty;
LoadingState.loadAndSwitchState(new PlayState()); LoadingState.loadAndSwitchState(new PlayState());
PlayState.instance.clean();
} }
super.update(elapsed); super.update(elapsed);

View File

@ -11,6 +11,8 @@ typedef SwagSection =
var bpm:Float; var bpm:Float;
var changeBPM:Bool; var changeBPM:Bool;
var altAnim:Bool; var altAnim:Bool;
var p1AltAnim:Bool;
var p2AltAnim:Bool;
} }
class Section class Section
@ -18,6 +20,8 @@ class Section
public var startTime:Float = 0; public var startTime:Float = 0;
public var endTime:Float = 0; public var endTime:Float = 0;
public var sectionNotes:Array<Array<Dynamic>> = []; public var sectionNotes:Array<Array<Dynamic>> = [];
public var changeBPM:Bool = false;
public var bpm:Float = 0;
public var lengthInSteps:Int = 16; public var lengthInSteps:Int = 16;
public var typeOfSection:Int = 0; public var typeOfSection:Int = 0;

View File

@ -21,7 +21,7 @@ class SectionRender extends FlxSprite
if (Math.floor(h) != h) if (Math.floor(h) != h)
h = GRID_SIZE; h = GRID_SIZE;
if (FlxG.save.data.editor) if (FlxG.save.data.editorBG)
FlxGridOverlay.overlay(this,GRID_SIZE, Std.int(h), GRID_SIZE * 8,GRID_SIZE * Height); FlxGridOverlay.overlay(this,GRID_SIZE, Std.int(h), GRID_SIZE * 8,GRID_SIZE * Height);
} }

View File

@ -113,10 +113,74 @@ class Song
return parseJSONshit(rawJson); return parseJSONshit(rawJson);
} }
public static function conversionChecks(song:SwagSong):SwagSong
{
var ba = song.bpm;
var index = 0;
trace("conversion stuff " + song.song + " " + song.notes.length);
var convertedStuff:Array<Song.Event> = [];
if (song.eventObjects == null)
song.eventObjects = [new Song.Event("Init BPM",0,song.bpm,"BPM Change")];
for(i in song.eventObjects)
{
var name = Reflect.field(i,"name");
var type = Reflect.field(i,"type");
var pos = Reflect.field(i,"position");
var value = Reflect.field(i,"value");
convertedStuff.push(new Song.Event(name,pos,value,type));
}
song.eventObjects = convertedStuff;
for(i in song.notes)
{
var currentBeat = 4 * index;
var currentSeg = TimingStruct.getTimingAtBeat(currentBeat);
if (currentSeg == null)
continue;
var beat:Float = currentSeg.startBeat + (currentBeat - currentSeg.startBeat);
if (i.changeBPM && i.bpm != ba)
{
trace("converting changebpm for section " + index);
ba = i.bpm;
song.eventObjects.push(new Song.Event("FNF BPM Change " + index,beat,i.bpm,"BPM Change"));
}
for(ii in i.sectionNotes)
{
if (ii[3] == null)
ii[3] = false;
}
index++;
}
return song;
}
public static function parseJSONshit(rawJson:String):SwagSong public static function parseJSONshit(rawJson:String):SwagSong
{ {
var swagShit:SwagSong = cast Json.parse(rawJson).song; var swagShit:SwagSong = cast Json.parse(rawJson).song;
swagShit.validScore = true; swagShit.validScore = true;
// conversion stuff
for (section in swagShit.notes)
{
if (section.altAnim)
section.p1AltAnim = section.altAnim;
}
return swagShit; return swagShit;
} }
} }

View File

@ -146,10 +146,7 @@ class StoryMenuState extends MusicBeatState
grpWeekText.add(weekThing); grpWeekText.add(weekThing);
weekThing.screenCenter(X); weekThing.screenCenter(X);
if(FlxG.save.data.antialiasing) weekThing.antialiasing = FlxG.save.data.antialiasing;
{
weekThing.antialiasing = true;
}
// weekThing.updateHitbox(); // weekThing.updateHitbox();
// Needs an offset thingie // Needs an offset thingie
@ -161,10 +158,7 @@ class StoryMenuState extends MusicBeatState
lock.animation.addByPrefix('lock', 'lock'); lock.animation.addByPrefix('lock', 'lock');
lock.animation.play('lock'); lock.animation.play('lock');
lock.ID = i; lock.ID = i;
if(FlxG.save.data.antialiasing) lock.antialiasing = FlxG.save.data.antialiasing;
{
lock.antialiasing = true;
}
grpLocks.add(lock); grpLocks.add(lock);
} }
} }
@ -375,7 +369,7 @@ class StoryMenuState extends MusicBeatState
PlayState.shits = 0; PlayState.shits = 0;
PlayState.goods = 0; PlayState.goods = 0;
PlayState.campaignMisses = 0; PlayState.campaignMisses = 0;
PlayState.SONG = Song.loadFromJson(poop, PlayState.storyPlaylist[0]); PlayState.SONG = Song.conversionChecks(Song.loadFromJson(poop, PlayState.storyPlaylist[0]));
PlayState.storyWeek = curWeek; PlayState.storyWeek = curWeek;
PlayState.campaignScore = 0; PlayState.campaignScore = 0;
new FlxTimer().start(1, function(tmr:FlxTimer) new FlxTimer().start(1, function(tmr:FlxTimer)

View File

@ -77,6 +77,7 @@ class TitleState extends MusicBeatState
#end #end
Highscore.load(); Highscore.load();
@ -98,8 +99,10 @@ class TitleState extends MusicBeatState
#if FREEPLAY #if FREEPLAY
FlxG.switchState(new FreeplayState()); FlxG.switchState(new FreeplayState());
clean();
#elseif CHARTING #elseif CHARTING
FlxG.switchState(new ChartingState()); FlxG.switchState(new ChartingState());
clean();
#else #else
#if !cpp #if !cpp
new FlxTimer().start(1, function(tmr:FlxTimer) new FlxTimer().start(1, function(tmr:FlxTimer)
@ -122,7 +125,7 @@ class TitleState extends MusicBeatState
persistentUpdate = true; persistentUpdate = true;
var bg:FlxSprite = new FlxSprite().makeGraphic(FlxG.width, FlxG.height, FlxColor.BLACK); var bg:FlxSprite = new FlxSprite().makeGraphic(FlxG.width, FlxG.height, FlxColor.BLACK);
// bg.antialiasing = true; // bg.antialiasing = FlxG.save.data.antialiasing;
// bg.setGraphicSize(Std.int(bg.width * 0.6)); // bg.setGraphicSize(Std.int(bg.width * 0.6));
// bg.updateHitbox(); // bg.updateHitbox();
add(bg); add(bg);
@ -134,10 +137,7 @@ class TitleState extends MusicBeatState
logoBl = new FlxSprite(-150, -100); logoBl = new FlxSprite(-150, -100);
logoBl.frames = Paths.getSparrowAtlas('logoBumpin'); logoBl.frames = Paths.getSparrowAtlas('logoBumpin');
} }
if(FlxG.save.data.antialiasing) logoBl.antialiasing = FlxG.save.data.antialiasing;
{
logoBl.antialiasing = true;
}
logoBl.animation.addByPrefix('bump', 'logo bumpin', 24, false); logoBl.animation.addByPrefix('bump', 'logo bumpin', 24, false);
logoBl.updateHitbox(); logoBl.updateHitbox();
// logoBl.screenCenter(); // logoBl.screenCenter();
@ -147,10 +147,7 @@ class TitleState extends MusicBeatState
gfDance.frames = Paths.getSparrowAtlas('gfDanceTitle'); gfDance.frames = Paths.getSparrowAtlas('gfDanceTitle');
gfDance.animation.addByIndices('danceLeft', 'gfDance', [30, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "", 24, false); gfDance.animation.addByIndices('danceLeft', 'gfDance', [30, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "", 24, false);
gfDance.animation.addByIndices('danceRight', 'gfDance', [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "", 24, false); gfDance.animation.addByIndices('danceRight', 'gfDance', [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "", 24, false);
if(FlxG.save.data.antialiasing) gfDance.antialiasing = FlxG.save.data.antialiasing;
{
gfDance.antialiasing = true;
}
add(gfDance); add(gfDance);
add(logoBl); add(logoBl);
@ -158,10 +155,7 @@ class TitleState extends MusicBeatState
titleText.frames = Paths.getSparrowAtlas('titleEnter'); titleText.frames = Paths.getSparrowAtlas('titleEnter');
titleText.animation.addByPrefix('idle', "Press Enter to Begin", 24); titleText.animation.addByPrefix('idle', "Press Enter to Begin", 24);
titleText.animation.addByPrefix('press', "ENTER PRESSED", 24); titleText.animation.addByPrefix('press', "ENTER PRESSED", 24);
if(FlxG.save.data.antialiasing) titleText.antialiasing = FlxG.save.data.antialiasing;
{
titleText.antialiasing = true;
}
titleText.animation.play('idle'); titleText.animation.play('idle');
titleText.updateHitbox(); titleText.updateHitbox();
// titleText.screenCenter(X); // titleText.screenCenter(X);
@ -169,10 +163,7 @@ class TitleState extends MusicBeatState
var logo:FlxSprite = new FlxSprite().loadGraphic(Paths.image('logo')); var logo:FlxSprite = new FlxSprite().loadGraphic(Paths.image('logo'));
logo.screenCenter(); logo.screenCenter();
if(FlxG.save.data.antialiasing) logo.antialiasing = FlxG.save.data.antialiasing;
{
logo.antialiasing = true;
}
// add(logo); // add(logo);
// FlxTween.tween(logoBl, {y: logoBl.y + 50}, 0.6, {ease: FlxEase.quadInOut, type: PINGPONG}); // FlxTween.tween(logoBl, {y: logoBl.y + 50}, 0.6, {ease: FlxEase.quadInOut, type: PINGPONG});
@ -198,10 +189,7 @@ class TitleState extends MusicBeatState
ngSpr.setGraphicSize(Std.int(ngSpr.width * 0.8)); ngSpr.setGraphicSize(Std.int(ngSpr.width * 0.8));
ngSpr.updateHitbox(); ngSpr.updateHitbox();
ngSpr.screenCenter(X); ngSpr.screenCenter(X);
if(FlxG.save.data.antialiasing) ngSpr.antialiasing = FlxG.save.data.antialiasing;
{
ngSpr.antialiasing = true;
}
FlxTween.tween(credTextShit, {y: credTextShit.y + 20}, 2.9, {ease: FlxEase.quadInOut, type: PINGPONG}); FlxTween.tween(credTextShit, {y: credTextShit.y + 20}, 2.9, {ease: FlxEase.quadInOut, type: PINGPONG});
@ -319,16 +307,19 @@ class TitleState extends MusicBeatState
OutdatedSubState.needVer = returnedData[0]; OutdatedSubState.needVer = returnedData[0];
OutdatedSubState.currChanges = returnedData[1]; OutdatedSubState.currChanges = returnedData[1];
FlxG.switchState(new OutdatedSubState()); FlxG.switchState(new OutdatedSubState());
clean();
} }
else else
{ {
FlxG.switchState(new MainMenuState()); FlxG.switchState(new MainMenuState());
clean();
} }
} }
http.onError = function (error) { http.onError = function (error) {
trace('error: $error'); trace('error: $error');
FlxG.switchState(new MainMenuState()); // fail but we go anyway FlxG.switchState(new MainMenuState()); // fail but we go anyway
clean();
} }
http.request(); http.request();

88
source/Waveform.hx Normal file
View File

@ -0,0 +1,88 @@
import flixel.util.FlxColor;
import flixel.FlxG;
import openfl.geom.Rectangle;
import haxe.io.Bytes;
import lime.media.AudioBuffer;
import flixel.FlxSprite;
class Waveform extends FlxSprite
{
/// referenced from https://github.com/gedehari/HaxeFlixel-Waveform-Rendering/blob/master/source/PlayState.hx
/// by gedehari
public var buffer:AudioBuffer;
public var data:Bytes;
public function new(x:Int,y:Int, audioPath:String, height:Int)
{
super(x,y);
var path = StringTools.replace(audioPath, "songs:","");
trace("loading " + path);
buffer = AudioBuffer.fromFile(path);
trace("BPS: " + buffer.bitsPerSample + " - Channels: " + buffer.channels);
makeGraphic(height,350,FlxColor.TRANSPARENT);
angle = 90;
data = buffer.data.toBytes();
}
public function drawWaveform()
{
var index:Int = 0;
var drawIndex:Int = 0;
var samplesPerCollumn:Int = 600;
var min:Float = 0;
var max:Float = 0;
while ((index * 4) < (data.length - 1))
{
var byte:Int = data.getUInt16(index * 4);
if (byte > 65535 / 2)
byte -= 65535;
var sample:Float = (byte / 65535);
if (sample > 0)
{
if (sample > max)
max = sample;
}
else if (sample < 0)
{
if (sample < min)
min = sample;
}
if ((index % samplesPerCollumn) == 0)
{
// trace("min: " + min + ", max: " + max);
if (drawIndex > 350)
{
drawIndex = 0;
}
var pixelsMin:Float = Math.abs(min * 300);
var pixelsMax:Float = max * 300;
pixels.fillRect(new Rectangle(drawIndex, x, 1, height), 0xFF000000);
pixels.fillRect(new Rectangle(drawIndex, y - pixelsMin, 1, pixelsMin + pixelsMax), FlxColor.WHITE);
drawIndex += 1;
min = 0;
max = 0;
}
index += 1;
}
}
}

View File

@ -3,6 +3,7 @@ package smTools;
import sys.io.File; import sys.io.File;
import haxe.Exception; import haxe.Exception;
import lime.app.Application; import lime.app.Application;
import Section.SwagSection;
import haxe.Json; import haxe.Json;
class SMFile class SMFile
@ -29,6 +30,8 @@ class SMFile
{ {
_fileData = data; _fileData = data;
// Gather header data // Gather header data
var headerData = ""; var headerData = "";
var inc = 0; var inc = 0;
@ -41,9 +44,16 @@ class SMFile
header = new SMHeader(headerData.split(';')); header = new SMHeader(headerData.split(';'));
if (!StringTools.contains(header.MUSIC,"ogg")) if (_fileData.toString().split("#NOTES").length > 2)
{ {
Application.current.window.alert("The music MUST be an OGG File.","SM File loading (" + header.TITLE + ")"); Application.current.window.alert("The chart must only have 1 difficulty, this one has " + (_fileData.toString().split("#NOTES").length - 1),"SM File loading (" + header.TITLE + ")");
isValid = false;
return;
}
if (!StringTools.contains(header.MUSIC.toLowerCase(),"ogg"))
{
Application.current.window.alert("The music MUST be an OGG File, make sure the sm file has the right music property.","SM File loading (" + header.TITLE + ")");
isValid = false; isValid = false;
return; return;
} }
@ -65,6 +75,8 @@ class SMFile
measures = []; measures = [];
var measure = ""; var measure = "";
trace(data[inc - 1]); trace(data[inc - 1]);
@ -168,6 +180,7 @@ class SMFile
if (!isDouble) if (!isDouble)
section.mustHitSection = true; section.mustHitSection = true;
@:privateAccess @:privateAccess
for(i in 0...measure._measure.length - 1) for(i in 0...measure._measure.length - 1)
@ -184,6 +197,25 @@ class SMFile
currentBeat = noteRow / 48; currentBeat = noteRow / 48;
if (currentBeat % 4 == 0)
{
// ok new section time
song.notes.push(section);
section = {
sectionNotes: [],
lengthInSteps: 16,
typeOfSection: 0,
startTime: 0.0,
endTime: 0.0,
mustHitSection: false,
bpm: header.getBPM(0),
changeBPM: false,
altAnim: false
};
if (!isDouble)
section.mustHitSection = true;
}
var seg = TimingStruct.getTimingAtBeat(currentBeat); var seg = TimingStruct.getTimingAtBeat(currentBeat);
var timeInSec:Float = (seg.startTime + ((currentBeat - seg.startBeat) / (seg.bpm/60))); var timeInSec:Float = (seg.startTime + ((currentBeat - seg.startBeat) / (seg.bpm/60)));
@ -263,6 +295,35 @@ class SMFile
{ {
song.eventObjects = header.changeEvents; song.eventObjects = header.changeEvents;
} }
/*var newSections = [];
for(s in 0...song.notes.length) // lets go ahead and make sure each note is actually in their own section haha
{
var sec:SwagSection = {
startTime: song.notes[s].startTime,
endTime: song.notes[s].endTime,
lengthInSteps: 16,
bpm: song.bpm,
changeBPM: false,
mustHitSection: song.notes[s].mustHitSection,
sectionNotes: [],
typeOfSection: 0,
altAnim: song.notes[s].altAnim
};
for(i in song.notes)
{
for(ii in i.sectionNotes)
{
if (ii[0] >= sec.startTime && ii[0] < sec.endTime)
sec.sectionNotes.push(ii);
}
}
newSections.push(sec);
}*/
// WE ALREADY DO THIS
//song.notes = newSections;
// save da song // save da song

View File

@ -108,4 +108,4 @@ class SMHeader
} }
} }
} }
#end #end

View File

@ -1,5 +1,8 @@
1.6.1; 1.6.2;
- Wiggle Shader for Lua Modcharts - Added the ability to select and modify notes in the editor
- Optimized the editor - Added copy and paste (with ctrl z support) while selecting notes
- Fixed HTML5 Delta Timings - Optimized gameplay
- Steps actually exist now - Optimized the chart editor (less lag on longer songs, and faster load times)
- Fixed stutter at the start of a song
- Fixed scroll speed changes so they work when more then one of them exist
- Modcharts now work on Linux!