commit
f20ed9c7e9
@ -127,7 +127,7 @@
|
||||
<haxelib name="faxe" if='switch'/>
|
||||
<haxelib name="polymod"/>
|
||||
<haxelib name="discord_rpc" if="windows"/>
|
||||
<haxelib name="linc_luajit" if="windows"/>
|
||||
<haxelib name="linc_luajit"/>
|
||||
|
||||
<!-- <haxelib name="hxcpp-debug-server" if="desktop"/> -->
|
||||
|
||||
|
Binary file not shown.
@ -1,3 +1,3 @@
|
||||
: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:Not bad for an ugly worm.
|
||||
:dad:But this time I'll rip your nuts off right after your girlfriend finishes gargling mine.
|
||||
:bf:Bop beep be be skdoo bep
|
@ -1,3 +1,3 @@
|
||||
: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: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.
|
||||
:bf:Beep bo bop
|
@ -1,5 +1,5 @@
|
||||
:dad:Direct contact with real humans, after being trapped in here for so long...
|
||||
: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 beat you and make you take my place.
|
||||
:dad:Direct contact with real humans, after being trapped in here for so long...
|
||||
: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 beat you and make you take my place.
|
||||
: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 |
@ -1,50 +1,129 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<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 -->
|
||||
<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 DOWN0001" x="1369" y="0" 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 DOWN0003" x="1839" y="0" width="462" height="735" frameX="-4" 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 DOWN0005" x="1839" y="0" width="462" height="735" frameX="-4" 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 LEFT0000" x="843" y="793" width="370" height="777"/>
|
||||
<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 RIGHT0001" x="0" y="0" width="465" height="792" frameX="0" frameY="-1" frameWidth="465" frameHeight="793"/>
|
||||
<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 RIGHT0003" x="465" y="0" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/>
|
||||
<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 RIGHT0005" x="917" y="0" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/>
|
||||
<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 RIGHT0007" x="465" y="0" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/>
|
||||
<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 RIGHT0009" x="917" y="0" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/>
|
||||
<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 RIGHT0011" x="465" y="0" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/>
|
||||
<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 RIGHT0013" x="917" y="0" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/>
|
||||
<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 RIGHT0015" x="465" y="0" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/>
|
||||
<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 RIGHT0017" x="917" y="0" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/>
|
||||
<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 UP0000" x="2301" y="0" width="408" height="818" frameX="-1" frameY="0" frameWidth="409" frameHeight="818"/>
|
||||
<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 UP0002" x="2709" y="0" width="408" height="810" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
|
||||
<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 UP0004" x="3117" y="0" width="408" height="810" frameX="0" frameY="-8" frameWidth="409" frameHeight="818"/>
|
||||
<SubTexture name="Dad idle dance0000" x="1369" y="730" width="419" height="767" frameX="-6" frameY="0" frameWidth="429" frameHeight="767"/>
|
||||
<SubTexture name="Dad idle dance0001" x="1369" y="730" width="419" height="767" frameX="-6" frameY="0" frameWidth="429" frameHeight="767"/>
|
||||
<SubTexture name="Dad idle dance0002" x="3525" y="0" width="429" height="759" frameX="0" frameY="-8" frameWidth="429" frameHeight="767"/>
|
||||
<SubTexture name="Dad idle dance0003" x="3525" y="0" width="429" height="759" frameX="0" frameY="-8" frameWidth="429" frameHeight="767"/>
|
||||
<SubTexture name="Dad idle dance0004" x="0" y="792" width="424" height="757" frameX="-2" frameY="-10" frameWidth="429" frameHeight="767"/>
|
||||
<SubTexture name="Dad idle dance0005" x="0" y="792" width="424" height="757" frameX="-2" frameY="-10" frameWidth="429" frameHeight="767"/>
|
||||
<SubTexture name="Dad idle dance0006" x="3525" y="759" width="423" height="759" frameX="-3" frameY="-8" frameWidth="429" frameHeight="767"/>
|
||||
<SubTexture name="Dad idle dance0007" x="3525" y="759" width="423" height="759" frameX="-3" frameY="-8" frameWidth="429" frameHeight="767"/>
|
||||
<SubTexture name="Dad idle dance0008" x="424" y="793" width="419" height="766" frameX="-5" frameY="-1" frameWidth="429" frameHeight="767"/>
|
||||
<SubTexture name="Dad idle dance0009" x="424" y="793" width="419" height="766" frameX="-5" frameY="-1" frameWidth="429" frameHeight="767"/>
|
||||
<SubTexture name="Dad idle dance0010" x="1788" y="735" width="419" height="767" frameX="-6" frameY="0" frameWidth="429" frameHeight="767"/>
|
||||
<SubTexture name="Dad idle dance0011" x="1788" y="735" width="419" height="767" frameX="-6" frameY="0" frameWidth="429" frameHeight="767"/>
|
||||
<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 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="1409" y="10" width="470" height="730" frameX="0" frameY="-5" 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="1889" y="10" width="463" height="735" frameX="-3" 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="1889" y="10" width="463" height="735" frameX="-3" 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 DOWN0007" x="1889" y="10" width="463" height="735" frameX="-3" frameY="0" frameWidth="470" frameHeight="735"/>
|
||||
<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 DOWN0009" x="1889" y="10" width="463" height="735" frameX="-3" frameY="0" frameWidth="470" frameHeight="735"/>
|
||||
<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 DOWN0011" x="1889" y="10" width="463" height="735" frameX="-3" frameY="0" frameWidth="470" frameHeight="735"/>
|
||||
<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 DOWN0013" x="1889" y="10" width="463" height="735" frameX="-3" frameY="0" frameWidth="470" frameHeight="735"/>
|
||||
<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 DOWN0015" x="1889" y="10" width="463" height="735" frameX="-3" frameY="0" frameWidth="470" frameHeight="735"/>
|
||||
<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 LEFT0001" x="3173" y="829" width="371" height="777" frameX="0" frameY="0" frameWidth="383" frameHeight="777"/>
|
||||
<SubTexture name="Dad Sing Note LEFT0002" x="873" y="813" width="383" height="777"/>
|
||||
<SubTexture name="Dad Sing Note LEFT0003" x="873" y="813" width="383" height="777"/>
|
||||
<SubTexture name="Dad Sing Note LEFT0004" x="2780" y="829" width="383" height="777"/>
|
||||
<SubTexture name="Dad Sing Note LEFT0005" x="2780" y="829" width="383" height="777"/>
|
||||
<SubTexture name="Dad Sing Note LEFT0006" x="873" y="813" width="383" height="777"/>
|
||||
<SubTexture name="Dad Sing Note LEFT0007" x="873" y="813" width="383" height="777"/>
|
||||
<SubTexture name="Dad Sing Note LEFT0008" x="2780" y="829" width="383" height="777"/>
|
||||
<SubTexture name="Dad Sing Note LEFT0009" x="2780" y="829" width="383" height="777"/>
|
||||
<SubTexture name="Dad Sing Note LEFT0010" x="873" y="813" width="383" height="777"/>
|
||||
<SubTexture name="Dad Sing Note LEFT0011" x="873" y="813" width="383" height="777"/>
|
||||
<SubTexture name="Dad Sing Note LEFT0012" x="2780" y="829" width="383" height="777"/>
|
||||
<SubTexture name="Dad Sing Note LEFT0013" x="2780" y="829" width="383" height="777"/>
|
||||
<SubTexture name="Dad Sing Note LEFT0014" x="873" y="813" width="383" height="777"/>
|
||||
<SubTexture name="Dad Sing Note LEFT0015" x="873" y="813" width="383" height="777"/>
|
||||
<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 Sing Note RIGHT0001" x="10" y="10" width="465" height="792" frameX="0" frameY="-1" frameWidth="465" frameHeight="793"/>
|
||||
<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 Sing Note RIGHT0003" x="485" y="10" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/>
|
||||
<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 Sing Note RIGHT0005" x="947" y="10" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/>
|
||||
<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 Sing Note RIGHT0007" x="485" y="10" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/>
|
||||
<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 Sing Note RIGHT0009" x="947" y="10" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/>
|
||||
<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 Sing Note RIGHT0011" x="485" y="10" width="452" height="793" frameX="0" frameY="0" frameWidth="465" frameHeight="793"/>
|
||||
<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>
|
||||
|
@ -24,7 +24,7 @@
|
||||
- `haxelib install flixel-ui`
|
||||
- `haxelib install hscript`
|
||||
- `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 polymod https://github.com/larsiusprime/polymod.git`
|
||||
- `haxelib git discord_rpc https://github.com/Aidan63/linc_discord-rpc`
|
||||
|
29
docs/changelogs/changelog-1.6.2.md
Normal file
29
docs/changelogs/changelog-1.6.2.md
Normal 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!
|
@ -1,6 +1,7 @@
|
||||
# Changelogs
|
||||
|
||||
- [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](changelog-1.6)
|
||||
- [1.5.4](changelog-1.5.4)
|
||||
|
@ -1,5 +1,6 @@
|
||||
package;
|
||||
|
||||
import flixel.math.FlxPoint;
|
||||
import flixel.tweens.FlxEase;
|
||||
import flixel.tweens.FlxTween;
|
||||
import flixel.FlxG;
|
||||
@ -47,11 +48,20 @@ class Alphabet extends FlxSpriteGroup
|
||||
var pastX: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;
|
||||
pastY = y;
|
||||
|
||||
// ThatGuy: Have to assign these variables
|
||||
this.xScale = xScale;
|
||||
this.yScale = yScale;
|
||||
|
||||
super(x, y);
|
||||
|
||||
_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)
|
||||
remove(i);
|
||||
@ -86,6 +96,9 @@ class Alphabet extends FlxSpriteGroup
|
||||
listOAlphabets.clear();
|
||||
x = pastX;
|
||||
y = pastY;
|
||||
|
||||
this.xScale = xScale;
|
||||
this.yScale = yScale;
|
||||
|
||||
addText();
|
||||
}
|
||||
@ -111,17 +124,24 @@ class Alphabet extends FlxSpriteGroup
|
||||
{
|
||||
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)
|
||||
{
|
||||
xPos += 40;
|
||||
// ThatGuy: Also this line
|
||||
xPos += 40 * xScale;
|
||||
lastWasSpace = false;
|
||||
}
|
||||
|
||||
// var letter:AlphaCharacter = new AlphaCharacter(30 * loopNum, 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);
|
||||
|
||||
if (isBold)
|
||||
@ -147,6 +167,7 @@ class Alphabet extends FlxSpriteGroup
|
||||
|
||||
public var personTalking:String = 'gf';
|
||||
|
||||
// ThatGuy: THIS FUNCTION ISNT CHANGED! Because i dont use it lol
|
||||
public function startTypedText():Void
|
||||
{
|
||||
_finalText = text;
|
||||
@ -261,6 +282,36 @@ class Alphabet extends FlxSpriteGroup
|
||||
|
||||
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
|
||||
|
@ -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('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');
|
||||
if(FlxG.save.data.antialiasing)
|
||||
{
|
||||
antialiasing = true;
|
||||
}
|
||||
antialiasing = FlxG.save.data.antialiasing;
|
||||
}
|
||||
|
||||
var danceDir:Bool = false;
|
||||
|
@ -73,10 +73,15 @@ class Caching extends MusicBeatState
|
||||
text.y -= kadeLogo.height / 2 - 125;
|
||||
text.x -= 170;
|
||||
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;
|
||||
|
||||
FlxGraphic.defaultPersist = FlxG.save.data.cacheImages;
|
||||
|
||||
#if cpp
|
||||
if (FlxG.save.data.cacheImages)
|
||||
{
|
||||
|
@ -26,10 +26,7 @@ class Character extends FlxSprite
|
||||
this.isPlayer = isPlayer;
|
||||
|
||||
var tex:FlxAtlasFrames;
|
||||
if(FlxG.save.data.antialiasing)
|
||||
{
|
||||
antialiasing = true;
|
||||
}
|
||||
antialiasing = FlxG.save.data.antialiasing;
|
||||
|
||||
switch (curCharacter)
|
||||
{
|
||||
@ -103,11 +100,11 @@ class Character extends FlxSprite
|
||||
// DAD ANIMATION LOADING CODE
|
||||
tex = Paths.getSparrowAtlas('DADDY_DEAREST','shared',true);
|
||||
frames = tex;
|
||||
animation.addByPrefix('idle', 'Dad idle dance', 24);
|
||||
animation.addByPrefix('singUP', 'Dad Sing Note UP', 24);
|
||||
animation.addByPrefix('singRIGHT', 'Dad Sing Note RIGHT', 24);
|
||||
animation.addByPrefix('singDOWN', 'Dad Sing Note DOWN', 24);
|
||||
animation.addByPrefix('singLEFT', 'Dad Sing Note LEFT', 24);
|
||||
animation.addByPrefix('idle', 'Dad idle dance', 24, false);
|
||||
animation.addByPrefix('singUP', 'Dad Sing Note UP', 24, false);
|
||||
animation.addByPrefix('singRIGHT', 'Dad Sing Note RIGHT', 24, false);
|
||||
animation.addByPrefix('singDOWN', 'Dad Sing Note DOWN', 24, false);
|
||||
animation.addByPrefix('singLEFT', 'Dad Sing Note LEFT', 24, false);
|
||||
|
||||
loadOffsetFile(curCharacter);
|
||||
|
||||
@ -181,7 +178,7 @@ class Character extends FlxSprite
|
||||
case 'pico':
|
||||
tex = Paths.getSparrowAtlas('Pico_FNF_assetss','shared',true);
|
||||
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('singDOWN', 'Pico Down Note0', 24, false);
|
||||
if (isPlayer)
|
||||
@ -348,7 +345,7 @@ class Character extends FlxSprite
|
||||
antialiasing = false;
|
||||
|
||||
case 'spirit':
|
||||
frames = Paths.getPackerAtlas('spirit','shared',false);
|
||||
frames = Paths.getPackerAtlas('spirit','shared',true);
|
||||
animation.addByPrefix('idle', "idle spirit_", 24, false);
|
||||
animation.addByPrefix('singUP', "up_", 24, false);
|
||||
animation.addByPrefix('singRIGHT', "right_", 24, false);
|
||||
@ -455,7 +452,7 @@ class Character extends FlxSprite
|
||||
/**
|
||||
* FOR GF DANCING SHIT
|
||||
*/
|
||||
public function dance(forced:Bool = false)
|
||||
public function dance(forced:Bool = false, altAnim:Bool = false)
|
||||
{
|
||||
if (!debugMode)
|
||||
{
|
||||
@ -479,13 +476,25 @@ class Character extends FlxSprite
|
||||
else
|
||||
playAnim('danceLeft');
|
||||
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
|
||||
{
|
||||
|
||||
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);
|
||||
|
||||
var daOffset = animOffsets.get(AnimName);
|
||||
|
17
source/ChartingBox.hx
Normal file
17
source/ChartingBox.hx
Normal 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
@ -89,10 +89,7 @@ class DiffOverview extends FlxSubState
|
||||
babyArrow.animation.addByPrefix('blue', 'arrowDOWN');
|
||||
babyArrow.animation.addByPrefix('purple', 'arrowLEFT');
|
||||
babyArrow.animation.addByPrefix('red', 'arrowRIGHT');
|
||||
if(FlxG.save.data.antialiasing)
|
||||
{
|
||||
babyArrow.antialiasing = true;
|
||||
}
|
||||
babyArrow.antialiasing = FlxG.save.data.antialiasing;
|
||||
babyArrow.setGraphicSize(Std.int(babyArrow.width * 0.7));
|
||||
|
||||
switch (Math.abs(i))
|
||||
|
@ -67,6 +67,7 @@ class FreeplayState extends MusicBeatState
|
||||
|
||||
override function create()
|
||||
{
|
||||
clean();
|
||||
var initSonglist = CoolUtil.coolTextFile(Paths.txt('data/freeplaySonglist'));
|
||||
|
||||
//var diffList = "";
|
||||
@ -179,10 +180,7 @@ class FreeplayState extends MusicBeatState
|
||||
// LOAD CHARACTERS
|
||||
|
||||
var bg:FlxSprite = new FlxSprite().loadGraphic(Paths.image('menuBGBlue'));
|
||||
if(FlxG.save.data.antialiasing)
|
||||
{
|
||||
bg.antialiasing = true;
|
||||
}
|
||||
bg.antialiasing = FlxG.save.data.antialiasing;
|
||||
add(bg);
|
||||
|
||||
grpSongs = new FlxTypedGroup<Alphabet>();
|
||||
@ -382,7 +380,8 @@ class FreeplayState extends MusicBeatState
|
||||
}
|
||||
|
||||
|
||||
PlayState.SONG = hmm;
|
||||
|
||||
PlayState.SONG = Song.conversionChecks(hmm);
|
||||
PlayState.isStoryMode = false;
|
||||
PlayState.storyDifficulty = curDifficulty;
|
||||
PlayState.storyWeek = songs[curSelected].week;
|
||||
@ -400,6 +399,7 @@ class FreeplayState extends MusicBeatState
|
||||
PlayState.isSM = false;
|
||||
#end
|
||||
LoadingState.loadAndSwitchState(new PlayState());
|
||||
clean();
|
||||
}
|
||||
}
|
||||
|
||||
@ -479,6 +479,7 @@ class FreeplayState extends MusicBeatState
|
||||
#end
|
||||
|
||||
diffCalcText.text = 'RATING: ${DiffCalc.CalculateDiff(songData.get(songs[curSelected].songName)[curDifficulty])}';
|
||||
diffText.text = CoolUtil.difficultyFromInt(curDifficulty).toUpperCase();
|
||||
|
||||
#if PRELOAD_ALL
|
||||
if (songs[curSelected].songCharacter == "sm")
|
||||
|
@ -23,12 +23,13 @@ class GameOverState extends FlxTransitionableState
|
||||
|
||||
override function create()
|
||||
{
|
||||
var loser:FlxSprite = new FlxSprite(100, 100);
|
||||
var loseTex = Paths.getSparrowAtlas('lose');
|
||||
loser.frames = loseTex;
|
||||
loser.animation.addByPrefix('lose', 'lose', 24, false);
|
||||
loser.animation.play('lose');
|
||||
add(loser);
|
||||
var loser:FlxSprite = new FlxSprite(100, 100);
|
||||
var loseTex = Paths.getSparrowAtlas('lose');
|
||||
loser.frames = loseTex;
|
||||
loser.animation.addByPrefix('lose', 'lose', 24, false);
|
||||
loser.animation.play('lose');
|
||||
loser.antialiasing = FlxG.save.data.antialiasing;
|
||||
add(loser);
|
||||
|
||||
var bf:Boyfriend = new Boyfriend(bfX, bfY);
|
||||
// bf.scrollFactor.set();
|
||||
@ -37,15 +38,12 @@ class GameOverState extends FlxTransitionableState
|
||||
|
||||
FlxG.camera.follow(bf, LOCKON, 0.001);
|
||||
|
||||
var restart:FlxSprite = new FlxSprite(500, 50).loadGraphic(Paths.image('restart'));
|
||||
restart.setGraphicSize(Std.int(restart.width * 0.6));
|
||||
restart.updateHitbox();
|
||||
restart.alpha = 0;
|
||||
if(FlxG.save.data.antialiasing)
|
||||
{
|
||||
restart.antialiasing = true;
|
||||
}
|
||||
add(restart);
|
||||
var restart:FlxSprite = new FlxSprite(500, 50).loadGraphic(Paths.image('restart'));
|
||||
restart.setGraphicSize(Std.int(restart.width * 0.6));
|
||||
restart.updateHitbox();
|
||||
restart.alpha = 0;
|
||||
restart.antialiasing = FlxG.save.data.antialiasing;
|
||||
add(restart);
|
||||
|
||||
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;
|
||||
|
||||
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.justPressed.ANY)
|
||||
|
@ -59,6 +59,11 @@ class GameOverSubstate extends MusicBeatSubstate
|
||||
endBullshit();
|
||||
}
|
||||
|
||||
if(FlxG.save.data.InstantRespawn)
|
||||
{
|
||||
LoadingState.loadAndSwitchState(new PlayState());
|
||||
}
|
||||
|
||||
if (controls.BACK)
|
||||
{
|
||||
FlxG.sound.music.stop();
|
||||
|
@ -47,10 +47,14 @@ class GameplayCustomizeState extends MusicBeatState
|
||||
#end
|
||||
|
||||
sick = new FlxSprite().loadGraphic(Paths.image('sick','shared'));
|
||||
sick.antialiasing = FlxG.save.data.antialiasing;
|
||||
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'));
|
||||
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);
|
||||
persistentUpdate = true;
|
||||
@ -61,6 +65,8 @@ class GameplayCustomizeState extends MusicBeatState
|
||||
camHUD.bgColor.alpha = 0;
|
||||
FlxG.cameras.add(camHUD);
|
||||
|
||||
camHUD.zoom = FlxG.save.data.zoom;
|
||||
|
||||
background.scrollFactor.set(0.9,0.9);
|
||||
curt.scrollFactor.set(0.9,0.9);
|
||||
front.scrollFactor.set(0.9,0.9);
|
||||
@ -116,13 +122,19 @@ class GameplayCustomizeState extends MusicBeatState
|
||||
generateStaticArrows(0);
|
||||
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.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.alpha = 0.5;
|
||||
|
||||
background.cameras = [camHUD];
|
||||
text.cameras = [camHUD];
|
||||
|
||||
text.scrollFactor.set();
|
||||
background.scrollFactor.set();
|
||||
|
||||
add(blackBorder);
|
||||
|
||||
add(text);
|
||||
@ -150,13 +162,19 @@ class GameplayCustomizeState extends MusicBeatState
|
||||
|
||||
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);
|
||||
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)
|
||||
{
|
||||
sick.x = FlxG.mouse.x - sick.width / 2;
|
||||
sick.y = FlxG.mouse.y - sick.height;
|
||||
sick.x = (FlxG.mouse.x - sick.width / 2) - 60;
|
||||
sick.y = (FlxG.mouse.y - sick.height) - 60;
|
||||
}
|
||||
|
||||
for (i in playerStrums)
|
||||
@ -164,6 +182,19 @@ class GameplayCustomizeState extends MusicBeatState
|
||||
for (i in strumLineNotes)
|
||||
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)
|
||||
{
|
||||
FlxG.save.data.changedHitX = sick.x;
|
||||
@ -175,6 +206,8 @@ class GameplayCustomizeState extends MusicBeatState
|
||||
{
|
||||
sick.x = defaultX;
|
||||
sick.y = defaultY;
|
||||
FlxG.save.data.zoom = 1;
|
||||
camHUD.zoom = FlxG.save.data.zoom;
|
||||
FlxG.save.data.changedHitX = sick.x;
|
||||
FlxG.save.data.changedHitY = sick.y;
|
||||
FlxG.save.data.changedHit = false;
|
||||
@ -218,7 +251,7 @@ class GameplayCustomizeState extends MusicBeatState
|
||||
babyArrow.animation.addByPrefix('blue', 'arrowDOWN');
|
||||
babyArrow.animation.addByPrefix('purple', 'arrowLEFT');
|
||||
babyArrow.animation.addByPrefix('red', 'arrowRIGHT');
|
||||
babyArrow.antialiasing = true;
|
||||
babyArrow.antialiasing = FlxG.save.data.antialiasing;
|
||||
babyArrow.setGraphicSize(Std.int(babyArrow.width * 0.7));
|
||||
switch (Math.abs(i))
|
||||
{
|
||||
|
@ -22,20 +22,14 @@ class GitarooPause extends MusicBeatState
|
||||
FlxG.sound.music.stop();
|
||||
|
||||
var bg:FlxSprite = new FlxSprite().loadGraphic(Paths.image('pauseAlt/pauseBG'));
|
||||
if(FlxG.save.data.antialiasing)
|
||||
{
|
||||
bg.antialiasing = true;
|
||||
}
|
||||
bg.antialiasing = FlxG.save.data.antialiasing;
|
||||
add(bg);
|
||||
|
||||
var bf:FlxSprite = new FlxSprite(0, 30);
|
||||
bf.frames = Paths.getSparrowAtlas('pauseAlt/bfLol');
|
||||
bf.animation.addByPrefix('lol', "funnyThing", 13);
|
||||
bf.animation.play('lol');
|
||||
if(FlxG.save.data.antialiasing)
|
||||
{
|
||||
bf.antialiasing = true;
|
||||
}
|
||||
bf.antialiasing = FlxG.save.data.antialiasing;
|
||||
add(bf);
|
||||
bf.screenCenter(X);
|
||||
|
||||
@ -44,10 +38,7 @@ class GitarooPause extends MusicBeatState
|
||||
replayButton.animation.addByPrefix('selected', 'bluereplay', 0, false);
|
||||
replayButton.animation.appendByPrefix('selected', 'yellowreplay');
|
||||
replayButton.animation.play('selected');
|
||||
if(FlxG.save.data.antialiasing)
|
||||
{
|
||||
replayButton.antialiasing = true;
|
||||
}
|
||||
replayButton.antialiasing = FlxG.save.data.antialiasing;
|
||||
add(replayButton);
|
||||
|
||||
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.appendByPrefix('selected', 'cancelyellow');
|
||||
cancelButton.animation.play('selected');
|
||||
if(FlxG.save.data.antialiasing)
|
||||
{
|
||||
cancelButton.antialiasing = true;
|
||||
}
|
||||
cancelButton.antialiasing = FlxG.save.data.antialiasing;
|
||||
add(cancelButton);
|
||||
|
||||
changeThing();
|
||||
|
@ -25,16 +25,7 @@ class HealthIcon extends FlxSprite
|
||||
|
||||
isPlayer = isOldIcon = false;
|
||||
|
||||
if (FlxG.save.data.antialiasing)
|
||||
{
|
||||
switch(char)
|
||||
{
|
||||
case 'bf-pixel' | 'senpai' | 'senpai-angry' | 'spirit' | 'gf-pixel':
|
||||
antialiasing = false;
|
||||
default:
|
||||
antialiasing = true;
|
||||
}
|
||||
}
|
||||
antialiasing = FlxG.save.data.antialiasing;
|
||||
|
||||
changeIcon(char);
|
||||
scrollFactor.set();
|
||||
@ -51,6 +42,10 @@ class HealthIcon extends FlxSprite
|
||||
char = char.split("-")[0];
|
||||
|
||||
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.play(char);
|
||||
}
|
||||
|
@ -1,3 +1,4 @@
|
||||
import flixel.FlxG;
|
||||
import flixel.math.FlxMath;
|
||||
|
||||
class HelperFunctions
|
||||
|
@ -81,6 +81,9 @@ class KadeEngineData
|
||||
|
||||
if (FlxG.save.data.resetButton == null)
|
||||
FlxG.save.data.resetButton = false;
|
||||
|
||||
if (FlxG.save.data.InstantRespawn == null)
|
||||
FlxG.save.data.InstantRespawn = false;
|
||||
|
||||
if (FlxG.save.data.botplay == null)
|
||||
FlxG.save.data.botplay = false;
|
||||
@ -109,8 +112,11 @@ class KadeEngineData
|
||||
if (FlxG.save.data.cacheImages == null)
|
||||
FlxG.save.data.cacheImages = false;
|
||||
|
||||
if (FlxG.save.data.editor == null)
|
||||
FlxG.save.data.editor = true;
|
||||
if (FlxG.save.data.editorBG == null)
|
||||
FlxG.save.data.editor = false;
|
||||
|
||||
if (FlxG.save.data.zoom == null)
|
||||
FlxG.save.data.zoom = 1;
|
||||
|
||||
var gamepad:FlxGamepad = FlxG.gamepads.lastActive;
|
||||
|
||||
|
@ -71,10 +71,7 @@ class LoadReplayState extends MusicBeatState
|
||||
menuBG.setGraphicSize(Std.int(menuBG.width * 1.1));
|
||||
menuBG.updateHitbox();
|
||||
menuBG.screenCenter();
|
||||
if(FlxG.save.data.antialiasing)
|
||||
{
|
||||
menuBG.antialiasing = true;
|
||||
}
|
||||
menuBG.antialiasing = FlxG.save.data.antialiasing;
|
||||
add(menuBG);
|
||||
|
||||
grpControls = new FlxTypedGroup<Alphabet>();
|
||||
|
@ -38,10 +38,7 @@ class LoadingState extends MusicBeatState
|
||||
{
|
||||
logo = new FlxSprite(-150, -100);
|
||||
logo.frames = Paths.getSparrowAtlas('logoBumpin');
|
||||
if(FlxG.save.data.antialiasing)
|
||||
{
|
||||
logo.antialiasing = true;
|
||||
}
|
||||
logo.antialiasing = FlxG.save.data.antialiasing;
|
||||
logo.animation.addByPrefix('bump', 'logo bumpin', 24);
|
||||
logo.animation.play('bump');
|
||||
logo.updateHitbox();
|
||||
@ -52,10 +49,7 @@ class LoadingState extends MusicBeatState
|
||||
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('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 = true;
|
||||
}
|
||||
gfDance.antialiasing = FlxG.save.data.antialiasing;
|
||||
add(gfDance);
|
||||
add(logo);
|
||||
|
||||
|
@ -40,7 +40,7 @@ class MainMenuState extends MusicBeatState
|
||||
|
||||
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";
|
||||
|
||||
var magenta:FlxSprite;
|
||||
@ -49,6 +49,7 @@ class MainMenuState extends MusicBeatState
|
||||
|
||||
override function create()
|
||||
{
|
||||
clean();
|
||||
#if windows
|
||||
// Updating Discord Rich Presence
|
||||
DiscordClient.changePresence("In the Menus", null);
|
||||
@ -67,10 +68,7 @@ class MainMenuState extends MusicBeatState
|
||||
bg.setGraphicSize(Std.int(bg.width * 1.1));
|
||||
bg.updateHitbox();
|
||||
bg.screenCenter();
|
||||
if(FlxG.save.data.antialiasing)
|
||||
{
|
||||
bg.antialiasing = true;
|
||||
}
|
||||
bg.antialiasing = FlxG.save.data.antialiasing;
|
||||
add(bg);
|
||||
|
||||
camFollow = new FlxObject(0, 0, 1, 1);
|
||||
@ -83,10 +81,7 @@ class MainMenuState extends MusicBeatState
|
||||
magenta.updateHitbox();
|
||||
magenta.screenCenter();
|
||||
magenta.visible = false;
|
||||
if(FlxG.save.data.antialiasing)
|
||||
{
|
||||
magenta.antialiasing = true;
|
||||
}
|
||||
magenta.antialiasing = FlxG.save.data.antialiasing;
|
||||
magenta.color = 0xFFfd719b;
|
||||
add(magenta);
|
||||
// magenta.scrollFactor.set();
|
||||
@ -107,10 +102,7 @@ class MainMenuState extends MusicBeatState
|
||||
menuItem.screenCenter(X);
|
||||
menuItems.add(menuItem);
|
||||
menuItem.scrollFactor.set();
|
||||
if(FlxG.save.data.antialiasing)
|
||||
{
|
||||
menuItem.antialiasing = true;
|
||||
}
|
||||
menuItem.antialiasing = FlxG.save.data.antialiasing;
|
||||
if (firstStart)
|
||||
FlxTween.tween(menuItem,{y: 60 + (i * 160)},1 + (i * 0.25) ,{ease: FlxEase.expoInOut, onComplete: function(flxTween:FlxTween)
|
||||
{
|
||||
|
@ -44,10 +44,7 @@ class MenuCharacter extends FlxSprite
|
||||
super(x, y);
|
||||
this.flipped = flipped;
|
||||
|
||||
if(FlxG.save.data.antialiasing)
|
||||
{
|
||||
antialiasing = true;
|
||||
}
|
||||
antialiasing = FlxG.save.data.antialiasing;
|
||||
|
||||
frames = Paths.getSparrowAtlas('campaign_menu_UI_characters');
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
import openfl.display3D.textures.VideoTexture;
|
||||
import flixel.graphics.FlxGraphic;
|
||||
import flixel.graphics.frames.FlxAtlasFrames;
|
||||
#if windows
|
||||
#if cpp
|
||||
import flixel.tweens.FlxEase;
|
||||
import openfl.filters.ShaderFilter;
|
||||
import flixel.tweens.FlxTween;
|
||||
|
@ -1,5 +1,6 @@
|
||||
package;
|
||||
|
||||
import flixel.FlxBasic;
|
||||
#if windows
|
||||
import Discord.DiscordClient;
|
||||
#end
|
||||
@ -22,6 +23,26 @@ class MusicBeatState extends FlxUIState
|
||||
inline function get_controls():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()
|
||||
{
|
||||
TimingStruct.clearTimings();
|
||||
@ -86,9 +107,6 @@ class MusicBeatState extends FlxUIState
|
||||
var step = ((60 / data.bpm) * 1000) / 4;
|
||||
var startInMS = (data.startTime * 1000);
|
||||
|
||||
|
||||
var percent = (Conductor.songPosition - startInMS) / (data.length * 1000);
|
||||
|
||||
curDecimalBeat = data.startBeat + (((Conductor.songPosition/1000) - data.startTime) * (data.bpm / 60));
|
||||
var ste:Int = Math.floor(data.startStep + ((Conductor.songPosition - startInMS) / step));
|
||||
if (ste >= 0)
|
||||
@ -104,6 +122,7 @@ class MusicBeatState extends FlxUIState
|
||||
}
|
||||
else if (ste < curStep)
|
||||
{
|
||||
trace("reset steps for some reason?? at " + Conductor.songPosition);
|
||||
//Song reset?
|
||||
curStep = ste;
|
||||
updateBeat();
|
||||
@ -129,6 +148,7 @@ class MusicBeatState extends FlxUIState
|
||||
else if (nextStep < curStep)
|
||||
{
|
||||
//Song reset?
|
||||
trace("(no bpm change) reset steps for some reason?? at " + Conductor.songPosition);
|
||||
curStep = nextStep;
|
||||
updateBeat();
|
||||
stepHit();
|
||||
|
@ -18,6 +18,8 @@ class Note extends FlxSprite
|
||||
public var strumTime:Float = 0;
|
||||
public var baseStrum:Float = 0;
|
||||
|
||||
public var charterSelected:Bool = false;
|
||||
|
||||
public var rStrumTime:Float = 0;
|
||||
|
||||
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 noteSection:Int = 0;
|
||||
|
||||
public var isAlt:Bool = false;
|
||||
|
||||
public var noteCharterObject:FlxSprite;
|
||||
|
||||
public var noteScore:Float = 1;
|
||||
@ -61,13 +65,15 @@ class Note extends FlxSprite
|
||||
|
||||
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();
|
||||
|
||||
if (prevNote == null)
|
||||
prevNote = this;
|
||||
|
||||
this.isAlt = isAlt;
|
||||
|
||||
this.prevNote = prevNote;
|
||||
isSustainNote = sustainNote;
|
||||
|
||||
@ -83,12 +89,15 @@ class Note extends FlxSprite
|
||||
else
|
||||
{
|
||||
this.strumTime = strumTime;
|
||||
rStrumTime = strumTime - (FlxG.save.data.offset + PlayState.songOffset);
|
||||
#if sys
|
||||
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
|
||||
}
|
||||
|
||||
@ -116,10 +125,7 @@ class Note extends FlxSprite
|
||||
|
||||
setGraphicSize(Std.int(width * 0.7));
|
||||
updateHitbox();
|
||||
if(FlxG.save.data.antialiasing)
|
||||
{
|
||||
antialiasing = true;
|
||||
}
|
||||
antialiasing = FlxG.save.data.antialiasing;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -141,7 +147,9 @@ class Note extends FlxSprite
|
||||
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();
|
||||
default:
|
||||
frames = Paths.getSparrowAtlas('NOTE_assets');
|
||||
@ -156,10 +164,7 @@ class Note extends FlxSprite
|
||||
setGraphicSize(Std.int(width * 0.7));
|
||||
updateHitbox();
|
||||
|
||||
if(FlxG.save.data.antialiasing)
|
||||
{
|
||||
antialiasing = true;
|
||||
}
|
||||
antialiasing = FlxG.save.data.antialiasing;
|
||||
}
|
||||
}
|
||||
|
||||
@ -190,6 +195,7 @@ class Note extends FlxSprite
|
||||
// and flip it so it doesn't look weird.
|
||||
// THIS DOESN'T FUCKING FLIP THE NOTE, CONTRIBUTERS DON'T JUST COMMENT THIS OUT JESUS
|
||||
// then what is this lol
|
||||
// BRO IT LITERALLY SAYS IT FLIPS IF ITS A TRAIL AND ITS DOWNSCROLL
|
||||
if (FlxG.save.data.downscroll && sustainNote)
|
||||
flipY = true;
|
||||
|
||||
@ -245,25 +251,23 @@ class Note extends FlxSprite
|
||||
|
||||
if (mustPress)
|
||||
{
|
||||
// ass
|
||||
if (isSustainNote)
|
||||
{
|
||||
if (strumTime > Conductor.songPosition - (Conductor.safeZoneOffset * 1.5)
|
||||
&& strumTime < Conductor.songPosition + (Conductor.safeZoneOffset * 0.5))
|
||||
if (strumTime - Conductor.songPosition <= ((166 * Conductor.timeScale) * 0.5)
|
||||
&& strumTime - Conductor.songPosition >= (-166 * Conductor.timeScale))
|
||||
canBeHit = true;
|
||||
else
|
||||
canBeHit = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (strumTime > Conductor.songPosition - Conductor.safeZoneOffset
|
||||
&& strumTime < Conductor.songPosition + Conductor.safeZoneOffset)
|
||||
if (strumTime - Conductor.songPosition <= (166 * Conductor.timeScale)
|
||||
&& strumTime - Conductor.songPosition >= (-166 * Conductor.timeScale))
|
||||
canBeHit = true;
|
||||
else
|
||||
canBeHit = false;
|
||||
}
|
||||
|
||||
if (strumTime < Conductor.songPosition - Conductor.safeZoneOffset * Conductor.timeScale && !wasGoodHit)
|
||||
if (strumTime - Conductor.songPosition < -166 && !wasGoodHit)
|
||||
tooLate = true;
|
||||
}
|
||||
else
|
||||
@ -274,7 +278,7 @@ class Note extends FlxSprite
|
||||
wasGoodHit = true;
|
||||
}
|
||||
|
||||
if (tooLate)
|
||||
if (tooLate && !wasGoodHit)
|
||||
{
|
||||
if (alpha > 0.3)
|
||||
alpha = 0.3;
|
||||
|
@ -152,7 +152,7 @@ class EditorRes extends Option
|
||||
|
||||
public override function press():Bool
|
||||
{
|
||||
FlxG.save.data.editor = !FlxG.save.data.editor;
|
||||
FlxG.save.data.editorBG = !FlxG.save.data.editorBG;
|
||||
|
||||
display = updateDisplay();
|
||||
return true;
|
||||
@ -160,7 +160,7 @@ class EditorRes extends Option
|
||||
|
||||
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
|
||||
{
|
||||
public function new(desc:String)
|
||||
|
@ -36,6 +36,7 @@ class OptionsMenu extends MusicBeatState
|
||||
new ScrollSpeedOption("Change your scroll speed. (1 = Chart dependent)"),
|
||||
new AccuracyDOption("Change how accuracy is calculated. (Accurate = Simple, Complex = Milisecond Based)"),
|
||||
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 CustomizeGameplay("Drag and drop gameplay modules to your prefered positions!")
|
||||
]),
|
||||
@ -85,6 +86,7 @@ class OptionsMenu extends MusicBeatState
|
||||
var blackBorder:FlxSprite;
|
||||
override function create()
|
||||
{
|
||||
clean();
|
||||
instance = this;
|
||||
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.updateHitbox();
|
||||
menuBG.screenCenter();
|
||||
if(FlxG.save.data.antialiasing)
|
||||
{
|
||||
menuBG.antialiasing = true;
|
||||
}
|
||||
menuBG.antialiasing = FlxG.save.data.antialiasing;
|
||||
add(menuBG);
|
||||
|
||||
grpControls = new FlxTypedGroup<Alphabet>();
|
||||
@ -141,7 +140,9 @@ class OptionsMenu extends MusicBeatState
|
||||
if (acceptInput)
|
||||
{
|
||||
if (controls.BACK && !isCat)
|
||||
{
|
||||
FlxG.switchState(new MainMenuState());
|
||||
}
|
||||
else if (controls.BACK)
|
||||
{
|
||||
isCat = false;
|
||||
|
@ -32,10 +32,7 @@ class OutdatedSubState extends MusicBeatState
|
||||
bg.scale.x *= 1.55;
|
||||
bg.scale.y *= 1.55;
|
||||
bg.screenCenter();
|
||||
if(FlxG.save.data.antialiasing)
|
||||
{
|
||||
bg.antialiasing = true;
|
||||
}
|
||||
bg.antialiasing = FlxG.save.data.antialiasing;
|
||||
add(bg);
|
||||
|
||||
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.y -= 180;
|
||||
kadeLogo.alpha = 0.8;
|
||||
if(FlxG.save.data.antialiasing)
|
||||
{
|
||||
kadeLogo.antialiasing = true;
|
||||
}
|
||||
kadeLogo.antialiasing = FlxG.save.data.antialiasing;
|
||||
add(kadeLogo);
|
||||
|
||||
var txt:FlxText = new FlxText(0, 0, FlxG.width,
|
||||
|
@ -1,8 +1,6 @@
|
||||
package;
|
||||
|
||||
import openfl.utils.Assets;
|
||||
import flixel.graphics.FlxGraphic;
|
||||
import flixel.system.FlxAssets.FlxGraphicAsset;
|
||||
import flixel.FlxG;
|
||||
import flixel.graphics.frames.FlxAtlasFrames;
|
||||
import openfl.utils.AssetType;
|
||||
|
@ -209,6 +209,7 @@ class PauseSubState extends MusicBeatSubstate
|
||||
{
|
||||
var daSelected:String = menuItems[curSelected];
|
||||
|
||||
|
||||
switch (daSelected)
|
||||
{
|
||||
case "Resume":
|
||||
@ -221,6 +222,7 @@ class PauseSubState extends MusicBeatSubstate
|
||||
PlayState.instance.remove(PlayState.instance.videoSprite);
|
||||
PlayState.instance.removedVideo = true;
|
||||
}
|
||||
PlayState.instance.clean();
|
||||
FlxG.resetState();
|
||||
case "Exit to menu":
|
||||
PlayState.startTime = 0;
|
||||
@ -247,6 +249,8 @@ class PauseSubState extends MusicBeatSubstate
|
||||
if (FlxG.save.data.fpsCap > 290)
|
||||
(cast (Lib.current.getChildAt(0), Main)).setFPSCap(290);
|
||||
|
||||
PlayState.instance.clean();
|
||||
|
||||
if (PlayState.isStoryMode)
|
||||
FlxG.switchState(new StoryMenuState());
|
||||
else
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -5,4 +5,5 @@ class PlayStateChangeables
|
||||
public static var scrollSpeed:Float;
|
||||
public static var botPlay:Bool;
|
||||
public static var Optimize:Bool;
|
||||
public static var zoom:Float;
|
||||
}
|
@ -106,11 +106,7 @@ class Ratings
|
||||
// IF LEMON SEES THIS I'M SORRY :(
|
||||
|
||||
// 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);
|
||||
|
||||
|
||||
@ -119,7 +115,7 @@ class Ratings
|
||||
|
||||
public static function checkRating(ms:Float, ts:Float)
|
||||
{
|
||||
var rating = "sick";
|
||||
var rating = "shit";
|
||||
if (ms <= 166 * ts && ms >= 135 * ts)
|
||||
rating = "shit";
|
||||
if (ms < 135 * ts && ms >= 90 * ts)
|
||||
|
@ -83,7 +83,12 @@ class ResultsScreen extends FlxSubState
|
||||
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.setBorderStyle(FlxTextBorderStyle.OUTLINE,FlxColor.BLACK,4,1);
|
||||
@ -145,6 +150,11 @@ class ResultsScreen extends FlxSubState
|
||||
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();
|
||||
|
||||
mean = HelperFunctions.truncateFloat(mean / PlayState.rep.replay.songNotes.length,2);
|
||||
@ -208,6 +218,7 @@ class ResultsScreen extends FlxSubState
|
||||
}
|
||||
else
|
||||
FlxG.switchState(new FreeplayState());
|
||||
PlayState.instance.clean();
|
||||
}
|
||||
|
||||
if (FlxG.keys.justPressed.F1 && !PlayState.loadRep)
|
||||
@ -272,12 +283,13 @@ class ResultsScreen extends FlxSubState
|
||||
music.fadeOut(0.3);
|
||||
|
||||
if (PlayState.isSM)
|
||||
PlayState.SONG = Song.loadFromJsonRAW(poop);
|
||||
PlayState.SONG = Song.conversionChecks(Song.loadFromJsonRAW(poop));
|
||||
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.storyDifficulty = PlayState.rep.replay.songDiff;
|
||||
LoadingState.loadAndSwitchState(new PlayState());
|
||||
PlayState.instance.clean();
|
||||
}
|
||||
|
||||
if (FlxG.keys.justPressed.F2 && !PlayState.loadRep)
|
||||
@ -314,6 +326,7 @@ class ResultsScreen extends FlxSubState
|
||||
PlayState.isStoryMode = false;
|
||||
PlayState.storyDifficulty = PlayState.storyDifficulty;
|
||||
LoadingState.loadAndSwitchState(new PlayState());
|
||||
PlayState.instance.clean();
|
||||
}
|
||||
|
||||
super.update(elapsed);
|
||||
|
@ -11,6 +11,8 @@ typedef SwagSection =
|
||||
var bpm:Float;
|
||||
var changeBPM:Bool;
|
||||
var altAnim:Bool;
|
||||
var p1AltAnim:Bool;
|
||||
var p2AltAnim:Bool;
|
||||
}
|
||||
|
||||
class Section
|
||||
@ -18,6 +20,8 @@ class Section
|
||||
public var startTime:Float = 0;
|
||||
public var endTime:Float = 0;
|
||||
public var sectionNotes:Array<Array<Dynamic>> = [];
|
||||
public var changeBPM:Bool = false;
|
||||
public var bpm:Float = 0;
|
||||
|
||||
public var lengthInSteps:Int = 16;
|
||||
public var typeOfSection:Int = 0;
|
||||
|
@ -21,7 +21,7 @@ class SectionRender extends FlxSprite
|
||||
if (Math.floor(h) != h)
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -113,10 +113,74 @@ class Song
|
||||
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
|
||||
{
|
||||
var swagShit:SwagSong = cast Json.parse(rawJson).song;
|
||||
swagShit.validScore = true;
|
||||
|
||||
|
||||
// conversion stuff
|
||||
for (section in swagShit.notes)
|
||||
{
|
||||
if (section.altAnim)
|
||||
section.p1AltAnim = section.altAnim;
|
||||
}
|
||||
|
||||
return swagShit;
|
||||
}
|
||||
}
|
||||
|
@ -146,10 +146,7 @@ class StoryMenuState extends MusicBeatState
|
||||
grpWeekText.add(weekThing);
|
||||
|
||||
weekThing.screenCenter(X);
|
||||
if(FlxG.save.data.antialiasing)
|
||||
{
|
||||
weekThing.antialiasing = true;
|
||||
}
|
||||
weekThing.antialiasing = FlxG.save.data.antialiasing;
|
||||
// weekThing.updateHitbox();
|
||||
|
||||
// Needs an offset thingie
|
||||
@ -161,10 +158,7 @@ class StoryMenuState extends MusicBeatState
|
||||
lock.animation.addByPrefix('lock', 'lock');
|
||||
lock.animation.play('lock');
|
||||
lock.ID = i;
|
||||
if(FlxG.save.data.antialiasing)
|
||||
{
|
||||
lock.antialiasing = true;
|
||||
}
|
||||
lock.antialiasing = FlxG.save.data.antialiasing;
|
||||
grpLocks.add(lock);
|
||||
}
|
||||
}
|
||||
@ -375,7 +369,7 @@ class StoryMenuState extends MusicBeatState
|
||||
PlayState.shits = 0;
|
||||
PlayState.goods = 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.campaignScore = 0;
|
||||
new FlxTimer().start(1, function(tmr:FlxTimer)
|
||||
|
@ -77,6 +77,7 @@ class TitleState extends MusicBeatState
|
||||
|
||||
#end
|
||||
|
||||
|
||||
|
||||
Highscore.load();
|
||||
|
||||
@ -98,8 +99,10 @@ class TitleState extends MusicBeatState
|
||||
|
||||
#if FREEPLAY
|
||||
FlxG.switchState(new FreeplayState());
|
||||
clean();
|
||||
#elseif CHARTING
|
||||
FlxG.switchState(new ChartingState());
|
||||
clean();
|
||||
#else
|
||||
#if !cpp
|
||||
new FlxTimer().start(1, function(tmr:FlxTimer)
|
||||
@ -122,7 +125,7 @@ class TitleState extends MusicBeatState
|
||||
persistentUpdate = true;
|
||||
|
||||
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.updateHitbox();
|
||||
add(bg);
|
||||
@ -134,10 +137,7 @@ class TitleState extends MusicBeatState
|
||||
logoBl = new FlxSprite(-150, -100);
|
||||
logoBl.frames = Paths.getSparrowAtlas('logoBumpin');
|
||||
}
|
||||
if(FlxG.save.data.antialiasing)
|
||||
{
|
||||
logoBl.antialiasing = true;
|
||||
}
|
||||
logoBl.antialiasing = FlxG.save.data.antialiasing;
|
||||
logoBl.animation.addByPrefix('bump', 'logo bumpin', 24, false);
|
||||
logoBl.updateHitbox();
|
||||
// logoBl.screenCenter();
|
||||
@ -147,10 +147,7 @@ class TitleState extends MusicBeatState
|
||||
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('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 = true;
|
||||
}
|
||||
gfDance.antialiasing = FlxG.save.data.antialiasing;
|
||||
add(gfDance);
|
||||
add(logoBl);
|
||||
|
||||
@ -158,10 +155,7 @@ class TitleState extends MusicBeatState
|
||||
titleText.frames = Paths.getSparrowAtlas('titleEnter');
|
||||
titleText.animation.addByPrefix('idle', "Press Enter to Begin", 24);
|
||||
titleText.animation.addByPrefix('press', "ENTER PRESSED", 24);
|
||||
if(FlxG.save.data.antialiasing)
|
||||
{
|
||||
titleText.antialiasing = true;
|
||||
}
|
||||
titleText.antialiasing = FlxG.save.data.antialiasing;
|
||||
titleText.animation.play('idle');
|
||||
titleText.updateHitbox();
|
||||
// titleText.screenCenter(X);
|
||||
@ -169,10 +163,7 @@ class TitleState extends MusicBeatState
|
||||
|
||||
var logo:FlxSprite = new FlxSprite().loadGraphic(Paths.image('logo'));
|
||||
logo.screenCenter();
|
||||
if(FlxG.save.data.antialiasing)
|
||||
{
|
||||
logo.antialiasing = true;
|
||||
}
|
||||
logo.antialiasing = FlxG.save.data.antialiasing;
|
||||
// add(logo);
|
||||
|
||||
// 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.updateHitbox();
|
||||
ngSpr.screenCenter(X);
|
||||
if(FlxG.save.data.antialiasing)
|
||||
{
|
||||
ngSpr.antialiasing = true;
|
||||
}
|
||||
ngSpr.antialiasing = FlxG.save.data.antialiasing;
|
||||
|
||||
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.currChanges = returnedData[1];
|
||||
FlxG.switchState(new OutdatedSubState());
|
||||
clean();
|
||||
}
|
||||
else
|
||||
{
|
||||
FlxG.switchState(new MainMenuState());
|
||||
clean();
|
||||
}
|
||||
}
|
||||
|
||||
http.onError = function (error) {
|
||||
trace('error: $error');
|
||||
FlxG.switchState(new MainMenuState()); // fail but we go anyway
|
||||
clean();
|
||||
}
|
||||
|
||||
http.request();
|
||||
|
88
source/Waveform.hx
Normal file
88
source/Waveform.hx
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
@ -3,6 +3,7 @@ package smTools;
|
||||
import sys.io.File;
|
||||
import haxe.Exception;
|
||||
import lime.app.Application;
|
||||
import Section.SwagSection;
|
||||
import haxe.Json;
|
||||
|
||||
class SMFile
|
||||
@ -29,6 +30,8 @@ class SMFile
|
||||
{
|
||||
_fileData = data;
|
||||
|
||||
|
||||
|
||||
// Gather header data
|
||||
var headerData = "";
|
||||
var inc = 0;
|
||||
@ -41,9 +44,16 @@ class SMFile
|
||||
|
||||
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;
|
||||
return;
|
||||
}
|
||||
@ -65,6 +75,8 @@ class SMFile
|
||||
|
||||
measures = [];
|
||||
|
||||
|
||||
|
||||
var measure = "";
|
||||
|
||||
trace(data[inc - 1]);
|
||||
@ -168,6 +180,7 @@ class SMFile
|
||||
|
||||
if (!isDouble)
|
||||
section.mustHitSection = true;
|
||||
|
||||
|
||||
@:privateAccess
|
||||
for(i in 0...measure._measure.length - 1)
|
||||
@ -184,6 +197,25 @@ class SMFile
|
||||
|
||||
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 timeInSec:Float = (seg.startTime + ((currentBeat - seg.startBeat) / (seg.bpm/60)));
|
||||
@ -263,6 +295,35 @@ class SMFile
|
||||
{
|
||||
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
|
||||
|
||||
|
@ -108,4 +108,4 @@ class SMHeader
|
||||
}
|
||||
}
|
||||
}
|
||||
#end
|
||||
#end
|
@ -1,5 +1,8 @@
|
||||
1.6.1;
|
||||
- Wiggle Shader for Lua Modcharts
|
||||
- Optimized the editor
|
||||
- Fixed HTML5 Delta Timings
|
||||
- Steps actually exist now
|
||||
1.6.2;
|
||||
- Added the ability to select and modify notes in the editor
|
||||
- Added copy and paste (with ctrl z support) while selecting notes
|
||||
- Optimized gameplay
|
||||
- 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!
|
Loading…
x
Reference in New Issue
Block a user