Merge pull request #2 from KadeDev/master
re-merging my patches branch to master and hopefully this doesnt show up on base kade engine
1
.vscode/.temp
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
TBA: tasks.json
|
21
.vscode/tasks.json
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"version": "2.0.0",
|
||||||
|
"tasks": [
|
||||||
|
{
|
||||||
|
"type": "lime",
|
||||||
|
"command": "test",
|
||||||
|
"group": {
|
||||||
|
"kind": "build",
|
||||||
|
"isDefault": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "lime",
|
||||||
|
"command": "build",
|
||||||
|
"group": {
|
||||||
|
"kind": "build",
|
||||||
|
"isDefault": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
Before Width: | Height: | Size: 560 KiB After Width: | Height: | Size: 443 KiB |
10
Project.xml
@ -7,6 +7,8 @@
|
|||||||
<!--Switch Export with Unique ApplicationID and Icon-->
|
<!--Switch Export with Unique ApplicationID and Icon-->
|
||||||
<set name="APP_ID" value="0x0100f6c013bbc000" />
|
<set name="APP_ID" value="0x0100f6c013bbc000" />
|
||||||
|
|
||||||
|
<haxedef name="LINC_LUA_RELATIVE_DYNAMIC_LIB"/>
|
||||||
|
|
||||||
<!--The flixel preloader is not accurate in Chrome. You can use it regularly if you embed the swf into a html file
|
<!--The flixel preloader is not accurate in Chrome. You can use it regularly if you embed the swf into a html file
|
||||||
or you can set the actual size of your file manually at "FlxPreloaderBase-onUpdate-bytesTotal"-->
|
or you can set the actual size of your file manually at "FlxPreloaderBase-onUpdate-bytesTotal"-->
|
||||||
<!-- <app preloader="Preloader" resizable="true" /> -->
|
<!-- <app preloader="Preloader" resizable="true" /> -->
|
||||||
@ -57,6 +59,7 @@
|
|||||||
<library name="week4" preload="true" />
|
<library name="week4" preload="true" />
|
||||||
<library name="week5" preload="true" />
|
<library name="week5" preload="true" />
|
||||||
<library name="week6" preload="true" />
|
<library name="week6" preload="true" />
|
||||||
|
<library name="sm" preload="true" />
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section if="NO_PRELOAD_ALL">
|
<section if="NO_PRELOAD_ALL">
|
||||||
@ -69,6 +72,7 @@
|
|||||||
<library name="week4" preload="false" />
|
<library name="week4" preload="false" />
|
||||||
<library name="week5" preload="false" />
|
<library name="week5" preload="false" />
|
||||||
<library name="week6" preload="false" />
|
<library name="week6" preload="false" />
|
||||||
|
<library name="sm" preload="false" />
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<assets path="assets/songs" library="songs" exclude="*.ogg" if="web"/>
|
<assets path="assets/songs" library="songs" exclude="*.ogg" if="web"/>
|
||||||
@ -89,7 +93,9 @@
|
|||||||
<assets path="assets/week5" library="week5" exclude="*.mp3" unless="web"/>
|
<assets path="assets/week5" library="week5" exclude="*.mp3" unless="web"/>
|
||||||
<assets path="assets/week6" library="week6" exclude="*.ogg" if="web"/>
|
<assets path="assets/week6" library="week6" exclude="*.ogg" if="web"/>
|
||||||
<assets path="assets/week6" library="week6" exclude="*.mp3" unless="web"/>
|
<assets path="assets/week6" library="week6" exclude="*.mp3" unless="web"/>
|
||||||
|
<assets path="assets/sm" library="sm" exclude="*.ogg" if="web"/>
|
||||||
|
<assets path="assets/sm" library="sm" exclude="*.mp3" unless="web"/>
|
||||||
|
|
||||||
<assets path='example_mods' rename='mods' embed='false'/>
|
<assets path='example_mods' rename='mods' embed='false'/>
|
||||||
<assets path='art/readme.txt' rename='do NOT readme.txt' />
|
<assets path='art/readme.txt' rename='do NOT readme.txt' />
|
||||||
<assets path='LICENSE' rename='LICENSE.txt' />
|
<assets path='LICENSE' rename='LICENSE.txt' />
|
||||||
@ -160,6 +166,8 @@
|
|||||||
<!--Disable the Flixel core debugger. Automatically gets set whenever you compile in release mode!-->
|
<!--Disable the Flixel core debugger. Automatically gets set whenever you compile in release mode!-->
|
||||||
<haxedef name="FLX_NO_DEBUG" unless="debug" />
|
<haxedef name="FLX_NO_DEBUG" unless="debug" />
|
||||||
|
|
||||||
|
<haxedef name="HXCPP_GC_BIG_BLOCKS"/>
|
||||||
|
|
||||||
<!--Enable this for Nape release builds for a serious peformance improvement-->
|
<!--Enable this for Nape release builds for a serious peformance improvement-->
|
||||||
<haxedef name="NAPE_RELEASE_BUILD" unless="debug" />
|
<haxedef name="NAPE_RELEASE_BUILD" unless="debug" />
|
||||||
|
|
||||||
|
29
README.md
@ -24,17 +24,23 @@ If you're looking for documentation, changelogs, or guides, you can find those o
|
|||||||
|
|
||||||
# Previews ([skip](#features))
|
# Previews ([skip](#features))
|
||||||
|
|
||||||
 
|

|
||||||
|
|
||||||

|

|
||||||
|
|
||||||

|

|
||||||
|
|
||||||

|

|
||||||
|
|
||||||

|

|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
# Features
|
# Features
|
||||||
|
|
||||||
@ -43,12 +49,15 @@ If you're looking for documentation, changelogs, or guides, you can find those o
|
|||||||
- **More information during gameplay**
|
- **More information during gameplay**
|
||||||
- While you're playing, we show you information about how you're doing, such as your accuracy, combo break count, notes per second, and your grade/rating.
|
- While you're playing, we show you information about how you're doing, such as your accuracy, combo break count, notes per second, and your grade/rating.
|
||||||
- **Customizable keybinds**
|
- **Customizable keybinds**
|
||||||
- Instead of being forced to use WASD and the arrow keys, you can customize the keybinds to any keys you want!
|
- Instead of being forced to use WASD and the arrow keys, you can set any keybinds you want!
|
||||||
- **Replays** (in beta)
|
- **Replays** (in beta)
|
||||||
- Have you ever gotten a crazy score but didn't record? The replay system solves that: it automatically saves a "replay" of your gameplay every time you complete a song, which you can play back inside of the game.
|
- Have you ever gotten a crazy score but didn't record? The replay system solves that: it automatically saves a "replay" of your gameplay every time you complete a song, which you can play back inside of the game.
|
||||||
- Replays just store information about what you're doing, they don't actually record the screen -- so they take up way less space on your disk than videos.
|
- Replays just store information about what you're doing, they don't actually record the screen -- so they take up way less space on your disk than videos.
|
||||||
- **Audio offset**
|
- **Audio offset**
|
||||||
- If your headphones are delayed, you can set an offset in the options menu to line the game up with the delay and play with synced audio like intended.
|
- If your speakers or headphones are delayed, you can set an offset in the options menu to line the game up with the delay and play with synced audio like intended!
|
||||||
|
- **And much, much more!**
|
||||||
|
- There's so much more in store than just what's listed here! If you can imagine a quality of life feature, it's probably
|
||||||
|
either already included in Kade Engine or is being worked on!
|
||||||
|
|
||||||
# Credits
|
# Credits
|
||||||
### Friday Night Funkin'
|
### Friday Night Funkin'
|
||||||
@ -65,4 +74,6 @@ This game was made with love to Newgrounds and its community. Extra love to Tom
|
|||||||
### Shoutouts
|
### Shoutouts
|
||||||
- [GWebDev](https://github.com/GrowtopiaFli) - Video Code
|
- [GWebDev](https://github.com/GrowtopiaFli) - Video Code
|
||||||
- [Rozebud](https://github.com/ThatRozebudDude) - Ideas (that I stole)
|
- [Rozebud](https://github.com/ThatRozebudDude) - Ideas (that I stole)
|
||||||
- [Puyo](https://github.com/daniel11420) - Setting up appveyor and a lot of other help
|
- [Puyo](https://github.com/puyoxyz) - Setting up appveyor and a lot of other help
|
||||||
|
- [Smokey](https://github.com/Smokey555) - telling me that I should do the tricky asset loading
|
||||||
|
- [Poco](https://github.com/poco0317) - math degree (aka most of the fucking math in this project)
|
||||||
|
@ -9,7 +9,7 @@ install:
|
|||||||
- cd /home/appveyor
|
- cd /home/appveyor
|
||||||
- sudo add-apt-repository ppa:haxe/releases -y
|
- sudo add-apt-repository ppa:haxe/releases -y
|
||||||
- sudo apt update
|
- sudo apt update
|
||||||
- sudo apt install neko tar -y
|
- sudo apt install neko tar gcc-7 g++-7 gcc-7-multilib g++-7-multilib -y
|
||||||
- wget https://github.com/HaxeFoundation/haxe/releases/download/4.1.5/haxe-4.1.5-linux64.tar.gz
|
- wget https://github.com/HaxeFoundation/haxe/releases/download/4.1.5/haxe-4.1.5-linux64.tar.gz
|
||||||
- mkdir $HAXE_INSTALLDIR
|
- mkdir $HAXE_INSTALLDIR
|
||||||
- tar -xf haxe-4.1.5-linux64.tar.gz -C $HAXE_INSTALLDIR
|
- tar -xf haxe-4.1.5-linux64.tar.gz -C $HAXE_INSTALLDIR
|
||||||
@ -29,8 +29,9 @@ install:
|
|||||||
- haxelib git polymod https://github.com/larsiusprime/polymod.git
|
- haxelib git polymod https://github.com/larsiusprime/polymod.git
|
||||||
- haxelib git discord_rpc https://github.com/Aidan63/linc_discord-rpc
|
- haxelib git discord_rpc https://github.com/Aidan63/linc_discord-rpc
|
||||||
- haxelib git extension-webm https://github.com/KadeDev/extension-webm
|
- haxelib git extension-webm https://github.com/KadeDev/extension-webm
|
||||||
- lime rebuild extension-webm linux
|
- haxelib run lime rebuild extension-webm linux
|
||||||
- haxelib install linc_luajit
|
- haxelib install linc_luajit
|
||||||
|
- haxelib install actuate
|
||||||
- haxelib list
|
- haxelib list
|
||||||
- cd /home/appveyor/projects/kade-engine-linux
|
- cd /home/appveyor/projects/kade-engine-linux
|
||||||
|
|
||||||
|
@ -29,8 +29,9 @@ install:
|
|||||||
- haxelib git polymod https://github.com/larsiusprime/polymod.git
|
- haxelib git polymod https://github.com/larsiusprime/polymod.git
|
||||||
- haxelib git discord_rpc https://github.com/Aidan63/linc_discord-rpc
|
- haxelib git discord_rpc https://github.com/Aidan63/linc_discord-rpc
|
||||||
- haxelib git extension-webm https://github.com/KadeDev/extension-webm
|
- haxelib git extension-webm https://github.com/KadeDev/extension-webm
|
||||||
- lime rebuild extension-webm macos
|
- haxelib run lime rebuild extension-webm macos
|
||||||
- haxelib install linc_luajit
|
- haxelib install linc_luajit
|
||||||
|
- haxelib install actuate
|
||||||
- haxelib list
|
- haxelib list
|
||||||
- cd /Users/appveyor/projects/kade-engine-macos
|
- cd /Users/appveyor/projects/kade-engine-macos
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@ install:
|
|||||||
- haxelib setup "%HAXELIB_ROOT%"
|
- haxelib setup "%HAXELIB_ROOT%"
|
||||||
# Install project dependencies
|
# Install project dependencies
|
||||||
- haxelib install lime 7.9.0
|
- haxelib install lime 7.9.0
|
||||||
|
- RefreshEnv
|
||||||
- haxelib install openfl
|
- haxelib install openfl
|
||||||
- haxelib install flixel
|
- haxelib install flixel
|
||||||
- haxelib run lime setup flixel
|
- haxelib run lime setup flixel
|
||||||
@ -32,7 +33,13 @@ install:
|
|||||||
- haxelib git faxe https://github.com/uhrobots/faxe
|
- haxelib git faxe https://github.com/uhrobots/faxe
|
||||||
- haxelib git polymod https://github.com/larsiusprime/polymod.git
|
- haxelib git polymod https://github.com/larsiusprime/polymod.git
|
||||||
- haxelib git discord_rpc https://github.com/Aidan63/linc_discord-rpc
|
- haxelib git discord_rpc https://github.com/Aidan63/linc_discord-rpc
|
||||||
|
- haxelib git extension-webm https://github.com/KadeDev/extension-webm
|
||||||
|
- haxelib run lime rebuild extension-webm windows
|
||||||
- haxelib install linc_luajit
|
- haxelib install linc_luajit
|
||||||
|
- haxelib install actuate
|
||||||
|
#- haxelib git extension-webm https://github.com/KadeDev/extension-webm
|
||||||
|
#- haxelib run lime rebuild extension-webm windows
|
||||||
|
#why here's dublicate lmao
|
||||||
- haxelib list
|
- haxelib list
|
||||||
|
|
||||||
# No tests idk lol
|
# No tests idk lol
|
||||||
|
BIN
art/readme/KadeEngineDialogue.png
Normal file
After Width: | Height: | Size: 243 KiB |
BIN
art/readme/KadeEngineFreeplay.png
Normal file
After Width: | Height: | Size: 1.3 MiB |
BIN
art/readme/KadeEngineOptions.png
Normal file
After Width: | Height: | Size: 1.3 MiB |
BIN
art/readme/KadeEnginePauseScreen.png
Normal file
After Width: | Height: | Size: 348 KiB |
BIN
art/readme/KadeEnginePixelGameplay.png
Normal file
After Width: | Height: | Size: 271 KiB |
BIN
art/readme/KadeEngineReplayLoader.png
Normal file
After Width: | Height: | Size: 1.3 MiB |
BIN
art/readme/KadeEngineResultsScreen.png
Normal file
After Width: | Height: | Size: 753 KiB |
BIN
art/readme/KadeEngineTitleScreen.png
Normal file
After Width: | Height: | Size: 942 KiB |
BIN
art/readme/KadeEngineWeekSelect.png
Normal file
After Width: | Height: | Size: 458 KiB |
@ -1,4 +1,4 @@
|
|||||||
Tutorial:gf:1
|
Tutorial:gf:0
|
||||||
Bopeebo:dad:1
|
Bopeebo:dad:1
|
||||||
Fresh:dad:1
|
Fresh:dad:1
|
||||||
Dad Battle:dad:1
|
Dad Battle:dad:1
|
||||||
|
1
assets/preload/data/test/test.json
Normal file
7
assets/preload/data/weekNames.txt
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
Tutorial
|
||||||
|
Daddy Dearest
|
||||||
|
Spooky Month
|
||||||
|
PICO
|
||||||
|
MOMMY MUST MURDER
|
||||||
|
RED SNOW
|
||||||
|
Hating Simulator ft. Moawling
|
@ -13,10 +13,10 @@
|
|||||||
<SubTexture name="Week 4 press0001" x="365" y="275" width="355" height="89"/>
|
<SubTexture name="Week 4 press0001" x="365" y="275" width="355" height="89"/>
|
||||||
<SubTexture name="Week 60000" x="0" y="374" width="359" height="92"/>
|
<SubTexture name="Week 60000" x="0" y="374" width="359" height="92"/>
|
||||||
<SubTexture name="Week 60001" x="369" y="374" width="359" height="92"/>
|
<SubTexture name="Week 60001" x="369" y="374" width="359" height="92"/>
|
||||||
<SubTexture name="arrow left0000" x="738" y="374" width="48" height="85"/>
|
<SubTexture name="arrow push left0000" x="738" y="374" width="48" height="85"/>
|
||||||
<SubTexture name="arrow push left0000" x="796" y="374" width="42" height="75"/>
|
<SubTexture name="arrow left0000" x="796" y="374" width="42" height="75"/>
|
||||||
<SubTexture name="arrow push right0000" x="848" y="374" width="41" height="74"/>
|
<SubTexture name="arrow right0000" x="848" y="374" width="41" height="74"/>
|
||||||
<SubTexture name="arrow right0000" x="899" y="374" width="47" height="85"/>
|
<SubTexture name="arrow push right0000" x="899" y="374" width="47" height="85"/>
|
||||||
<SubTexture name="lock0000" x="956" y="374" width="67" height="93"/>
|
<SubTexture name="lock0000" x="956" y="374" width="67" height="93"/>
|
||||||
<SubTexture name="tutorial selected0000" x="0" y="477" width="443" height="82"/>
|
<SubTexture name="tutorial selected0000" x="0" y="477" width="443" height="82"/>
|
||||||
<SubTexture name="tutorial selected0001" x="453" y="477" width="443" height="82"/>
|
<SubTexture name="tutorial selected0001" x="453" y="477" width="443" height="82"/>
|
||||||
|
Before Width: | Height: | Size: 144 KiB |
BIN
assets/preload/images/icons/icon-bf-old.png
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
assets/preload/images/icons/icon-bf-pixel.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
assets/preload/images/icons/icon-bf.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
assets/preload/images/icons/icon-dad.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
assets/preload/images/icons/icon-face.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
BIN
assets/preload/images/icons/icon-gf.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
assets/preload/images/icons/icon-mom.png
Normal file
After Width: | Height: | Size: 9.3 KiB |
BIN
assets/preload/images/icons/icon-monster.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
assets/preload/images/icons/icon-parents.png
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
assets/preload/images/icons/icon-pico.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
assets/preload/images/icons/icon-senpai.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
assets/preload/images/icons/icon-sm.png
Normal file
After Width: | Height: | Size: 7.4 KiB |
BIN
assets/preload/images/icons/icon-spirit.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
assets/preload/images/icons/icon-spooky.png
Normal file
After Width: | Height: | Size: 7.0 KiB |
BIN
assets/preload/images/icons/icon-tankman.png
Normal file
After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 8.1 KiB |
Before Width: | Height: | Size: 700 KiB After Width: | Height: | Size: 696 KiB |
@ -1,53 +1,92 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<TextureAtlas imagePath="NOTE_assets.png">
|
<TextureAtlas imagePath="NOTE_assets.png">
|
||||||
<!-- Created with Adobe Animate version 20.0.0.17400 -->
|
<!-- Created with Adobe Animate version 21.0.0.35450 -->
|
||||||
<!-- http://www.adobe.com/products/animate.html -->
|
<!-- http://www.adobe.com/products/animate.html -->
|
||||||
<SubTexture name="arrowDOWN0000" x="0" y="235" width="157" height="153"/>
|
<SubTexture name="arrowDOWN0000" x="10" y="255" width="157" height="154"/>
|
||||||
<SubTexture name="arrowLEFT0000" x="310" y="235" width="153" height="157"/>
|
<SubTexture name="arrowLEFT0000" x="672" y="416" width="154" height="157"/>
|
||||||
<SubTexture name="arrowRIGHT0000" x="157" y="235" width="153" height="157"/>
|
<SubTexture name="arrowRIGHT0000" x="10" y="419" width="154" height="157"/>
|
||||||
<SubTexture name="arrowUP0000" x="784" y="232" width="157" height="153"/>
|
<SubTexture name="arrowUP0000" x="177" y="255" width="157" height="154"/>
|
||||||
<SubTexture name="blue0000" x="1850" y="154" width="157" height="154"/>
|
<SubTexture name="blue alone0000" x="506" y="252" width="157" height="154"/>
|
||||||
<SubTexture name="blue hold end0000" x="1170" y="447" width="50" height="64"/>
|
<SubTexture name="blue hold0000" x="1940" y="306" width="50" height="44"/>
|
||||||
<SubTexture name="blue hold piece0000" x="1370" y="449" width="50" height="44"/>
|
<SubTexture name="blue tail0000" x="1940" y="10" width="50" height="64"/>
|
||||||
<SubTexture name="down confirm0000" x="0" y="0" width="238" height="235"/>
|
<SubTexture name="down confirm0000" x="10" y="10" width="238" height="235"/>
|
||||||
<SubTexture name="down confirm0001" x="238" y="0" width="238" height="235"/>
|
<SubTexture name="down confirm0001" x="258" y="10" width="238" height="235"/>
|
||||||
<SubTexture name="down confirm0002" x="1176" y="230" width="219" height="208" frameX="-6" frameY="-12" frameWidth="238" frameHeight="235"/>
|
<SubTexture name="down confirm0002" x="1236" y="250" width="220" height="217" frameX="-6" frameY="-12" frameWidth="238" frameHeight="235"/>
|
||||||
<SubTexture name="down confirm0003" x="1176" y="230" width="219" height="208" frameX="-6" frameY="-12" frameWidth="238" frameHeight="235"/>
|
<SubTexture name="down confirm0003" x="1236" y="250" width="220" height="217" frameX="-6" frameY="-12" frameWidth="238" frameHeight="235"/>
|
||||||
<SubTexture name="down press0000" x="149" y="392" width="142" height="140" frameX="-4" frameY="-2" frameWidth="149" frameHeight="146"/>
|
<SubTexture name="down press0000" x="1150" y="477" width="142" height="140" frameX="-4" frameY="-2" frameWidth="149" frameHeight="146"/>
|
||||||
<SubTexture name="down press0001" x="149" y="392" width="142" height="140" frameX="-4" frameY="-2" frameWidth="149" frameHeight="146"/>
|
<SubTexture name="down press0001" x="1150" y="477" width="142" height="140" frameX="-4" frameY="-2" frameWidth="149" frameHeight="146"/>
|
||||||
<SubTexture name="down press0002" x="0" y="388" width="149" height="146"/>
|
<SubTexture name="down press0002" x="344" y="255" width="149" height="146"/>
|
||||||
<SubTexture name="down press0003" x="0" y="388" width="149" height="146"/>
|
<SubTexture name="down press0003" x="344" y="255" width="149" height="146"/>
|
||||||
<SubTexture name="green0000" x="1850" y="0" width="157" height="154"/>
|
<SubTexture name="green alone0000" x="673" y="252" width="157" height="154"/>
|
||||||
<SubTexture name="green hold end0000" x="1120" y="442" width="50" height="64"/>
|
<SubTexture name="green hold0000" x="1940" y="360" width="50" height="44"/>
|
||||||
<SubTexture name="green hold piece0000" x="1320" y="447" width="50" height="44"/>
|
<SubTexture name="green tail0000" x="1940" y="84" width="50" height="64"/>
|
||||||
<SubTexture name="left confirm0000" x="948" y="0" width="228" height="231"/>
|
<SubTexture name="left confirm0000" x="998" y="10" width="228" height="231"/>
|
||||||
<SubTexture name="left confirm0001" x="1402" y="228" width="218" height="221" frameX="-5" frameY="-5" frameWidth="228" frameHeight="231"/>
|
<SubTexture name="left confirm0001" x="1472" y="248" width="218" height="221" frameX="-5" frameY="-5" frameWidth="228" frameHeight="231"/>
|
||||||
<SubTexture name="left confirm0002" x="1402" y="0" width="225" height="221" frameX="-2" frameY="-1" frameWidth="228" frameHeight="231"/>
|
<SubTexture name="left confirm0002" x="1472" y="10" width="225" height="228" frameX="-2" frameY="-1" frameWidth="228" frameHeight="231"/>
|
||||||
<SubTexture name="left confirm0003" x="1402" y="0" width="225" height="221" frameX="-2" frameY="-1" frameWidth="228" frameHeight="231"/>
|
<SubTexture name="left confirm0003" x="1472" y="10" width="225" height="228" frameX="-2" frameY="-1" frameWidth="228" frameHeight="231"/>
|
||||||
<SubTexture name="left press0000" x="291" y="392" width="140" height="142" frameX="-3" frameY="-3" frameWidth="146" frameHeight="149"/>
|
<SubTexture name="left press0000" x="1302" y="477" width="140" height="142" frameX="-3" frameY="-3" frameWidth="146" frameHeight="149"/>
|
||||||
<SubTexture name="left press0001" x="291" y="392" width="140" height="142" frameX="-3" frameY="-3" frameWidth="146" frameHeight="149"/>
|
<SubTexture name="left press0001" x="1302" y="477" width="140" height="142" frameX="-3" frameY="-3" frameWidth="146" frameHeight="149"/>
|
||||||
<SubTexture name="left press0002" x="463" y="389" width="146" height="149"/>
|
<SubTexture name="left press0002" x="840" y="413" width="146" height="149"/>
|
||||||
<SubTexture name="left press0003" x="463" y="389" width="146" height="149"/>
|
<SubTexture name="left press0003" x="840" y="413" width="146" height="149"/>
|
||||||
<SubTexture name="pruple end hold0000" x="1220" y="447" width="50" height="64"/>
|
<SubTexture name="left press0004" x="840" y="413" width="146" height="149"/>
|
||||||
<SubTexture name="purple0000" x="630" y="232" width="154" height="157"/>
|
<SubTexture name="left press0005" x="840" y="413" width="146" height="149"/>
|
||||||
<SubTexture name="purple hold piece0000" x="1420" y="449" width="50" height="44"/>
|
<SubTexture name="left press0006" x="840" y="413" width="146" height="149"/>
|
||||||
<SubTexture name="red0000" x="476" y="232" width="154" height="157"/>
|
<SubTexture name="left press0007" x="840" y="413" width="146" height="149"/>
|
||||||
<SubTexture name="red hold end0000" x="1070" y="442" width="50" height="64"/>
|
<SubTexture name="left press0008" x="840" y="413" width="146" height="149"/>
|
||||||
<SubTexture name="red hold piece0000" x="1270" y="447" width="50" height="44"/>
|
<SubTexture name="left press0009" x="840" y="413" width="146" height="149"/>
|
||||||
<SubTexture name="right confirm0000" x="1627" y="0" width="223" height="226" frameX="-1" frameY="-3" frameWidth="226" frameHeight="230"/>
|
<SubTexture name="left press0010" x="840" y="413" width="146" height="149"/>
|
||||||
<SubTexture name="right confirm0001" x="1627" y="226" width="223" height="226" frameX="-1" frameY="-3" frameWidth="226" frameHeight="230"/>
|
<SubTexture name="left press0011" x="840" y="413" width="146" height="149"/>
|
||||||
<SubTexture name="right confirm0002" x="1176" y="0" width="226" height="230"/>
|
<SubTexture name="left press0012" x="840" y="413" width="146" height="149"/>
|
||||||
<SubTexture name="right confirm0003" x="1176" y="0" width="226" height="230"/>
|
<SubTexture name="left press0013" x="840" y="413" width="146" height="149"/>
|
||||||
<SubTexture name="right press0000" x="932" y="442" width="138" height="141" frameX="-3" frameY="-7" frameWidth="148" frameHeight="151"/>
|
<SubTexture name="left press0014" x="840" y="413" width="146" height="149"/>
|
||||||
<SubTexture name="right press0001" x="932" y="442" width="138" height="141" frameX="-3" frameY="-7" frameWidth="148" frameHeight="151"/>
|
<SubTexture name="left press0015" x="840" y="413" width="146" height="149"/>
|
||||||
<SubTexture name="right press0002" x="784" y="385" width="148" height="151"/>
|
<SubTexture name="left press0016" x="840" y="413" width="146" height="149"/>
|
||||||
<SubTexture name="right press0003" x="784" y="385" width="148" height="151"/>
|
<SubTexture name="left press0017" x="840" y="413" width="146" height="149"/>
|
||||||
<SubTexture name="up confirm0000" x="476" y="0" width="236" height="232"/>
|
<SubTexture name="left press0018" x="840" y="413" width="146" height="149"/>
|
||||||
<SubTexture name="up confirm0001" x="712" y="0" width="236" height="232"/>
|
<SubTexture name="left press0019" x="840" y="413" width="146" height="149"/>
|
||||||
<SubTexture name="up confirm0002" x="948" y="231" width="214" height="206" frameX="-11" frameY="-10" frameWidth="236" frameHeight="232"/>
|
<SubTexture name="purple alone0000" x="344" y="416" width="154" height="157"/>
|
||||||
<SubTexture name="up confirm0003" x="948" y="231" width="214" height="206" frameX="-11" frameY="-10" frameWidth="236" frameHeight="232"/>
|
<SubTexture name="purple hold0000" x="1940" y="414" width="50" height="44"/>
|
||||||
<SubTexture name="up press0000" x="609" y="389" width="144" height="141" frameX="-5" frameY="-4" frameWidth="153" frameHeight="150"/>
|
<SubTexture name="purple tail0000" x="1940" y="158" width="50" height="64"/>
|
||||||
<SubTexture name="up press0001" x="609" y="389" width="144" height="141" frameX="-5" frameY="-4" frameWidth="153" frameHeight="150"/>
|
<SubTexture name="red alone0000" x="508" y="416" width="154" height="157"/>
|
||||||
<SubTexture name="up press0002" x="1850" y="308" width="153" height="150"/>
|
<SubTexture name="red hold0000" x="1940" y="468" width="50" height="44"/>
|
||||||
<SubTexture name="up press0003" x="1850" y="308" width="153" height="150"/>
|
<SubTexture name="red tail0000" x="1940" y="232" width="50" height="64"/>
|
||||||
|
<SubTexture name="right confirm0000" x="1707" y="10" width="223" height="226" frameX="-1" frameY="-3" frameWidth="226" frameHeight="230"/>
|
||||||
|
<SubTexture name="right confirm0001" x="1707" y="246" width="223" height="226" frameX="-1" frameY="-3" frameWidth="226" frameHeight="230"/>
|
||||||
|
<SubTexture name="right confirm0002" x="1236" y="10" width="226" height="230"/>
|
||||||
|
<SubTexture name="right confirm0003" x="1236" y="10" width="226" height="230"/>
|
||||||
|
<SubTexture name="right press0000" x="1452" y="479" width="138" height="141" frameX="-3" frameY="-7" frameWidth="148" frameHeight="151"/>
|
||||||
|
<SubTexture name="right press0001" x="1452" y="479" width="138" height="141" frameX="-3" frameY="-7" frameWidth="148" frameHeight="151"/>
|
||||||
|
<SubTexture name="right press0002" x="840" y="252" width="148" height="151"/>
|
||||||
|
<SubTexture name="right press0003" x="840" y="252" width="148" height="151"/>
|
||||||
|
<SubTexture name="right press0004" x="840" y="252" width="148" height="151"/>
|
||||||
|
<SubTexture name="right press0005" x="840" y="252" width="148" height="151"/>
|
||||||
|
<SubTexture name="right press0006" x="840" y="252" width="148" height="151"/>
|
||||||
|
<SubTexture name="right press0007" x="840" y="252" width="148" height="151"/>
|
||||||
|
<SubTexture name="right press0008" x="840" y="252" width="148" height="151"/>
|
||||||
|
<SubTexture name="right press0009" x="840" y="252" width="148" height="151"/>
|
||||||
|
<SubTexture name="right press0010" x="840" y="252" width="148" height="151"/>
|
||||||
|
<SubTexture name="right press0011" x="840" y="252" width="148" height="151"/>
|
||||||
|
<SubTexture name="right press0012" x="840" y="252" width="148" height="151"/>
|
||||||
|
<SubTexture name="right press0013" x="840" y="252" width="148" height="151"/>
|
||||||
|
<SubTexture name="right press0014" x="840" y="252" width="148" height="151"/>
|
||||||
|
<SubTexture name="right press0015" x="840" y="252" width="148" height="151"/>
|
||||||
|
<SubTexture name="right press0016" x="840" y="252" width="148" height="151"/>
|
||||||
|
<SubTexture name="right press0017" x="840" y="252" width="148" height="151"/>
|
||||||
|
<SubTexture name="right press0018" x="840" y="252" width="148" height="151"/>
|
||||||
|
<SubTexture name="right press0019" x="840" y="252" width="148" height="151"/>
|
||||||
|
<SubTexture name="right press0020" x="840" y="252" width="148" height="151"/>
|
||||||
|
<SubTexture name="right press0021" x="840" y="252" width="148" height="151"/>
|
||||||
|
<SubTexture name="right press0022" x="840" y="252" width="148" height="151"/>
|
||||||
|
<SubTexture name="right press0023" x="840" y="252" width="148" height="151"/>
|
||||||
|
<SubTexture name="right press0024" x="840" y="252" width="148" height="151"/>
|
||||||
|
<SubTexture name="right press0025" x="840" y="252" width="148" height="151"/>
|
||||||
|
<SubTexture name="right press0026" x="840" y="252" width="148" height="151"/>
|
||||||
|
<SubTexture name="up confirm0000" x="506" y="10" width="236" height="232"/>
|
||||||
|
<SubTexture name="up confirm0001" x="752" y="10" width="236" height="232"/>
|
||||||
|
<SubTexture name="up confirm0002" x="998" y="251" width="214" height="211" frameX="-11" frameY="-10" frameWidth="236" frameHeight="232"/>
|
||||||
|
<SubTexture name="up confirm0003" x="998" y="251" width="214" height="211" frameX="-11" frameY="-10" frameWidth="236" frameHeight="232"/>
|
||||||
|
<SubTexture name="up press0000" x="996" y="472" width="144" height="141" frameX="-5" frameY="-4" frameWidth="153" frameHeight="150"/>
|
||||||
|
<SubTexture name="up press0001" x="996" y="472" width="144" height="141" frameX="-5" frameY="-4" frameWidth="153" frameHeight="150"/>
|
||||||
|
<SubTexture name="up press0002" x="174" y="419" width="153" height="150"/>
|
||||||
|
<SubTexture name="up press0003" x="174" y="419" width="153" height="150"/>
|
||||||
</TextureAtlas>
|
</TextureAtlas>
|
||||||
|
Before Width: | Height: | Size: 1.5 MiB After Width: | Height: | Size: 726 KiB |
@ -1,109 +1,109 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<TextureAtlas imagePath="Monster_Assets.png">
|
<TextureAtlas imagePath="Monster_Assets.png">
|
||||||
<!-- Created with Adobe Animate version 20.0.0.17400 -->
|
<!-- Created with Adobe Animate version 21.0.0.35450 -->
|
||||||
<!-- http://www.adobe.com/products/animate.html -->
|
<!-- http://www.adobe.com/products/animate.html -->
|
||||||
<SubTexture name="Monster Right note0000" x="0" y="0" width="375" height="674" frameX="-4" frameY="0" frameWidth="381" frameHeight="674"/>
|
<SubTexture name="Monster Right note0000" x="0" y="0" width="375" height="691" frameX="-4" frameY="0" frameWidth="381" frameHeight="691"/>
|
||||||
<SubTexture name="Monster Right note0001" x="0" y="0" width="375" height="674" frameX="-4" frameY="0" frameWidth="381" frameHeight="674"/>
|
<SubTexture name="Monster Right note0001" x="0" y="0" width="375" height="691" frameX="-4" frameY="0" frameWidth="381" frameHeight="691"/>
|
||||||
<SubTexture name="Monster Right note0002" x="385" y="0" width="381" height="671" frameX="0" frameY="0" frameWidth="381" frameHeight="674"/>
|
<SubTexture name="Monster Right note0002" x="385" y="0" width="381" height="680" frameX="0" frameY="-8" frameWidth="381" frameHeight="691"/>
|
||||||
<SubTexture name="Monster Right note0003" x="385" y="0" width="381" height="671" frameX="0" frameY="0" frameWidth="381" frameHeight="674"/>
|
<SubTexture name="Monster Right note0003" x="776" y="0" width="381" height="679" frameX="0" frameY="-9" frameWidth="381" frameHeight="691"/>
|
||||||
<SubTexture name="Monster Right note0004" x="776" y="0" width="381" height="671" frameX="0" frameY="0" frameWidth="381" frameHeight="674"/>
|
<SubTexture name="Monster Right note0004" x="1167" y="0" width="381" height="680" frameX="0" frameY="-8" frameWidth="381" frameHeight="691"/>
|
||||||
<SubTexture name="Monster Right note0005" x="776" y="0" width="381" height="671" frameX="0" frameY="0" frameWidth="381" frameHeight="674"/>
|
<SubTexture name="Monster Right note0005" x="1558" y="0" width="381" height="679" frameX="0" frameY="-9" frameWidth="381" frameHeight="691"/>
|
||||||
<SubTexture name="Monster Right note0006" x="1167" y="0" width="381" height="671" frameX="0" frameY="0" frameWidth="381" frameHeight="674"/>
|
<SubTexture name="Monster Right note0006" x="1949" y="0" width="381" height="680" frameX="0" frameY="-8" frameWidth="381" frameHeight="691"/>
|
||||||
<SubTexture name="Monster Right note0007" x="1167" y="0" width="381" height="671" frameX="0" frameY="0" frameWidth="381" frameHeight="674"/>
|
<SubTexture name="Monster Right note0007" x="2340" y="0" width="381" height="679" frameX="0" frameY="-9" frameWidth="381" frameHeight="691"/>
|
||||||
<SubTexture name="Monster Right note0008" x="1558" y="0" width="381" height="671" frameX="0" frameY="0" frameWidth="381" frameHeight="674"/>
|
<SubTexture name="Monster Right note0008" x="2731" y="0" width="381" height="680" frameX="0" frameY="-8" frameWidth="381" frameHeight="691"/>
|
||||||
<SubTexture name="Monster Right note0009" x="1558" y="0" width="381" height="671" frameX="0" frameY="0" frameWidth="381" frameHeight="674"/>
|
<SubTexture name="Monster Right note0009" x="3122" y="0" width="381" height="679" frameX="0" frameY="-9" frameWidth="381" frameHeight="691"/>
|
||||||
<SubTexture name="Monster Right note0010" x="1949" y="0" width="381" height="671" frameX="0" frameY="0" frameWidth="381" frameHeight="674"/>
|
<SubTexture name="Monster Right note0010" x="3513" y="0" width="381" height="680" frameX="0" frameY="-8" frameWidth="381" frameHeight="691"/>
|
||||||
<SubTexture name="Monster Right note0011" x="1949" y="0" width="381" height="671" frameX="0" frameY="0" frameWidth="381" frameHeight="674"/>
|
<SubTexture name="Monster Right note0011" x="3904" y="0" width="381" height="679" frameX="0" frameY="-9" frameWidth="381" frameHeight="691"/>
|
||||||
<SubTexture name="Monster Right note0012" x="2340" y="0" width="381" height="671" frameX="0" frameY="0" frameWidth="381" frameHeight="674"/>
|
<SubTexture name="Monster Right note0012" x="4295" y="0" width="381" height="680" frameX="0" frameY="-8" frameWidth="381" frameHeight="691"/>
|
||||||
<SubTexture name="Monster Right note0013" x="2340" y="0" width="381" height="671" frameX="0" frameY="0" frameWidth="381" frameHeight="674"/>
|
<SubTexture name="Monster Right note0013" x="4686" y="0" width="381" height="679" frameX="0" frameY="-9" frameWidth="381" frameHeight="691"/>
|
||||||
<SubTexture name="Monster Right note0014" x="385" y="0" width="381" height="671" frameX="0" frameY="0" frameWidth="381" frameHeight="674"/>
|
<SubTexture name="Monster Right note0014" x="385" y="0" width="381" height="680" frameX="0" frameY="-8" frameWidth="381" frameHeight="691"/>
|
||||||
<SubTexture name="Monster left note0000" x="2731" y="0" width="460" height="671" frameX="-15" frameY="0" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0000" x="5077" y="0" width="460" height="675" frameX="-15" frameY="0" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0001" x="2731" y="0" width="460" height="671" frameX="-15" frameY="0" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0001" x="5077" y="0" width="460" height="675" frameX="-15" frameY="0" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0002" x="3201" y="0" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0002" x="5547" y="0" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0003" x="3201" y="0" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0003" x="6028" y="0" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0004" x="0" y="684" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0004" x="6509" y="0" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0005" x="0" y="684" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0005" x="6990" y="0" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0006" x="481" y="684" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0006" x="7471" y="0" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0007" x="481" y="684" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0007" x="0" y="701" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0008" x="962" y="684" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0008" x="481" y="701" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0009" x="962" y="684" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0009" x="962" y="701" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0010" x="1443" y="684" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0010" x="1443" y="701" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0011" x="1443" y="684" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0011" x="1924" y="701" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0012" x="1924" y="684" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0012" x="2405" y="701" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0013" x="1924" y="684" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0013" x="2886" y="701" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0014" x="3201" y="0" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0014" x="5547" y="0" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0015" x="3201" y="0" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0015" x="6028" y="0" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0016" x="0" y="684" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0016" x="6509" y="0" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0017" x="0" y="684" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0017" x="6990" y="0" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0018" x="481" y="684" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0018" x="7471" y="0" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="Monster left note0019" x="481" y="684" width="471" height="668" frameX="0" frameY="-5" frameWidth="475" frameHeight="673"/>
|
<SubTexture name="Monster left note0019" x="0" y="701" width="471" height="669" frameX="0" frameY="-8" frameWidth="475" frameHeight="677"/>
|
||||||
<SubTexture name="monster down0000" x="2405" y="684" width="428" height="599" frameX="-12" frameY="-35" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0000" x="3367" y="701" width="428" height="571" frameX="-12" frameY="-18" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0001" x="2405" y="684" width="428" height="599" frameX="-12" frameY="-35" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0001" x="3367" y="701" width="428" height="571" frameX="-12" frameY="-18" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0002" x="2843" y="684" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0002" x="3805" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0003" x="2843" y="684" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0003" x="4249" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0004" x="3287" y="684" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0004" x="4693" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0005" x="3287" y="684" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0005" x="5137" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0006" x="0" y="1362" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0006" x="5581" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0007" x="0" y="1362" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0007" x="6025" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0008" x="444" y="1362" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0008" x="6469" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0009" x="444" y="1362" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0009" x="6913" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0010" x="888" y="1362" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0010" x="7357" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0011" x="888" y="1362" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0011" x="0" y="1380" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0012" x="1332" y="1362" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0012" x="444" y="1380" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0013" x="1332" y="1362" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0013" x="888" y="1380" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0014" x="2843" y="684" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0014" x="3805" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0015" x="2843" y="684" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0015" x="4249" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0016" x="3287" y="684" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0016" x="4693" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0017" x="3287" y="684" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0017" x="5137" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0018" x="0" y="1362" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0018" x="5581" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0019" x="0" y="1362" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0019" x="6025" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0020" x="444" y="1362" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0020" x="6469" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0021" x="444" y="1362" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0021" x="6913" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0022" x="888" y="1362" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0022" x="4249" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0023" x="888" y="1362" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0023" x="4249" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0024" x="1332" y="1362" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0024" x="6913" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0025" x="1332" y="1362" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0025" x="6913" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0026" x="2843" y="684" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0026" x="4249" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0027" x="2843" y="684" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0027" x="4249" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0028" x="3287" y="684" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0028" x="6913" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster down0029" x="3287" y="684" width="434" height="633" frameX="0" frameY="0" frameWidth="440" frameHeight="634"/>
|
<SubTexture name="monster down0029" x="6913" y="701" width="434" height="588" frameX="0" frameY="0" frameWidth="440" frameHeight="589"/>
|
||||||
<SubTexture name="monster idle0000" x="1776" y="1362" width="424" height="604" frameX="-46" frameY="-73" frameWidth="484" frameHeight="677"/>
|
<SubTexture name="monster idle0000" x="1332" y="1380" width="424" height="603" frameX="-46" frameY="-74" frameWidth="484" frameHeight="677"/>
|
||||||
<SubTexture name="monster idle0001" x="1776" y="1362" width="424" height="604" frameX="-46" frameY="-73" frameWidth="484" frameHeight="677"/>
|
<SubTexture name="monster idle0001" x="1766" y="1380" width="424" height="602" frameX="-46" frameY="-75" frameWidth="484" frameHeight="677"/>
|
||||||
<SubTexture name="monster idle0002" x="2210" y="1362" width="422" height="605" frameX="-49" frameY="-69" frameWidth="484" frameHeight="677"/>
|
<SubTexture name="monster idle0002" x="2200" y="1380" width="422" height="607" frameX="-49" frameY="-67" frameWidth="484" frameHeight="677"/>
|
||||||
<SubTexture name="monster idle0003" x="2210" y="1362" width="422" height="605" frameX="-49" frameY="-69" frameWidth="484" frameHeight="677"/>
|
<SubTexture name="monster idle0003" x="2632" y="1380" width="422" height="607" frameX="-49" frameY="-67" frameWidth="484" frameHeight="677"/>
|
||||||
<SubTexture name="monster idle0004" x="2642" y="1362" width="439" height="610" frameX="-38" frameY="-61" frameWidth="484" frameHeight="677"/>
|
<SubTexture name="monster idle0004" x="3064" y="1380" width="439" height="610" frameX="-38" frameY="-61" frameWidth="484" frameHeight="677"/>
|
||||||
<SubTexture name="monster idle0005" x="3091" y="1362" width="439" height="630" frameX="-38" frameY="-41" frameWidth="484" frameHeight="677"/>
|
<SubTexture name="monster idle0005" x="3513" y="1380" width="439" height="630" frameX="-38" frameY="-41" frameWidth="484" frameHeight="677"/>
|
||||||
<SubTexture name="monster idle0006" x="3540" y="1362" width="481" height="661" frameX="-3" frameY="-11" frameWidth="484" frameHeight="677"/>
|
<SubTexture name="monster idle0006" x="3962" y="1380" width="481" height="660" frameX="-3" frameY="-12" frameWidth="484" frameHeight="677"/>
|
||||||
<SubTexture name="monster idle0007" x="3540" y="1362" width="481" height="661" frameX="-3" frameY="-11" frameWidth="484" frameHeight="677"/>
|
<SubTexture name="monster idle0007" x="4453" y="1380" width="481" height="660" frameX="-3" frameY="-12" frameWidth="484" frameHeight="677"/>
|
||||||
<SubTexture name="monster idle0008" x="0" y="2033" width="484" height="670" frameX="0" frameY="-3" frameWidth="484" frameHeight="677"/>
|
<SubTexture name="monster idle0008" x="4944" y="1380" width="484" height="671" frameX="0" frameY="-2" frameWidth="484" frameHeight="677"/>
|
||||||
<SubTexture name="monster idle0009" x="0" y="2033" width="484" height="670" frameX="0" frameY="-3" frameWidth="484" frameHeight="677"/>
|
<SubTexture name="monster idle0009" x="5438" y="1380" width="484" height="671" frameX="0" frameY="-2" frameWidth="484" frameHeight="677"/>
|
||||||
<SubTexture name="monster idle0010" x="494" y="2033" width="484" height="673" frameX="0" frameY="0" frameWidth="484" frameHeight="677"/>
|
<SubTexture name="monster idle0010" x="5932" y="1380" width="484" height="673" frameX="0" frameY="0" frameWidth="484" frameHeight="677"/>
|
||||||
<SubTexture name="monster idle0011" x="494" y="2033" width="484" height="673" frameX="0" frameY="0" frameWidth="484" frameHeight="677"/>
|
<SubTexture name="monster idle0011" x="6426" y="1380" width="484" height="673" frameX="0" frameY="0" frameWidth="484" frameHeight="677"/>
|
||||||
<SubTexture name="monster idle0012" x="988" y="2033" width="484" height="673" frameX="0" frameY="0" frameWidth="484" frameHeight="677"/>
|
<SubTexture name="monster idle0012" x="6920" y="1380" width="484" height="673" frameX="0" frameY="0" frameWidth="484" frameHeight="677"/>
|
||||||
<SubTexture name="monster idle0013" x="988" y="2033" width="484" height="673" frameX="0" frameY="0" frameWidth="484" frameHeight="677"/>
|
<SubTexture name="monster idle0013" x="7414" y="1380" width="484" height="673" frameX="0" frameY="0" frameWidth="484" frameHeight="677"/>
|
||||||
<SubTexture name="monster idle0014" x="1482" y="2033" width="484" height="673" frameX="0" frameY="0" frameWidth="484" frameHeight="677"/>
|
<SubTexture name="monster idle0014" x="0" y="2063" width="484" height="673" frameX="0" frameY="0" frameWidth="484" frameHeight="677"/>
|
||||||
<SubTexture name="monster up note0000" x="1976" y="2033" width="410" height="714" frameX="-7" frameY="0" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0000" x="494" y="2063" width="410" height="753" frameX="-7" frameY="0" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0001" x="1976" y="2033" width="410" height="714" frameX="-7" frameY="0" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0001" x="494" y="2063" width="410" height="753" frameX="-7" frameY="0" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0002" x="2396" y="2033" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0002" x="914" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0003" x="2396" y="2033" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0003" x="1342" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0004" x="2824" y="2033" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0004" x="1770" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0005" x="2824" y="2033" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0005" x="2198" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0006" x="3252" y="2033" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0006" x="2626" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0007" x="3252" y="2033" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0007" x="3054" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0008" x="0" y="2757" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0008" x="3482" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0009" x="0" y="2757" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0009" x="3910" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0010" x="428" y="2757" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0010" x="4338" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0011" x="428" y="2757" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0011" x="4766" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0012" x="856" y="2757" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0012" x="5194" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0013" x="856" y="2757" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0013" x="5622" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0014" x="2396" y="2033" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0014" x="914" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0015" x="2396" y="2033" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0015" x="1342" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0016" x="2824" y="2033" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0016" x="1770" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0017" x="2824" y="2033" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0017" x="2198" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0018" x="3252" y="2033" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0018" x="2626" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0019" x="3252" y="2033" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0019" x="3054" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0020" x="0" y="2757" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0020" x="3482" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0021" x="0" y="2757" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0021" x="3910" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0022" x="428" y="2757" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0022" x="4338" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
<SubTexture name="monster up note0023" x="428" y="2757" width="418" height="711" frameX="0" frameY="-9" frameWidth="418" frameHeight="720"/>
|
<SubTexture name="monster up note0023" x="4766" y="2063" width="418" height="721" frameX="0" frameY="-38" frameWidth="418" frameHeight="759"/>
|
||||||
</TextureAtlas>
|
</TextureAtlas>
|
||||||
|
9
assets/shared/images/characters/bf-carOffsets.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
idle -5 0
|
||||||
|
singUP -29 27
|
||||||
|
singRIGHT -38 -7
|
||||||
|
singLEFT 12 -6
|
||||||
|
singDOWN -10 -50
|
||||||
|
singUPmiss -29 27
|
||||||
|
singRIGHTmiss -30 21
|
||||||
|
singLEFTmiss 12 24
|
||||||
|
singDOWNmiss -11 -19
|
10
assets/shared/images/characters/bf-christmasOffsets.txt
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
idle -5 0
|
||||||
|
singUP -29 27
|
||||||
|
singRIGHT -38 -7
|
||||||
|
singLEFT 12 -6
|
||||||
|
singDOWN -10 -50
|
||||||
|
singUPmiss -29 27
|
||||||
|
singRIGHTmiss -30 21
|
||||||
|
singLEFTmiss 12 24
|
||||||
|
singDOWNmiss -11 -19
|
||||||
|
hey 7 4
|
3
assets/shared/images/characters/bf-pixel-deadOffsets.txt
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
firstDeath 0 0
|
||||||
|
deathLoop -30 -12
|
||||||
|
deathConfirm -30 -12
|
9
assets/shared/images/characters/bf-pixelOffsets.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
idle 0 0
|
||||||
|
singUP 0 0
|
||||||
|
singRIGHT 0 0
|
||||||
|
singLEFT 0 0
|
||||||
|
singDOWN 0 0
|
||||||
|
singUPmiss 0 0
|
||||||
|
singRIGHTmiss 0 0
|
||||||
|
singLEFTmiss 0 0
|
||||||
|
singDOWNmiss 0 0
|
14
assets/shared/images/characters/bfOffsets.txt
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
idle -5 0
|
||||||
|
singUP -29 27
|
||||||
|
singRIGHT -38 -7
|
||||||
|
singLEFT 12 -6
|
||||||
|
singDOWN -10 -50
|
||||||
|
singUPmiss -29 27
|
||||||
|
singRIGHTmiss -30 21
|
||||||
|
singLEFTmiss 12 24
|
||||||
|
singDOWNmiss -11 -19
|
||||||
|
hey 7 4
|
||||||
|
firstDeath 37 11
|
||||||
|
deathLoop 37 5
|
||||||
|
deathConfirm 37 69
|
||||||
|
scared -4 0
|
@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<TextureAtlas imagePath="bfPixelsDEAD.png">
|
<TextureAtlas imagePath="bfPixelsDEAD.png">
|
||||||
<!-- Created with Adobe Animate version 20.0.0.17400 -->
|
<!-- if you read this you're epic. -->
|
||||||
<!-- http://www.adobe.com/products/animate.html -->
|
<!-- manual tweaks done on BF Dies pixel last 2 frames -->
|
||||||
<SubTexture name="BF Dies pixel0000" x="0" y="0" width="90" height="81"/>
|
<SubTexture name="BF Dies pixel0000" x="0" y="0" width="90" height="81"/>
|
||||||
<SubTexture name="BF Dies pixel0001" x="100" y="0" width="90" height="81"/>
|
<SubTexture name="BF Dies pixel0001" x="100" y="0" width="90" height="81"/>
|
||||||
<SubTexture name="BF Dies pixel0002" x="200" y="0" width="90" height="81"/>
|
<SubTexture name="BF Dies pixel0002" x="200" y="0" width="90" height="81"/>
|
||||||
@ -58,8 +58,8 @@
|
|||||||
<SubTexture name="BF Dies pixel0053" x="300" y="273" width="90" height="81"/>
|
<SubTexture name="BF Dies pixel0053" x="300" y="273" width="90" height="81"/>
|
||||||
<SubTexture name="BF Dies pixel0054" x="400" y="273" width="90" height="81"/>
|
<SubTexture name="BF Dies pixel0054" x="400" y="273" width="90" height="81"/>
|
||||||
<SubTexture name="BF Dies pixel0055" x="500" y="273" width="90" height="81"/>
|
<SubTexture name="BF Dies pixel0055" x="500" y="273" width="90" height="81"/>
|
||||||
<SubTexture name="BF Dies pixel0056" x="696" y="450" width="77" height="76"/>
|
<SubTexture name="BF Dies pixel0056" x="691" y="448" width="90" height="81"/>
|
||||||
<SubTexture name="BF Dies pixel0057" x="696" y="450" width="77" height="76"/>
|
<SubTexture name="BF Dies pixel0057" x="691" y="448" width="90" height="81"/>
|
||||||
<SubTexture name="RETRY CONFIRM0000" x="600" y="273" width="77" height="76"/>
|
<SubTexture name="RETRY CONFIRM0000" x="600" y="273" width="77" height="76"/>
|
||||||
<SubTexture name="RETRY CONFIRM0001" x="687" y="273" width="77" height="76"/>
|
<SubTexture name="RETRY CONFIRM0001" x="687" y="273" width="77" height="76"/>
|
||||||
<SubTexture name="RETRY CONFIRM0002" x="687" y="273" width="77" height="76"/>
|
<SubTexture name="RETRY CONFIRM0002" x="687" y="273" width="77" height="76"/>
|
||||||
|
5
assets/shared/images/characters/dadOffsets.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
idle 0 0
|
||||||
|
singUP -6 50
|
||||||
|
singRIGHT 0 27
|
||||||
|
singLEFT -10 10
|
||||||
|
singDOWN 0 -30
|
2
assets/shared/images/characters/gf-carOffsets.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
danceLeft 0 0
|
||||||
|
danceRight 0 0
|
11
assets/shared/images/characters/gf-christmasOffsets.txt
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
cheer 0 0
|
||||||
|
sad -2 -21
|
||||||
|
danceLeft 0 -9
|
||||||
|
danceRight 0 -9
|
||||||
|
singUP 0 4
|
||||||
|
singRIGHT 0 -20
|
||||||
|
singLEFT 0 -19
|
||||||
|
singDOWN 0 -20
|
||||||
|
hairBlow 45 -8
|
||||||
|
hairFall 0 -9
|
||||||
|
scared -2 -17
|
2
assets/shared/images/characters/gf-pixelOffsets.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
danceLeft 0 0
|
||||||
|
danceRight 0 0
|
11
assets/shared/images/characters/gfOffsets.txt
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
cheer 0 0
|
||||||
|
sad -2 -21
|
||||||
|
danceLeft 0 -9
|
||||||
|
danceRight 0 -9
|
||||||
|
singUP 0 4
|
||||||
|
singRIGHT 0 -20
|
||||||
|
singLEFT 0 -19
|
||||||
|
singDOWN 0 -20
|
||||||
|
hairBlow 45 -8
|
||||||
|
hairFall 0 -9
|
||||||
|
scared -2 -17
|
5
assets/shared/images/characters/mom-carOffsets.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
idle 0 0
|
||||||
|
singUP 14 71
|
||||||
|
singRIGHT 10 -60
|
||||||
|
singLEFT 250 -23
|
||||||
|
singDOWN 20 -160
|
5
assets/shared/images/characters/momOffsets.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
idle 0 0
|
||||||
|
singUP 14 71
|
||||||
|
singRIGHT 10 -60
|
||||||
|
singLEFT 250 -23
|
||||||
|
singDOWN 20 -160
|
@ -0,0 +1,5 @@
|
|||||||
|
idle 0 0
|
||||||
|
singUP -20 50
|
||||||
|
singRIGHT -51 0
|
||||||
|
singLEFT -30 0
|
||||||
|
singDOWN -40 -94
|
5
assets/shared/images/characters/monsterOffsets.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
idle 0 0
|
||||||
|
singUP -20 94
|
||||||
|
singRIGHT -51 30
|
||||||
|
singLEFT -30 20
|
||||||
|
singDOWN -50 -80
|
@ -0,0 +1,9 @@
|
|||||||
|
idle 0 0
|
||||||
|
singUP -47 24
|
||||||
|
singRIGHT -1 -23
|
||||||
|
singLEFT -30 16
|
||||||
|
singDOWN -31 -29
|
||||||
|
singUP-alt -47 24
|
||||||
|
singRIGHT-alt -1 -24
|
||||||
|
singLEFT-alt -30 15
|
||||||
|
singDOWN-alt -30 -27
|
9
assets/shared/images/characters/picoOffsets.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
idle 0 0
|
||||||
|
singUP -29 27
|
||||||
|
singRIGHT -68 -7
|
||||||
|
singLEFT 65 9
|
||||||
|
singDOWN 200 -70
|
||||||
|
singUPmiss -19 67
|
||||||
|
singRIGHTmiss -60 41
|
||||||
|
singLEFTmiss 62 64
|
||||||
|
singDOWNmiss 210 -28
|
5
assets/shared/images/characters/senpai-angryOffsets.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
idle 0 0
|
||||||
|
singUP 5 37
|
||||||
|
singRIGHT 0 0
|
||||||
|
singLEFT 40 0
|
||||||
|
singDOWN 14 0
|
5
assets/shared/images/characters/senpaiOffsets.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
idle 0 0
|
||||||
|
singUP 5 37
|
||||||
|
singRIGHT 0 0
|
||||||
|
singLEFT 40 0
|
||||||
|
singDOWN 14 0
|
5
assets/shared/images/characters/spiritOffsets.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
idle -220 -280
|
||||||
|
singUP -220 -240
|
||||||
|
singRIGHT -220 -280
|
||||||
|
singLEFT -200 -280
|
||||||
|
singDOWN 170 110
|
6
assets/shared/images/characters/spookyOffsets.txt
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
danceLeft 0 0
|
||||||
|
danceRight 0 0
|
||||||
|
singUP -20 26
|
||||||
|
singRIGHT -130 -14
|
||||||
|
singLEFT 130 -10
|
||||||
|
singDOWN -50 -130
|
BIN
assets/shared/sounds/CLAP.mp3
Normal file
BIN
assets/shared/sounds/SNAP.mp3
Normal file
5
assets/sm/HOW TO ADD SM FILES.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
Put both the .sm and .ogg in the same folder and put the folder in this folder. Launch the game and go into freeplay, it'll load into the song list.
|
||||||
|
|
||||||
|
Limitations:
|
||||||
|
- You can only use songs that have one difficulty, so if a song has more than one. Remove all but the one you want to play. (it doesn't matter if it's challenge or what ever)
|
||||||
|
- The song must be a .ogg
|
@ -26,7 +26,7 @@ hr {
|
|||||||
<p id="HtmlIsTheWorstThingIHaveEverUsed">
|
<p id="HtmlIsTheWorstThingIHaveEverUsed">
|
||||||
<a class="headerlink" href="{{site.url}}changelogs/">Changelogs</a>
|
<a class="headerlink" href="{{site.url}}changelogs/">Changelogs</a>
|
||||||
<a class="headerlink" href="{{site.url}}building">Building</a>
|
<a class="headerlink" href="{{site.url}}building">Building</a>
|
||||||
<a class="headerlink" href="https://github.com/KadeDev/Kade-Engine/wiki/">Modchart Documentation</a>
|
<a class="headerlink" href="https://github.com/KadeDev/Kade-Engine/wiki/">Modcharts</a>
|
||||||
<a class="headerlink" href="{{site.url}}guides">Guides</a>
|
<a class="headerlink" href="{{site.url}}guides">Guides</a>
|
||||||
<br>
|
<br>
|
||||||
<hr>
|
<hr>
|
||||||
|
@ -30,26 +30,19 @@
|
|||||||
- `haxelib git discord_rpc https://github.com/Aidan63/linc_discord-rpc`
|
- `haxelib git discord_rpc https://github.com/Aidan63/linc_discord-rpc`
|
||||||
- `haxelib install actuate`
|
- `haxelib install actuate`
|
||||||
- `haxelib git extension-webm https://github.com/KadeDev/extension-webm`
|
- `haxelib git extension-webm https://github.com/KadeDev/extension-webm`
|
||||||
- `lime rebuild extension-webm windows`
|
- `lime rebuild extension-webm <ie. windows, macos, linux>`
|
||||||
|
|
||||||
### Windows-only dependencies (only for building *to* Windows. Building html5 on Windows does not require this)
|
### Windows-only dependencies (only for building *to* Windows. Building html5 on Windows does not require this)
|
||||||
If you are planning to build for Windows, you also need to install **Visual Studio 2019**. While installing it, *don't click on any of the options to install workloads*. Instead, go to the **individual components** tab and choose the following:
|
If you are planning to build for Windows, you also need to install **Visual Studio 2019**. While installing it, *don't click on any of the options to install workloads*. Instead, go to the **individual components** tab and choose the following:
|
||||||
|
|
||||||
- MSVC v142 - VS 2019 C++ x64/x86 build tools
|
- MSVC v142 - VS 2019 C++ x64/x86 build tools
|
||||||
|
- MSVC v141 - VS 2017 C++ x64/x86 build tools
|
||||||
- Windows SDK (10.0.17763.0)
|
- Windows SDK (10.0.17763.0)
|
||||||
- C++ Profiling tools
|
- C++ Profiling tools
|
||||||
- C++ CMake tools for windows
|
- C++ CMake tools for windows
|
||||||
- C++ ATL for v142 build tools (x86 & x64)
|
- C++ ATL for v142 build tools (x86 & x64)
|
||||||
- C++ MFC for v142 build tools (x86 & x64)
|
|
||||||
- C++/CLI support for v142 build tools (14.21)
|
|
||||||
- C++ Modules for v142 build tools (x64/x86)
|
|
||||||
- Clang Compiler for Windows
|
|
||||||
- Windows 10 SDK (10.0.17134.0)
|
|
||||||
- Windows 10 SDK (10.0.16299.0)
|
|
||||||
- MSVC v141 - VS 2017 C++ x64/x86 build tools
|
|
||||||
- MSVC v140 - VS 2015 C++ build tools (v14.00)
|
|
||||||
|
|
||||||
This will install about 22 GB of crap, but is necessary to build for Windows.
|
This will install about 7 GB of crap, but is necessary to build for Windows.
|
||||||
|
|
||||||
### macOS-only dependencies (these are required for building on macOS at all, including html5.)
|
### macOS-only dependencies (these are required for building on macOS at all, including html5.)
|
||||||
If you are running macOS, you'll need to install Xcode. You can download it from the macOS App Store or from the [Xcode website](https://developer.apple.com/xcode/).
|
If you are running macOS, you'll need to install Xcode. You can download it from the macOS App Store or from the [Xcode website](https://developer.apple.com/xcode/).
|
||||||
|
17
docs/changelogs/changelog-1.5.4.md
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# Latest (master) changelog
|
||||||
|
|
||||||
|
Changes marked with 💖 will be listed in the short version of the changelog in `version.downloadMe`.
|
||||||
|
|
||||||
|
### Additions
|
||||||
|
- Controller Support (💖)
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
- KeyBinds don't effect menu screen options anymore.
|
||||||
|
- Updated some image assets
|
||||||
|
- Fixed spookeez audio sync
|
||||||
|
|
||||||
|
### Bugfixes
|
||||||
|
- Fixed Input Drops/Disappering Notes (💖)
|
||||||
|
- Fixed HitGraph/Result Screen bugs
|
||||||
|
- Fixed the chart editor
|
||||||
|
- Fixed HTML5 Build issues
|
35
docs/changelogs/changelog-1.6.md
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
# Latest (master) changelog
|
||||||
|
|
||||||
|
Changes marked with 💖 will be listed in the short version of the changelog in `version.downloadMe`.
|
||||||
|
|
||||||
|
### Additions
|
||||||
|
- 💖 Full reworked charter
|
||||||
|
- Note quantization
|
||||||
|
- 💖 BPM Changes & Scroll Speed Change Support
|
||||||
|
- 💖 StepMania File Format support
|
||||||
|
- Anti-Aliasing option for low end pc's
|
||||||
|
- 💖 Pre-loading for characters option
|
||||||
|
- New Logo
|
||||||
|
- 💖 New Main Menu Remix
|
||||||
|
- 💖 Difficulty Calculator
|
||||||
|
- Week Locking
|
||||||
|
- Character Offset Files
|
||||||
|
- Many new options
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
- Reworked Health Drain to be harsher
|
||||||
|
- 💖 Held notes being weird as fuck (completely reworked them)
|
||||||
|
- Many beat based things actually go to the beat (blue balls, title screen, etc)
|
||||||
|
- Losing Icon for Father Dearest & Mommy Mearest together
|
||||||
|
|
||||||
|
### Bugfixes
|
||||||
|
- BF Animation ending too early
|
||||||
|
- Held note end fix (this made me mad)
|
||||||
|
- Up arrow having a 8 pixels next to it
|
||||||
|
- Stop crashes with "R"
|
||||||
|
- Fixed dropped inputs for stacked notes.
|
||||||
|
- Fixed multiple crashes
|
||||||
|
- Fixed spirit being weird
|
||||||
|
- Fixed a lot of desyncs
|
||||||
|
- Ghost Tapping works now
|
||||||
|
- Pressing 7 while dying no longer freezes you in time.
|
@ -15,8 +15,10 @@ Scroll down to Line 26, or Search (Windows/Linux: `Ctrl+F`, Mac: `Cmd+F`) for "w
|
|||||||
---
|
---
|
||||||
|
|
||||||
```haxe
|
```haxe
|
||||||
var weekData:Array<Dynamic> = [
|
static function weekData():Array<Dynamic>
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
|
||||||
['Tutorial'],
|
['Tutorial'],
|
||||||
|
|
||||||
['Bopeebo', 'Fresh', 'Dadbattle'],
|
['Bopeebo', 'Fresh', 'Dadbattle'],
|
||||||
@ -30,8 +32,9 @@ var weekData:Array<Dynamic> = [
|
|||||||
['Cocoa', 'Eggnog', 'Winter-Horrorland'],
|
['Cocoa', 'Eggnog', 'Winter-Horrorland'],
|
||||||
|
|
||||||
['Senpai', 'Roses', 'Thorns']
|
['Senpai', 'Roses', 'Thorns']
|
||||||
|
|
||||||
];
|
];
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
@ -45,8 +48,10 @@ Example
|
|||||||
---
|
---
|
||||||
|
|
||||||
```haxe
|
```haxe
|
||||||
var weekData:Array<Dynamic> = [
|
static function weekData():Array<Dynamic>
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
|
||||||
['Tutorial'],
|
['Tutorial'],
|
||||||
|
|
||||||
['Bopeebo', 'Fresh', 'Dadbattle'],
|
['Bopeebo', 'Fresh', 'Dadbattle'],
|
||||||
@ -58,12 +63,13 @@ var weekData:Array<Dynamic> = [
|
|||||||
['Satin-Panties', "High", "Milf"],
|
['Satin-Panties', "High", "Milf"],
|
||||||
|
|
||||||
['Cocoa', 'Eggnog', 'Winter-Horrorland'],
|
['Cocoa', 'Eggnog', 'Winter-Horrorland'],
|
||||||
|
|
||||||
['Senpai', 'Roses', 'Thorns'],
|
['Senpai', 'Roses', 'Thorns'],
|
||||||
|
|
||||||
['Ugh', 'Guns', 'Stress']
|
['Ugh', 'Guns', 'Stress']
|
||||||
|
|
||||||
];
|
];
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
@ -103,32 +109,21 @@ var weekCharacters:Array<Dynamic> = [
|
|||||||
|
|
||||||
### Step 4. Week Names
|
### Step 4. Week Names
|
||||||
|
|
||||||
Underneath the song list, there should be another array called `weekNames`. Creating a new line in that array, just enter a string that represents what you want the week to be called.
|
In `assets/preload/data`, there should be a .txt file called `weekNames`. Creating a new line in that file, just enter a string that represents what you want the week to be called.
|
||||||
|
|
||||||
Example
|
Example
|
||||||
---
|
---
|
||||||
|
|
||||||
---
|
---
|
||||||
```haxe
|
```
|
||||||
var weekNames:Array<String> = [
|
Tutorial
|
||||||
|
Daddy Dearest
|
||||||
"How to Funk",
|
Spooky Month
|
||||||
|
PICO
|
||||||
"Daddy dearest",
|
MOMMY MUST MURDER
|
||||||
|
RED SNOW
|
||||||
"Spooky Month",
|
Hating Simulator ft. Moawling
|
||||||
|
TANKMAN
|
||||||
"PICO",
|
|
||||||
|
|
||||||
"Mommy Must Murder",
|
|
||||||
|
|
||||||
"Red Snow",
|
|
||||||
|
|
||||||
"Hating Simulator ft. Moawlings",
|
|
||||||
|
|
||||||
"Tankman"
|
|
||||||
|
|
||||||
];
|
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
@ -137,22 +132,29 @@ var weekNames:Array<String> = [
|
|||||||
|
|
||||||
### Step 5. Graphics
|
### Step 5. Graphics
|
||||||
|
|
||||||
Displaying a week icon for your custom week is as simple as dropping a .png into `assets/images/storymenu`. Rename the file to `week7.png`, `week8.png`, etc.
|
Displaying a week icon for your custom week is as simple as dropping a .png into `assets/preload/images/storymenu`. Rename the file to `week7.png`, `week8.png`, etc.
|
||||||
|
|
||||||
Example
|
Example
|
||||||
---
|
---
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
NOTE: You will have to add a new item to `weekUnlocked`, so that the week is playable.
|
|
||||||
|
|
||||||

|

|
||||||
|
=======
|
||||||
|

|
||||||
|
|
||||||
|
NOTE: You will have to add a new item to `weekUnlocked`, so that the week is playable.
|
||||||
|
Locate to line 39 and add in a new boolean called True so that the week can be playable.
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
 \* *for this screenshot I removed tankman from weekCharacters as it would crash because I don't have a tankman character added*
|
||||||
### Conclusion
|
### Conclusion
|
||||||
|
|
||||||
If you followed all of the steps correctly, you have successfully created a new week in the Story Mode.
|
If you followed all of the steps correctly, you have successfully created a new week in the Story Mode.
|
||||||
|
@ -44,8 +44,14 @@ class Alphabet extends FlxSpriteGroup
|
|||||||
|
|
||||||
var isBold:Bool = false;
|
var isBold:Bool = false;
|
||||||
|
|
||||||
|
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)
|
public function new(x:Float, y:Float, text:String = "", ?bold:Bool = false, typed:Bool = false, shouldMove:Bool = false)
|
||||||
{
|
{
|
||||||
|
pastX = x;
|
||||||
|
pastY = y;
|
||||||
|
|
||||||
super(x, y);
|
super(x, y);
|
||||||
|
|
||||||
_finalText = text;
|
_finalText = text;
|
||||||
@ -66,6 +72,24 @@ class Alphabet extends FlxSpriteGroup
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function reType(text)
|
||||||
|
{
|
||||||
|
for (i in listOAlphabets)
|
||||||
|
remove(i);
|
||||||
|
_finalText = text;
|
||||||
|
this.text = text;
|
||||||
|
|
||||||
|
lastSprite = null;
|
||||||
|
|
||||||
|
updateHitbox();
|
||||||
|
|
||||||
|
listOAlphabets.clear();
|
||||||
|
x = pastX;
|
||||||
|
y = pastY;
|
||||||
|
|
||||||
|
addText();
|
||||||
|
}
|
||||||
|
|
||||||
public function addText()
|
public function addText()
|
||||||
{
|
{
|
||||||
doSplitWords();
|
doSplitWords();
|
||||||
@ -254,8 +278,10 @@ class AlphaCharacter extends FlxSprite
|
|||||||
super(x, y);
|
super(x, y);
|
||||||
var tex = Paths.getSparrowAtlas('alphabet');
|
var tex = Paths.getSparrowAtlas('alphabet');
|
||||||
frames = tex;
|
frames = tex;
|
||||||
|
if(FlxG.save.data.antialiasing)
|
||||||
antialiasing = true;
|
{
|
||||||
|
antialiasing = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function createBold(letter:String)
|
public function createBold(letter:String)
|
||||||
|
@ -118,6 +118,9 @@ class AnimationDebug extends FlxState
|
|||||||
if (FlxG.keys.justPressed.Q)
|
if (FlxG.keys.justPressed.Q)
|
||||||
FlxG.camera.zoom -= 0.25;
|
FlxG.camera.zoom -= 0.25;
|
||||||
|
|
||||||
|
if (FlxG.keys.justPressed.F)
|
||||||
|
char.flipX = !char.flipX;
|
||||||
|
|
||||||
if (FlxG.keys.pressed.I || FlxG.keys.pressed.J || FlxG.keys.pressed.K || FlxG.keys.pressed.L)
|
if (FlxG.keys.pressed.I || FlxG.keys.pressed.J || FlxG.keys.pressed.K || FlxG.keys.pressed.L)
|
||||||
{
|
{
|
||||||
if (FlxG.keys.pressed.I)
|
if (FlxG.keys.pressed.I)
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package;
|
package;
|
||||||
|
|
||||||
|
import flixel.FlxG;
|
||||||
import flixel.FlxSprite;
|
import flixel.FlxSprite;
|
||||||
import flixel.graphics.frames.FlxAtlasFrames;
|
import flixel.graphics.frames.FlxAtlasFrames;
|
||||||
|
|
||||||
@ -13,7 +14,10 @@ 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');
|
||||||
antialiasing = true;
|
if(FlxG.save.data.antialiasing)
|
||||||
|
{
|
||||||
|
antialiasing = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var danceDir:Bool = false;
|
var danceDir:Bool = false;
|
||||||
|
@ -1,10 +1,20 @@
|
|||||||
|
#if sys
|
||||||
package;
|
package;
|
||||||
|
|
||||||
|
import lime.app.Application;
|
||||||
|
#if windows
|
||||||
|
import Discord.DiscordClient;
|
||||||
|
#end
|
||||||
|
import openfl.display.BitmapData;
|
||||||
|
import openfl.utils.Assets;
|
||||||
|
import flixel.ui.FlxBar;
|
||||||
import haxe.Exception;
|
import haxe.Exception;
|
||||||
import flixel.tweens.FlxEase;
|
import flixel.tweens.FlxEase;
|
||||||
import flixel.tweens.FlxTween;
|
import flixel.tweens.FlxTween;
|
||||||
|
#if cpp
|
||||||
import sys.FileSystem;
|
import sys.FileSystem;
|
||||||
import sys.io.File;
|
import sys.io.File;
|
||||||
|
#end
|
||||||
import flixel.FlxG;
|
import flixel.FlxG;
|
||||||
import flixel.FlxSprite;
|
import flixel.FlxSprite;
|
||||||
import flixel.addons.transition.FlxTransitionSprite.GraphicTransTileDiamond;
|
import flixel.addons.transition.FlxTransitionSprite.GraphicTransTileDiamond;
|
||||||
@ -22,107 +32,152 @@ using StringTools;
|
|||||||
|
|
||||||
class Caching extends MusicBeatState
|
class Caching extends MusicBeatState
|
||||||
{
|
{
|
||||||
var toBeDone = 0;
|
var toBeDone = 0;
|
||||||
var done = 0;
|
var done = 0;
|
||||||
|
|
||||||
|
var loaded = false;
|
||||||
|
|
||||||
|
var text:FlxText;
|
||||||
|
var kadeLogo:FlxSprite;
|
||||||
|
|
||||||
|
public static var bitmapData:Map<String,FlxGraphic>;
|
||||||
|
|
||||||
|
var images = [];
|
||||||
|
var music = [];
|
||||||
|
var charts = [];
|
||||||
|
|
||||||
var text:FlxText;
|
|
||||||
var kadeLogo:FlxSprite;
|
|
||||||
|
|
||||||
override function create()
|
override function create()
|
||||||
{
|
{
|
||||||
FlxG.mouse.visible = false;
|
|
||||||
|
|
||||||
FlxG.worldBounds.set(0,0);
|
FlxG.save.bind('funkin', 'ninjamuffin99');
|
||||||
|
|
||||||
text = new FlxText(FlxG.width / 2, FlxG.height / 2 + 300,0,"Loading...");
|
PlayerSettings.init();
|
||||||
text.size = 34;
|
|
||||||
text.alignment = FlxTextAlign.CENTER;
|
|
||||||
text.alpha = 0;
|
|
||||||
|
|
||||||
kadeLogo = new FlxSprite(FlxG.width / 2, FlxG.height / 2).loadGraphic(Paths.image('KadeEngineLogo'));
|
KadeEngineData.initSave();
|
||||||
kadeLogo.x -= kadeLogo.width / 2;
|
|
||||||
kadeLogo.y -= kadeLogo.height / 2 + 100;
|
|
||||||
text.y -= kadeLogo.height / 2 - 125;
|
|
||||||
text.x -= 170;
|
|
||||||
kadeLogo.setGraphicSize(Std.int(kadeLogo.width * 0.6));
|
|
||||||
|
|
||||||
kadeLogo.alpha = 0;
|
FlxG.mouse.visible = false;
|
||||||
|
|
||||||
add(kadeLogo);
|
FlxG.worldBounds.set(0,0);
|
||||||
add(text);
|
|
||||||
|
|
||||||
trace('starting caching..');
|
bitmapData = new Map<String,FlxGraphic>();
|
||||||
|
|
||||||
sys.thread.Thread.create(() -> {
|
text = new FlxText(FlxG.width / 2, FlxG.height / 2 + 300,0,"Loading...");
|
||||||
cache();
|
text.size = 34;
|
||||||
});
|
text.alignment = FlxTextAlign.CENTER;
|
||||||
|
text.alpha = 0;
|
||||||
|
|
||||||
|
kadeLogo = new FlxSprite(FlxG.width / 2, FlxG.height / 2).loadGraphic(Paths.image('KadeEngineLogo'));
|
||||||
|
kadeLogo.x -= kadeLogo.width / 2;
|
||||||
|
kadeLogo.y -= kadeLogo.height / 2 + 100;
|
||||||
|
text.y -= kadeLogo.height / 2 - 125;
|
||||||
|
text.x -= 170;
|
||||||
|
kadeLogo.setGraphicSize(Std.int(kadeLogo.width * 0.6));
|
||||||
|
kadeLogo.antialiasing = true;
|
||||||
|
|
||||||
|
kadeLogo.alpha = 0;
|
||||||
|
|
||||||
|
#if cpp
|
||||||
|
if (FlxG.save.data.cacheImages)
|
||||||
|
{
|
||||||
|
trace("caching images...");
|
||||||
|
|
||||||
|
for (i in FileSystem.readDirectory(FileSystem.absolutePath("assets/shared/images/characters")))
|
||||||
|
{
|
||||||
|
if (!i.endsWith(".png"))
|
||||||
|
continue;
|
||||||
|
images.push(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
trace("caching music...");
|
||||||
|
|
||||||
|
for (i in FileSystem.readDirectory(FileSystem.absolutePath("assets/songs")))
|
||||||
|
{
|
||||||
|
music.push(i);
|
||||||
|
}
|
||||||
|
#end
|
||||||
|
|
||||||
|
toBeDone = Lambda.count(images) + Lambda.count(music);
|
||||||
|
|
||||||
|
var bar = new FlxBar(10,FlxG.height - 50,FlxBarFillDirection.LEFT_TO_RIGHT,FlxG.width,40,null,"done",0,toBeDone);
|
||||||
|
bar.color = FlxColor.PURPLE;
|
||||||
|
|
||||||
|
add(bar);
|
||||||
|
|
||||||
|
add(kadeLogo);
|
||||||
|
add(text);
|
||||||
|
|
||||||
|
trace('starting caching..');
|
||||||
|
|
||||||
|
#if cpp
|
||||||
|
// update thread
|
||||||
|
|
||||||
|
sys.thread.Thread.create(() -> {
|
||||||
|
while(!loaded)
|
||||||
|
{
|
||||||
|
if (toBeDone != 0 && done != toBeDone)
|
||||||
|
{
|
||||||
|
var alpha = HelperFunctions.truncateFloat(done / toBeDone * 100,2) / 100;
|
||||||
|
kadeLogo.alpha = alpha;
|
||||||
|
text.alpha = alpha;
|
||||||
|
text.text = "Loading... (" + done + "/" + toBeDone + ")";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
// cache thread
|
||||||
|
|
||||||
|
sys.thread.Thread.create(() -> {
|
||||||
|
cache();
|
||||||
|
});
|
||||||
|
#end
|
||||||
|
|
||||||
|
super.create();
|
||||||
|
}
|
||||||
|
|
||||||
|
var calledDone = false;
|
||||||
|
|
||||||
|
override function update(elapsed)
|
||||||
|
{
|
||||||
|
super.update(elapsed);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
super.create();
|
function cache()
|
||||||
}
|
{
|
||||||
|
trace("LOADING: " + toBeDone + " OBJECTS.");
|
||||||
|
|
||||||
var calledDone = false;
|
for (i in images)
|
||||||
|
{
|
||||||
|
var replaced = i.replace(".png","");
|
||||||
|
var data:BitmapData = BitmapData.fromFile("assets/shared/images/characters/" + i);
|
||||||
|
trace('id ' + replaced + ' file - assets/shared/images/characters/' + i + ' ${data.width}');
|
||||||
|
var graph = FlxGraphic.fromBitmapData(data);
|
||||||
|
graph.persist = true;
|
||||||
|
graph.destroyOnNoUse = false;
|
||||||
|
bitmapData.set(replaced,graph);
|
||||||
|
done++;
|
||||||
|
}
|
||||||
|
|
||||||
override function update(elapsed)
|
for (i in music)
|
||||||
{
|
{
|
||||||
|
FlxG.sound.cache(Paths.inst(i));
|
||||||
if (toBeDone != 0 && done != toBeDone)
|
FlxG.sound.cache(Paths.voices(i));
|
||||||
{
|
trace("cached " + i);
|
||||||
var alpha = HelperFunctions.truncateFloat(done / toBeDone * 100,2) / 100;
|
done++;
|
||||||
kadeLogo.alpha = alpha;
|
}
|
||||||
text.alpha = alpha;
|
|
||||||
text.text = "Loading... (" + done + "/" + toBeDone + ")";
|
|
||||||
}
|
|
||||||
|
|
||||||
super.update(elapsed);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function cache()
|
trace("Finished caching...");
|
||||||
{
|
|
||||||
|
|
||||||
var images = [];
|
loaded = true;
|
||||||
var music = [];
|
|
||||||
|
|
||||||
trace("caching images...");
|
trace(Assets.cache.hasBitmapData('GF_assets'));
|
||||||
|
|
||||||
for (i in FileSystem.readDirectory(FileSystem.absolutePath("assets/shared/images/characters")))
|
FlxG.switchState(new TitleState());
|
||||||
{
|
}
|
||||||
if (!i.endsWith(".png"))
|
|
||||||
continue;
|
|
||||||
images.push(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
trace("caching music...");
|
}
|
||||||
|
#end
|
||||||
for (i in FileSystem.readDirectory(FileSystem.absolutePath("assets/songs")))
|
|
||||||
{
|
|
||||||
music.push(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
toBeDone = Lambda.count(images) + Lambda.count(music);
|
|
||||||
|
|
||||||
trace("LOADING: " + toBeDone + " OBJECTS.");
|
|
||||||
|
|
||||||
for (i in images)
|
|
||||||
{
|
|
||||||
var replaced = i.replace(".png","");
|
|
||||||
FlxG.bitmap.add(Paths.image("characters/" + replaced,"shared"));
|
|
||||||
trace("cached " + replaced);
|
|
||||||
done++;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i in music)
|
|
||||||
{
|
|
||||||
FlxG.sound.cache(Paths.inst(i));
|
|
||||||
FlxG.sound.cache(Paths.voices(i));
|
|
||||||
trace("cached " + i);
|
|
||||||
done++;
|
|
||||||
}
|
|
||||||
|
|
||||||
trace("Finished caching...");
|
|
||||||
|
|
||||||
FlxG.switchState(new TitleState());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -26,13 +26,16 @@ class Character extends FlxSprite
|
|||||||
this.isPlayer = isPlayer;
|
this.isPlayer = isPlayer;
|
||||||
|
|
||||||
var tex:FlxAtlasFrames;
|
var tex:FlxAtlasFrames;
|
||||||
antialiasing = true;
|
if(FlxG.save.data.antialiasing)
|
||||||
|
{
|
||||||
|
antialiasing = true;
|
||||||
|
}
|
||||||
|
|
||||||
switch (curCharacter)
|
switch (curCharacter)
|
||||||
{
|
{
|
||||||
case 'gf':
|
case 'gf':
|
||||||
// GIRLFRIEND CODE
|
// GIRLFRIEND CODE
|
||||||
tex = Paths.getSparrowAtlas('characters/GF_assets');
|
tex = Paths.getSparrowAtlas('GF_assets','shared',true);
|
||||||
frames = tex;
|
frames = tex;
|
||||||
animation.addByPrefix('cheer', 'GF Cheer', 24, false);
|
animation.addByPrefix('cheer', 'GF Cheer', 24, false);
|
||||||
animation.addByPrefix('singLEFT', 'GF left note', 24, false);
|
animation.addByPrefix('singLEFT', 'GF left note', 24, false);
|
||||||
@ -46,24 +49,12 @@ class Character extends FlxSprite
|
|||||||
animation.addByIndices('hairFall', "GF Dancing Beat Hair Landing", [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "", 24, false);
|
animation.addByIndices('hairFall', "GF Dancing Beat Hair Landing", [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "", 24, false);
|
||||||
animation.addByPrefix('scared', 'GF FEAR', 24);
|
animation.addByPrefix('scared', 'GF FEAR', 24);
|
||||||
|
|
||||||
addOffset('cheer');
|
loadOffsetFile(curCharacter);
|
||||||
addOffset('sad', -2, -2);
|
|
||||||
addOffset('danceLeft', 0, -9);
|
|
||||||
addOffset('danceRight', 0, -9);
|
|
||||||
|
|
||||||
addOffset("singUP", 0, 4);
|
|
||||||
addOffset("singRIGHT", 0, -20);
|
|
||||||
addOffset("singLEFT", 0, -19);
|
|
||||||
addOffset("singDOWN", 0, -20);
|
|
||||||
addOffset('hairBlow', 45, -8);
|
|
||||||
addOffset('hairFall', 0, -9);
|
|
||||||
|
|
||||||
addOffset('scared', -2, -17);
|
|
||||||
|
|
||||||
playAnim('danceRight');
|
playAnim('danceRight');
|
||||||
|
|
||||||
case 'gf-christmas':
|
case 'gf-christmas':
|
||||||
tex = Paths.getSparrowAtlas('characters/gfChristmas');
|
tex = Paths.getSparrowAtlas('gfChristmas','shared',true);
|
||||||
frames = tex;
|
frames = tex;
|
||||||
animation.addByPrefix('cheer', 'GF Cheer', 24, false);
|
animation.addByPrefix('cheer', 'GF Cheer', 24, false);
|
||||||
animation.addByPrefix('singLEFT', 'GF left note', 24, false);
|
animation.addByPrefix('singLEFT', 'GF left note', 24, false);
|
||||||
@ -77,44 +68,30 @@ class Character extends FlxSprite
|
|||||||
animation.addByIndices('hairFall', "GF Dancing Beat Hair Landing", [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "", 24, false);
|
animation.addByIndices('hairFall', "GF Dancing Beat Hair Landing", [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "", 24, false);
|
||||||
animation.addByPrefix('scared', 'GF FEAR', 24);
|
animation.addByPrefix('scared', 'GF FEAR', 24);
|
||||||
|
|
||||||
addOffset('cheer');
|
loadOffsetFile(curCharacter);
|
||||||
addOffset('sad', -2, -2);
|
|
||||||
addOffset('danceLeft', 0, -9);
|
|
||||||
addOffset('danceRight', 0, -9);
|
|
||||||
|
|
||||||
addOffset("singUP", 0, 4);
|
|
||||||
addOffset("singRIGHT", 0, -20);
|
|
||||||
addOffset("singLEFT", 0, -19);
|
|
||||||
addOffset("singDOWN", 0, -20);
|
|
||||||
addOffset('hairBlow', 45, -8);
|
|
||||||
addOffset('hairFall', 0, -9);
|
|
||||||
|
|
||||||
addOffset('scared', -2, -17);
|
|
||||||
|
|
||||||
playAnim('danceRight');
|
playAnim('danceRight');
|
||||||
|
|
||||||
case 'gf-car':
|
case 'gf-car':
|
||||||
tex = Paths.getSparrowAtlas('characters/gfCar');
|
tex = Paths.getSparrowAtlas('gfCar','shared',true);
|
||||||
frames = tex;
|
frames = tex;
|
||||||
animation.addByIndices('singUP', 'GF Dancing Beat Hair blowing CAR', [0], "", 24, false);
|
animation.addByIndices('singUP', 'GF Dancing Beat Hair blowing CAR', [0], "", 24, false);
|
||||||
animation.addByIndices('danceLeft', 'GF Dancing Beat Hair blowing CAR', [30, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "", 24, false);
|
animation.addByIndices('danceLeft', 'GF Dancing Beat Hair blowing CAR', [30, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "", 24, false);
|
||||||
animation.addByIndices('danceRight', 'GF Dancing Beat Hair blowing CAR', [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "", 24,
|
animation.addByIndices('danceRight', 'GF Dancing Beat Hair blowing CAR', [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "", 24,
|
||||||
false);
|
false);
|
||||||
|
|
||||||
addOffset('danceLeft', 0);
|
loadOffsetFile(curCharacter);
|
||||||
addOffset('danceRight', 0);
|
|
||||||
|
|
||||||
playAnim('danceRight');
|
playAnim('danceRight');
|
||||||
|
|
||||||
case 'gf-pixel':
|
case 'gf-pixel':
|
||||||
tex = Paths.getSparrowAtlas('characters/gfPixel');
|
tex = Paths.getSparrowAtlas('gfPixel','shared',true);
|
||||||
frames = tex;
|
frames = tex;
|
||||||
animation.addByIndices('singUP', 'GF IDLE', [2], "", 24, false);
|
animation.addByIndices('singUP', 'GF IDLE', [2], "", 24, false);
|
||||||
animation.addByIndices('danceLeft', 'GF IDLE', [30, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "", 24, false);
|
animation.addByIndices('danceLeft', 'GF IDLE', [30, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "", 24, false);
|
||||||
animation.addByIndices('danceRight', 'GF IDLE', [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "", 24, false);
|
animation.addByIndices('danceRight', 'GF IDLE', [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "", 24, false);
|
||||||
|
|
||||||
addOffset('danceLeft', 0);
|
loadOffsetFile(curCharacter);
|
||||||
addOffset('danceRight', 0);
|
|
||||||
|
|
||||||
playAnim('danceRight');
|
playAnim('danceRight');
|
||||||
|
|
||||||
@ -124,7 +101,7 @@ class Character extends FlxSprite
|
|||||||
|
|
||||||
case 'dad':
|
case 'dad':
|
||||||
// DAD ANIMATION LOADING CODE
|
// DAD ANIMATION LOADING CODE
|
||||||
tex = Paths.getSparrowAtlas('characters/DADDY_DEAREST', 'shared');
|
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);
|
||||||
animation.addByPrefix('singUP', 'Dad Sing Note UP', 24);
|
animation.addByPrefix('singUP', 'Dad Sing Note UP', 24);
|
||||||
@ -132,15 +109,11 @@ class Character extends FlxSprite
|
|||||||
animation.addByPrefix('singDOWN', 'Dad Sing Note DOWN', 24);
|
animation.addByPrefix('singDOWN', 'Dad Sing Note DOWN', 24);
|
||||||
animation.addByPrefix('singLEFT', 'Dad Sing Note LEFT', 24);
|
animation.addByPrefix('singLEFT', 'Dad Sing Note LEFT', 24);
|
||||||
|
|
||||||
addOffset('idle');
|
loadOffsetFile(curCharacter);
|
||||||
addOffset("singUP", -6, 50);
|
|
||||||
addOffset("singRIGHT", 0, 27);
|
|
||||||
addOffset("singLEFT", -10, 10);
|
|
||||||
addOffset("singDOWN", 0, -30);
|
|
||||||
|
|
||||||
playAnim('idle');
|
playAnim('idle');
|
||||||
case 'spooky':
|
case 'spooky':
|
||||||
tex = Paths.getSparrowAtlas('characters/spooky_kids_assets');
|
tex = Paths.getSparrowAtlas('spooky_kids_assets','shared',true);
|
||||||
frames = tex;
|
frames = tex;
|
||||||
animation.addByPrefix('singUP', 'spooky UP NOTE', 24, false);
|
animation.addByPrefix('singUP', 'spooky UP NOTE', 24, false);
|
||||||
animation.addByPrefix('singDOWN', 'spooky DOWN note', 24, false);
|
animation.addByPrefix('singDOWN', 'spooky DOWN note', 24, false);
|
||||||
@ -149,17 +122,11 @@ class Character extends FlxSprite
|
|||||||
animation.addByIndices('danceLeft', 'spooky dance idle', [0, 2, 6], "", 12, false);
|
animation.addByIndices('danceLeft', 'spooky dance idle', [0, 2, 6], "", 12, false);
|
||||||
animation.addByIndices('danceRight', 'spooky dance idle', [8, 10, 12, 14], "", 12, false);
|
animation.addByIndices('danceRight', 'spooky dance idle', [8, 10, 12, 14], "", 12, false);
|
||||||
|
|
||||||
addOffset('danceLeft');
|
loadOffsetFile(curCharacter);
|
||||||
addOffset('danceRight');
|
|
||||||
|
|
||||||
addOffset("singUP", -20, 26);
|
|
||||||
addOffset("singRIGHT", -130, -14);
|
|
||||||
addOffset("singLEFT", 130, -10);
|
|
||||||
addOffset("singDOWN", -50, -130);
|
|
||||||
|
|
||||||
playAnim('danceRight');
|
playAnim('danceRight');
|
||||||
case 'mom':
|
case 'mom':
|
||||||
tex = Paths.getSparrowAtlas('characters/Mom_Assets');
|
tex = Paths.getSparrowAtlas('Mom_Assets','shared',true);
|
||||||
frames = tex;
|
frames = tex;
|
||||||
|
|
||||||
animation.addByPrefix('idle', "Mom Idle", 24, false);
|
animation.addByPrefix('idle', "Mom Idle", 24, false);
|
||||||
@ -170,16 +137,12 @@ class Character extends FlxSprite
|
|||||||
// CUZ DAVE IS DUMB!
|
// CUZ DAVE IS DUMB!
|
||||||
animation.addByPrefix('singRIGHT', 'Mom Pose Left', 24, false);
|
animation.addByPrefix('singRIGHT', 'Mom Pose Left', 24, false);
|
||||||
|
|
||||||
addOffset('idle');
|
loadOffsetFile(curCharacter);
|
||||||
addOffset("singUP", 14, 71);
|
|
||||||
addOffset("singRIGHT", 10, -60);
|
|
||||||
addOffset("singLEFT", 250, -23);
|
|
||||||
addOffset("singDOWN", 20, -160);
|
|
||||||
|
|
||||||
playAnim('idle');
|
playAnim('idle');
|
||||||
|
|
||||||
case 'mom-car':
|
case 'mom-car':
|
||||||
tex = Paths.getSparrowAtlas('characters/momCar');
|
tex = Paths.getSparrowAtlas('momCar','shared',true);
|
||||||
frames = tex;
|
frames = tex;
|
||||||
|
|
||||||
animation.addByPrefix('idle', "Mom Idle", 24, false);
|
animation.addByPrefix('idle', "Mom Idle", 24, false);
|
||||||
@ -190,15 +153,11 @@ class Character extends FlxSprite
|
|||||||
// CUZ DAVE IS DUMB!
|
// CUZ DAVE IS DUMB!
|
||||||
animation.addByPrefix('singRIGHT', 'Mom Pose Left', 24, false);
|
animation.addByPrefix('singRIGHT', 'Mom Pose Left', 24, false);
|
||||||
|
|
||||||
addOffset('idle');
|
loadOffsetFile(curCharacter);
|
||||||
addOffset("singUP", 14, 71);
|
|
||||||
addOffset("singRIGHT", 10, -60);
|
|
||||||
addOffset("singLEFT", 250, -23);
|
|
||||||
addOffset("singDOWN", 20, -160);
|
|
||||||
|
|
||||||
playAnim('idle');
|
playAnim('idle');
|
||||||
case 'monster':
|
case 'monster':
|
||||||
tex = Paths.getSparrowAtlas('characters/Monster_Assets');
|
tex = Paths.getSparrowAtlas('Monster_Assets','shared',true);
|
||||||
frames = tex;
|
frames = tex;
|
||||||
animation.addByPrefix('idle', 'monster idle', 24, false);
|
animation.addByPrefix('idle', 'monster idle', 24, false);
|
||||||
animation.addByPrefix('singUP', 'monster up note', 24, false);
|
animation.addByPrefix('singUP', 'monster up note', 24, false);
|
||||||
@ -206,14 +165,10 @@ class Character extends FlxSprite
|
|||||||
animation.addByPrefix('singLEFT', 'Monster left note', 24, false);
|
animation.addByPrefix('singLEFT', 'Monster left note', 24, false);
|
||||||
animation.addByPrefix('singRIGHT', 'Monster Right note', 24, false);
|
animation.addByPrefix('singRIGHT', 'Monster Right note', 24, false);
|
||||||
|
|
||||||
addOffset('idle');
|
loadOffsetFile(curCharacter);
|
||||||
addOffset("singUP", -20, 50);
|
|
||||||
addOffset("singRIGHT", -51);
|
|
||||||
addOffset("singLEFT", -30);
|
|
||||||
addOffset("singDOWN", -30, -40);
|
|
||||||
playAnim('idle');
|
playAnim('idle');
|
||||||
case 'monster-christmas':
|
case 'monster-christmas':
|
||||||
tex = Paths.getSparrowAtlas('characters/monsterChristmas');
|
tex = Paths.getSparrowAtlas('monsterChristmas','shared',true);
|
||||||
frames = tex;
|
frames = tex;
|
||||||
animation.addByPrefix('idle', 'monster idle', 24, false);
|
animation.addByPrefix('idle', 'monster idle', 24, false);
|
||||||
animation.addByPrefix('singUP', 'monster up note', 24, false);
|
animation.addByPrefix('singUP', 'monster up note', 24, false);
|
||||||
@ -221,14 +176,10 @@ class Character extends FlxSprite
|
|||||||
animation.addByPrefix('singLEFT', 'Monster left note', 24, false);
|
animation.addByPrefix('singLEFT', 'Monster left note', 24, false);
|
||||||
animation.addByPrefix('singRIGHT', 'Monster Right note', 24, false);
|
animation.addByPrefix('singRIGHT', 'Monster Right note', 24, false);
|
||||||
|
|
||||||
addOffset('idle');
|
loadOffsetFile(curCharacter);
|
||||||
addOffset("singUP", -20, 50);
|
|
||||||
addOffset("singRIGHT", -51);
|
|
||||||
addOffset("singLEFT", -30);
|
|
||||||
addOffset("singDOWN", -40, -94);
|
|
||||||
playAnim('idle');
|
playAnim('idle');
|
||||||
case 'pico':
|
case 'pico':
|
||||||
tex = Paths.getSparrowAtlas('characters/Pico_FNF_assetss');
|
tex = Paths.getSparrowAtlas('Pico_FNF_assetss','shared',true);
|
||||||
frames = tex;
|
frames = tex;
|
||||||
animation.addByPrefix('idle', "Pico Idle Dance", 24);
|
animation.addByPrefix('idle', "Pico Idle Dance", 24);
|
||||||
animation.addByPrefix('singUP', 'pico Up note0', 24, false);
|
animation.addByPrefix('singUP', 'pico Up note0', 24, false);
|
||||||
@ -252,22 +203,14 @@ class Character extends FlxSprite
|
|||||||
animation.addByPrefix('singUPmiss', 'pico Up note miss', 24);
|
animation.addByPrefix('singUPmiss', 'pico Up note miss', 24);
|
||||||
animation.addByPrefix('singDOWNmiss', 'Pico Down Note MISS', 24);
|
animation.addByPrefix('singDOWNmiss', 'Pico Down Note MISS', 24);
|
||||||
|
|
||||||
addOffset('idle');
|
loadOffsetFile(curCharacter);
|
||||||
addOffset("singUP", -29, 27);
|
|
||||||
addOffset("singRIGHT", -68, -7);
|
|
||||||
addOffset("singLEFT", 65, 9);
|
|
||||||
addOffset("singDOWN", 200, -70);
|
|
||||||
addOffset("singUPmiss", -19, 67);
|
|
||||||
addOffset("singRIGHTmiss", -60, 41);
|
|
||||||
addOffset("singLEFTmiss", 62, 64);
|
|
||||||
addOffset("singDOWNmiss", 210, -28);
|
|
||||||
|
|
||||||
playAnim('idle');
|
playAnim('idle');
|
||||||
|
|
||||||
flipX = true;
|
flipX = true;
|
||||||
|
|
||||||
case 'bf':
|
case 'bf':
|
||||||
var tex = Paths.getSparrowAtlas('characters/BOYFRIEND', 'shared');
|
var tex = Paths.getSparrowAtlas('BOYFRIEND','shared',true);
|
||||||
frames = tex;
|
frames = tex;
|
||||||
|
|
||||||
trace(tex.frames.length);
|
trace(tex.frames.length);
|
||||||
@ -284,32 +227,19 @@ class Character extends FlxSprite
|
|||||||
animation.addByPrefix('hey', 'BF HEY', 24, false);
|
animation.addByPrefix('hey', 'BF HEY', 24, false);
|
||||||
|
|
||||||
animation.addByPrefix('firstDeath', "BF dies", 24, false);
|
animation.addByPrefix('firstDeath', "BF dies", 24, false);
|
||||||
animation.addByPrefix('deathLoop', "BF Dead Loop", 24, true);
|
animation.addByPrefix('deathLoop', "BF Dead Loop", 24, false);
|
||||||
animation.addByPrefix('deathConfirm', "BF Dead confirm", 24, false);
|
animation.addByPrefix('deathConfirm', "BF Dead confirm", 24, false);
|
||||||
|
|
||||||
animation.addByPrefix('scared', 'BF idle shaking', 24);
|
animation.addByPrefix('scared', 'BF idle shaking', 24);
|
||||||
|
|
||||||
addOffset('idle', -5);
|
loadOffsetFile(curCharacter);
|
||||||
addOffset("singUP", -29, 27);
|
|
||||||
addOffset("singRIGHT", -38, -7);
|
|
||||||
addOffset("singLEFT", 12, -6);
|
|
||||||
addOffset("singDOWN", -10, -50);
|
|
||||||
addOffset("singUPmiss", -29, 27);
|
|
||||||
addOffset("singRIGHTmiss", -30, 21);
|
|
||||||
addOffset("singLEFTmiss", 12, 24);
|
|
||||||
addOffset("singDOWNmiss", -11, -19);
|
|
||||||
addOffset("hey", 7, 4);
|
|
||||||
addOffset('firstDeath', 37, 11);
|
|
||||||
addOffset('deathLoop', 37, 5);
|
|
||||||
addOffset('deathConfirm', 37, 69);
|
|
||||||
addOffset('scared', -4);
|
|
||||||
|
|
||||||
playAnim('idle');
|
playAnim('idle');
|
||||||
|
|
||||||
flipX = true;
|
flipX = true;
|
||||||
|
|
||||||
case 'bf-christmas':
|
case 'bf-christmas':
|
||||||
var tex = Paths.getSparrowAtlas('characters/bfChristmas');
|
var tex = Paths.getSparrowAtlas('bfChristmas','shared',true);
|
||||||
frames = tex;
|
frames = tex;
|
||||||
animation.addByPrefix('idle', 'BF idle dance', 24, false);
|
animation.addByPrefix('idle', 'BF idle dance', 24, false);
|
||||||
animation.addByPrefix('singUP', 'BF NOTE UP0', 24, false);
|
animation.addByPrefix('singUP', 'BF NOTE UP0', 24, false);
|
||||||
@ -322,22 +252,13 @@ class Character extends FlxSprite
|
|||||||
animation.addByPrefix('singDOWNmiss', 'BF NOTE DOWN MISS', 24, false);
|
animation.addByPrefix('singDOWNmiss', 'BF NOTE DOWN MISS', 24, false);
|
||||||
animation.addByPrefix('hey', 'BF HEY', 24, false);
|
animation.addByPrefix('hey', 'BF HEY', 24, false);
|
||||||
|
|
||||||
addOffset('idle', -5);
|
loadOffsetFile(curCharacter);
|
||||||
addOffset("singUP", -29, 27);
|
|
||||||
addOffset("singRIGHT", -38, -7);
|
|
||||||
addOffset("singLEFT", 12, -6);
|
|
||||||
addOffset("singDOWN", -10, -50);
|
|
||||||
addOffset("singUPmiss", -29, 27);
|
|
||||||
addOffset("singRIGHTmiss", -30, 21);
|
|
||||||
addOffset("singLEFTmiss", 12, 24);
|
|
||||||
addOffset("singDOWNmiss", -11, -19);
|
|
||||||
addOffset("hey", 7, 4);
|
|
||||||
|
|
||||||
playAnim('idle');
|
playAnim('idle');
|
||||||
|
|
||||||
flipX = true;
|
flipX = true;
|
||||||
case 'bf-car':
|
case 'bf-car':
|
||||||
var tex = Paths.getSparrowAtlas('characters/bfCar');
|
var tex = Paths.getSparrowAtlas('bfCar','shared',true);
|
||||||
frames = tex;
|
frames = tex;
|
||||||
animation.addByPrefix('idle', 'BF idle dance', 24, false);
|
animation.addByPrefix('idle', 'BF idle dance', 24, false);
|
||||||
animation.addByPrefix('singUP', 'BF NOTE UP0', 24, false);
|
animation.addByPrefix('singUP', 'BF NOTE UP0', 24, false);
|
||||||
@ -349,20 +270,12 @@ class Character extends FlxSprite
|
|||||||
animation.addByPrefix('singRIGHTmiss', 'BF NOTE RIGHT MISS', 24, false);
|
animation.addByPrefix('singRIGHTmiss', 'BF NOTE RIGHT MISS', 24, false);
|
||||||
animation.addByPrefix('singDOWNmiss', 'BF NOTE DOWN MISS', 24, false);
|
animation.addByPrefix('singDOWNmiss', 'BF NOTE DOWN MISS', 24, false);
|
||||||
|
|
||||||
addOffset('idle', -5);
|
loadOffsetFile(curCharacter);
|
||||||
addOffset("singUP", -29, 27);
|
|
||||||
addOffset("singRIGHT", -38, -7);
|
|
||||||
addOffset("singLEFT", 12, -6);
|
|
||||||
addOffset("singDOWN", -10, -50);
|
|
||||||
addOffset("singUPmiss", -29, 27);
|
|
||||||
addOffset("singRIGHTmiss", -30, 21);
|
|
||||||
addOffset("singLEFTmiss", 12, 24);
|
|
||||||
addOffset("singDOWNmiss", -11, -19);
|
|
||||||
playAnim('idle');
|
playAnim('idle');
|
||||||
|
|
||||||
flipX = true;
|
flipX = true;
|
||||||
case 'bf-pixel':
|
case 'bf-pixel':
|
||||||
frames = Paths.getSparrowAtlas('characters/bfPixel');
|
frames = Paths.getSparrowAtlas('bfPixel','shared',true);
|
||||||
animation.addByPrefix('idle', 'BF IDLE', 24, false);
|
animation.addByPrefix('idle', 'BF IDLE', 24, false);
|
||||||
animation.addByPrefix('singUP', 'BF UP NOTE', 24, false);
|
animation.addByPrefix('singUP', 'BF UP NOTE', 24, false);
|
||||||
animation.addByPrefix('singLEFT', 'BF LEFT NOTE', 24, false);
|
animation.addByPrefix('singLEFT', 'BF LEFT NOTE', 24, false);
|
||||||
@ -373,15 +286,7 @@ class Character extends FlxSprite
|
|||||||
animation.addByPrefix('singRIGHTmiss', 'BF RIGHT MISS', 24, false);
|
animation.addByPrefix('singRIGHTmiss', 'BF RIGHT MISS', 24, false);
|
||||||
animation.addByPrefix('singDOWNmiss', 'BF DOWN MISS', 24, false);
|
animation.addByPrefix('singDOWNmiss', 'BF DOWN MISS', 24, false);
|
||||||
|
|
||||||
addOffset('idle');
|
loadOffsetFile(curCharacter);
|
||||||
addOffset("singUP");
|
|
||||||
addOffset("singRIGHT");
|
|
||||||
addOffset("singLEFT");
|
|
||||||
addOffset("singDOWN");
|
|
||||||
addOffset("singUPmiss");
|
|
||||||
addOffset("singRIGHTmiss");
|
|
||||||
addOffset("singLEFTmiss");
|
|
||||||
addOffset("singDOWNmiss");
|
|
||||||
|
|
||||||
setGraphicSize(Std.int(width * 6));
|
setGraphicSize(Std.int(width * 6));
|
||||||
updateHitbox();
|
updateHitbox();
|
||||||
@ -395,16 +300,14 @@ class Character extends FlxSprite
|
|||||||
|
|
||||||
flipX = true;
|
flipX = true;
|
||||||
case 'bf-pixel-dead':
|
case 'bf-pixel-dead':
|
||||||
frames = Paths.getSparrowAtlas('characters/bfPixelsDEAD');
|
frames = Paths.getSparrowAtlas('bfPixelsDEAD','shared',true);
|
||||||
animation.addByPrefix('singUP', "BF Dies pixel", 24, false);
|
animation.addByPrefix('singUP', "BF Dies pixel", 24, false);
|
||||||
animation.addByPrefix('firstDeath', "BF Dies pixel", 24, false);
|
animation.addByPrefix('firstDeath', "BF Dies pixel", 24, false);
|
||||||
animation.addByPrefix('deathLoop', "Retry Loop", 24, true);
|
animation.addByPrefix('deathLoop', "Retry Loop", 24, false);
|
||||||
animation.addByPrefix('deathConfirm', "RETRY CONFIRM", 24, false);
|
animation.addByPrefix('deathConfirm', "RETRY CONFIRM", 24, false);
|
||||||
animation.play('firstDeath');
|
animation.play('firstDeath');
|
||||||
|
|
||||||
addOffset('firstDeath');
|
loadOffsetFile(curCharacter);
|
||||||
addOffset('deathLoop', -37);
|
|
||||||
addOffset('deathConfirm', -37);
|
|
||||||
playAnim('firstDeath');
|
playAnim('firstDeath');
|
||||||
// pixel bullshit
|
// pixel bullshit
|
||||||
setGraphicSize(Std.int(width * 6));
|
setGraphicSize(Std.int(width * 6));
|
||||||
@ -413,18 +316,14 @@ class Character extends FlxSprite
|
|||||||
flipX = true;
|
flipX = true;
|
||||||
|
|
||||||
case 'senpai':
|
case 'senpai':
|
||||||
frames = Paths.getSparrowAtlas('characters/senpai');
|
frames = Paths.getSparrowAtlas('senpai','shared',true);
|
||||||
animation.addByPrefix('idle', 'Senpai Idle', 24, false);
|
animation.addByPrefix('idle', 'Senpai Idle', 24, false);
|
||||||
animation.addByPrefix('singUP', 'SENPAI UP NOTE', 24, false);
|
animation.addByPrefix('singUP', 'SENPAI UP NOTE', 24, false);
|
||||||
animation.addByPrefix('singLEFT', 'SENPAI LEFT NOTE', 24, false);
|
animation.addByPrefix('singLEFT', 'SENPAI LEFT NOTE', 24, false);
|
||||||
animation.addByPrefix('singRIGHT', 'SENPAI RIGHT NOTE', 24, false);
|
animation.addByPrefix('singRIGHT', 'SENPAI RIGHT NOTE', 24, false);
|
||||||
animation.addByPrefix('singDOWN', 'SENPAI DOWN NOTE', 24, false);
|
animation.addByPrefix('singDOWN', 'SENPAI DOWN NOTE', 24, false);
|
||||||
|
|
||||||
addOffset('idle');
|
loadOffsetFile(curCharacter);
|
||||||
addOffset("singUP", 5, 37);
|
|
||||||
addOffset("singRIGHT");
|
|
||||||
addOffset("singLEFT", 40);
|
|
||||||
addOffset("singDOWN", 14);
|
|
||||||
|
|
||||||
playAnim('idle');
|
playAnim('idle');
|
||||||
|
|
||||||
@ -433,18 +332,14 @@ class Character extends FlxSprite
|
|||||||
|
|
||||||
antialiasing = false;
|
antialiasing = false;
|
||||||
case 'senpai-angry':
|
case 'senpai-angry':
|
||||||
frames = Paths.getSparrowAtlas('characters/senpai');
|
frames = Paths.getSparrowAtlas('senpai','shared',true);
|
||||||
animation.addByPrefix('idle', 'Angry Senpai Idle', 24, false);
|
animation.addByPrefix('idle', 'Angry Senpai Idle', 24, false);
|
||||||
animation.addByPrefix('singUP', 'Angry Senpai UP NOTE', 24, false);
|
animation.addByPrefix('singUP', 'Angry Senpai UP NOTE', 24, false);
|
||||||
animation.addByPrefix('singLEFT', 'Angry Senpai LEFT NOTE', 24, false);
|
animation.addByPrefix('singLEFT', 'Angry Senpai LEFT NOTE', 24, false);
|
||||||
animation.addByPrefix('singRIGHT', 'Angry Senpai RIGHT NOTE', 24, false);
|
animation.addByPrefix('singRIGHT', 'Angry Senpai RIGHT NOTE', 24, false);
|
||||||
animation.addByPrefix('singDOWN', 'Angry Senpai DOWN NOTE', 24, false);
|
animation.addByPrefix('singDOWN', 'Angry Senpai DOWN NOTE', 24, false);
|
||||||
|
|
||||||
addOffset('idle');
|
loadOffsetFile(curCharacter);
|
||||||
addOffset("singUP", 5, 37);
|
|
||||||
addOffset("singRIGHT");
|
|
||||||
addOffset("singLEFT", 40);
|
|
||||||
addOffset("singDOWN", 14);
|
|
||||||
playAnim('idle');
|
playAnim('idle');
|
||||||
|
|
||||||
setGraphicSize(Std.int(width * 6));
|
setGraphicSize(Std.int(width * 6));
|
||||||
@ -453,18 +348,14 @@ class Character extends FlxSprite
|
|||||||
antialiasing = false;
|
antialiasing = false;
|
||||||
|
|
||||||
case 'spirit':
|
case 'spirit':
|
||||||
frames = Paths.getPackerAtlas('characters/spirit');
|
frames = Paths.getPackerAtlas('spirit','shared',false);
|
||||||
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);
|
||||||
animation.addByPrefix('singLEFT', "left_", 24, false);
|
animation.addByPrefix('singLEFT', "left_", 24, false);
|
||||||
animation.addByPrefix('singDOWN', "spirit down_", 24, false);
|
animation.addByPrefix('singDOWN', "spirit down_", 24, false);
|
||||||
|
|
||||||
addOffset('idle', -220, -280);
|
loadOffsetFile(curCharacter);
|
||||||
addOffset('singUP', -220, -240);
|
|
||||||
addOffset("singRIGHT", -220, -280);
|
|
||||||
addOffset("singLEFT", -200, -280);
|
|
||||||
addOffset("singDOWN", 170, 110);
|
|
||||||
|
|
||||||
setGraphicSize(Std.int(width * 6));
|
setGraphicSize(Std.int(width * 6));
|
||||||
updateHitbox();
|
updateHitbox();
|
||||||
@ -474,7 +365,7 @@ class Character extends FlxSprite
|
|||||||
antialiasing = false;
|
antialiasing = false;
|
||||||
|
|
||||||
case 'parents-christmas':
|
case 'parents-christmas':
|
||||||
frames = Paths.getSparrowAtlas('characters/mom_dad_christmas_assets');
|
frames = Paths.getSparrowAtlas('mom_dad_christmas_assets','shared',true);
|
||||||
animation.addByPrefix('idle', 'Parent Christmas Idle', 24, false);
|
animation.addByPrefix('idle', 'Parent Christmas Idle', 24, false);
|
||||||
animation.addByPrefix('singUP', 'Parent Up Note Dad', 24, false);
|
animation.addByPrefix('singUP', 'Parent Up Note Dad', 24, false);
|
||||||
animation.addByPrefix('singDOWN', 'Parent Down Note Dad', 24, false);
|
animation.addByPrefix('singDOWN', 'Parent Down Note Dad', 24, false);
|
||||||
@ -487,15 +378,7 @@ class Character extends FlxSprite
|
|||||||
animation.addByPrefix('singLEFT-alt', 'Parent Left Note Mom', 24, false);
|
animation.addByPrefix('singLEFT-alt', 'Parent Left Note Mom', 24, false);
|
||||||
animation.addByPrefix('singRIGHT-alt', 'Parent Right Note Mom', 24, false);
|
animation.addByPrefix('singRIGHT-alt', 'Parent Right Note Mom', 24, false);
|
||||||
|
|
||||||
addOffset('idle');
|
loadOffsetFile(curCharacter);
|
||||||
addOffset("singUP", -47, 24);
|
|
||||||
addOffset("singRIGHT", -1, -23);
|
|
||||||
addOffset("singLEFT", -30, 16);
|
|
||||||
addOffset("singDOWN", -31, -29);
|
|
||||||
addOffset("singUP-alt", -47, 24);
|
|
||||||
addOffset("singRIGHT-alt", -1, -24);
|
|
||||||
addOffset("singLEFT-alt", -30, 15);
|
|
||||||
addOffset("singDOWN-alt", -30, -27);
|
|
||||||
|
|
||||||
playAnim('idle');
|
playAnim('idle');
|
||||||
}
|
}
|
||||||
@ -525,6 +408,17 @@ class Character extends FlxSprite
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function loadOffsetFile(character:String)
|
||||||
|
{
|
||||||
|
var offset:Array<String> = CoolUtil.coolTextFile(Paths.txt('images/characters/' + character + "Offsets", 'shared'));
|
||||||
|
|
||||||
|
for (i in 0...offset.length)
|
||||||
|
{
|
||||||
|
var data:Array<String> = offset[i].split(' ');
|
||||||
|
addOffset(data[0], Std.parseInt(data[1]), Std.parseInt(data[2]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override function update(elapsed:Float)
|
override function update(elapsed:Float)
|
||||||
{
|
{
|
||||||
if (!curCharacter.startsWith('bf'))
|
if (!curCharacter.startsWith('bf'))
|
||||||
@ -561,13 +455,13 @@ class Character extends FlxSprite
|
|||||||
/**
|
/**
|
||||||
* FOR GF DANCING SHIT
|
* FOR GF DANCING SHIT
|
||||||
*/
|
*/
|
||||||
public function dance()
|
public function dance(forced:Bool = false)
|
||||||
{
|
{
|
||||||
if (!debugMode)
|
if (!debugMode)
|
||||||
{
|
{
|
||||||
switch (curCharacter)
|
switch (curCharacter)
|
||||||
{
|
{
|
||||||
case 'gf':
|
case 'gf' | 'gf-christmas' | 'gf-car' | 'gf-pixel':
|
||||||
if (!animation.curAnim.name.startsWith('hair'))
|
if (!animation.curAnim.name.startsWith('hair'))
|
||||||
{
|
{
|
||||||
danced = !danced;
|
danced = !danced;
|
||||||
@ -577,39 +471,6 @@ class Character extends FlxSprite
|
|||||||
else
|
else
|
||||||
playAnim('danceLeft');
|
playAnim('danceLeft');
|
||||||
}
|
}
|
||||||
|
|
||||||
case 'gf-christmas':
|
|
||||||
if (!animation.curAnim.name.startsWith('hair'))
|
|
||||||
{
|
|
||||||
danced = !danced;
|
|
||||||
|
|
||||||
if (danced)
|
|
||||||
playAnim('danceRight');
|
|
||||||
else
|
|
||||||
playAnim('danceLeft');
|
|
||||||
}
|
|
||||||
|
|
||||||
case 'gf-car':
|
|
||||||
if (!animation.curAnim.name.startsWith('hair'))
|
|
||||||
{
|
|
||||||
danced = !danced;
|
|
||||||
|
|
||||||
if (danced)
|
|
||||||
playAnim('danceRight');
|
|
||||||
else
|
|
||||||
playAnim('danceLeft');
|
|
||||||
}
|
|
||||||
case 'gf-pixel':
|
|
||||||
if (!animation.curAnim.name.startsWith('hair'))
|
|
||||||
{
|
|
||||||
danced = !danced;
|
|
||||||
|
|
||||||
if (danced)
|
|
||||||
playAnim('danceRight');
|
|
||||||
else
|
|
||||||
playAnim('danceLeft');
|
|
||||||
}
|
|
||||||
|
|
||||||
case 'spooky':
|
case 'spooky':
|
||||||
danced = !danced;
|
danced = !danced;
|
||||||
|
|
||||||
@ -618,7 +479,7 @@ class Character extends FlxSprite
|
|||||||
else
|
else
|
||||||
playAnim('danceLeft');
|
playAnim('danceLeft');
|
||||||
default:
|
default:
|
||||||
playAnim('idle');
|
playAnim('idle', forced);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -68,7 +68,23 @@ class Conductor
|
|||||||
trace("new BPM map BUDDY " + bpmChangeMap);
|
trace("new BPM map BUDDY " + bpmChangeMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function changeBPM(newBpm:Float)
|
public static function recalculateTimingStruct(SONG:Song)
|
||||||
|
{
|
||||||
|
for(i in SONG.eventObjects)
|
||||||
|
{
|
||||||
|
/*TimingStruct.addTiming(beat,bpm,endBeat, Std.parseFloat(OFFSET));
|
||||||
|
|
||||||
|
if (changeEvents.length != 0)
|
||||||
|
{
|
||||||
|
var data = TimingStruct.AllTimings[currentIndex - 1];
|
||||||
|
data.endBeat = beat;
|
||||||
|
data.length = (data.endBeat - data.startBeat) / (data.bpm / 60);
|
||||||
|
TimingStruct.AllTimings[currentIndex].startTime = data.startTime + data.length;
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function changeBPM(newBpm:Float, ?recalcLength = true)
|
||||||
{
|
{
|
||||||
bpm = newBpm;
|
bpm = newBpm;
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package;
|
package;
|
||||||
|
|
||||||
|
import flixel.input.gamepad.FlxGamepad;
|
||||||
import flixel.FlxG;
|
import flixel.FlxG;
|
||||||
import flixel.input.FlxInput;
|
import flixel.input.FlxInput;
|
||||||
import flixel.input.actions.FlxAction;
|
import flixel.input.actions.FlxAction;
|
||||||
@ -571,15 +572,29 @@ class Controls extends FlxActionSet
|
|||||||
//trace(FlxKey.fromString(FlxG.save.data.upBind));
|
//trace(FlxKey.fromString(FlxG.save.data.upBind));
|
||||||
|
|
||||||
removeKeyboard();
|
removeKeyboard();
|
||||||
|
if (gamepadsAdded.length != 0)
|
||||||
|
removeGamepad();
|
||||||
KeyBinds.keyCheck();
|
KeyBinds.keyCheck();
|
||||||
|
|
||||||
|
var buttons = new Map<Control,Array<FlxGamepadInputID>>();
|
||||||
|
|
||||||
|
buttons.set(Control.UP,[FlxGamepadInputID.fromString(FlxG.save.data.gpupBind)]);
|
||||||
|
buttons.set(Control.LEFT,[FlxGamepadInputID.fromString(FlxG.save.data.gpleftBind)]);
|
||||||
|
buttons.set(Control.DOWN,[FlxGamepadInputID.fromString(FlxG.save.data.gpdownBind)]);
|
||||||
|
buttons.set(Control.RIGHT,[FlxGamepadInputID.fromString(FlxG.save.data.gprightBind)]);
|
||||||
|
buttons.set(Control.ACCEPT,[FlxGamepadInputID.A]);
|
||||||
|
buttons.set(Control.BACK,[FlxGamepadInputID.B]);
|
||||||
|
buttons.set(Control.PAUSE,[FlxGamepadInputID.START]);
|
||||||
|
|
||||||
|
addGamepad(0,buttons);
|
||||||
|
|
||||||
inline bindKeys(Control.UP, [FlxKey.fromString(FlxG.save.data.upBind), FlxKey.UP]);
|
inline bindKeys(Control.UP, [FlxKey.fromString(FlxG.save.data.upBind), FlxKey.UP]);
|
||||||
inline bindKeys(Control.DOWN, [FlxKey.fromString(FlxG.save.data.downBind), FlxKey.DOWN]);
|
inline bindKeys(Control.DOWN, [FlxKey.fromString(FlxG.save.data.downBind), FlxKey.DOWN]);
|
||||||
inline bindKeys(Control.LEFT, [FlxKey.fromString(FlxG.save.data.leftBind), FlxKey.LEFT]);
|
inline bindKeys(Control.LEFT, [FlxKey.fromString(FlxG.save.data.leftBind), FlxKey.LEFT]);
|
||||||
inline bindKeys(Control.RIGHT, [FlxKey.fromString(FlxG.save.data.rightBind), FlxKey.RIGHT]);
|
inline bindKeys(Control.RIGHT, [FlxKey.fromString(FlxG.save.data.rightBind), FlxKey.RIGHT]);
|
||||||
inline bindKeys(Control.ACCEPT, [Z, SPACE, ENTER]);
|
inline bindKeys(Control.ACCEPT, [Z, SPACE, ENTER]);
|
||||||
inline bindKeys(Control.BACK, [BACKSPACE, ESCAPE]);
|
inline bindKeys(Control.BACK, [BACKSPACE, ESCAPE]);
|
||||||
inline bindKeys(Control.PAUSE, [P, ENTER, ESCAPE]);
|
inline bindKeys(Control.PAUSE, [ENTER, ESCAPE]);
|
||||||
inline bindKeys(Control.RESET, [FlxKey.fromString(FlxG.save.data.killBind)]);
|
inline bindKeys(Control.RESET, [FlxKey.fromString(FlxG.save.data.killBind)]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -599,6 +614,9 @@ class Controls extends FlxActionSet
|
|||||||
|
|
||||||
public function addGamepad(id:Int, ?buttonMap:Map<Control, Array<FlxGamepadInputID>>):Void
|
public function addGamepad(id:Int, ?buttonMap:Map<Control, Array<FlxGamepadInputID>>):Void
|
||||||
{
|
{
|
||||||
|
if (gamepadsAdded.contains(id))
|
||||||
|
gamepadsAdded.remove(id);
|
||||||
|
|
||||||
gamepadsAdded.push(id);
|
gamepadsAdded.push(id);
|
||||||
|
|
||||||
#if (haxe >= "4.0.0")
|
#if (haxe >= "4.0.0")
|
||||||
|
@ -6,11 +6,11 @@ using StringTools;
|
|||||||
|
|
||||||
class CoolUtil
|
class CoolUtil
|
||||||
{
|
{
|
||||||
public static var difficultyArray:Array<String> = ['EASY', "NORMAL", "HARD"];
|
public static var difficultyArray:Array<String> = ['Easy', "Normal", "Hard"];
|
||||||
|
|
||||||
public static function difficultyString():String
|
public static function difficultyFromInt(difficulty:Int):String
|
||||||
{
|
{
|
||||||
return difficultyArray[PlayState.storyDifficulty];
|
return difficultyArray[difficulty];
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function coolTextFile(path:String):Array<String>
|
public static function coolTextFile(path:String):Array<String>
|
||||||
|
@ -155,7 +155,7 @@ class DialogueBox extends FlxSpriteGroup
|
|||||||
portraitLeft.visible = false;
|
portraitLeft.visible = false;
|
||||||
if (PlayState.SONG.song.toLowerCase() == 'thorns')
|
if (PlayState.SONG.song.toLowerCase() == 'thorns')
|
||||||
{
|
{
|
||||||
portraitLeft.color = FlxColor.BLACK;
|
portraitLeft.visible = false;
|
||||||
swagDialogue.color = FlxColor.WHITE;
|
swagDialogue.color = FlxColor.WHITE;
|
||||||
dropText.color = FlxColor.BLACK;
|
dropText.color = FlxColor.BLACK;
|
||||||
}
|
}
|
||||||
@ -177,7 +177,7 @@ class DialogueBox extends FlxSpriteGroup
|
|||||||
dialogueStarted = true;
|
dialogueStarted = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (FlxG.keys.justPressed.ANY && dialogueStarted == true)
|
if (PlayerSettings.player1.controls.ACCEPT && dialogueStarted == true)
|
||||||
{
|
{
|
||||||
remove(dialogue);
|
remove(dialogue);
|
||||||
|
|
||||||
|
372
source/DiffCalc.hx
Normal file
@ -0,0 +1,372 @@
|
|||||||
|
import openfl.system.System;
|
||||||
|
import flixel.math.FlxMath;
|
||||||
|
import Song.SwagSong;
|
||||||
|
|
||||||
|
class SmallNote // basically Note.hx but small as fuck
|
||||||
|
{
|
||||||
|
public var strumTime:Float;
|
||||||
|
public var noteData:Int;
|
||||||
|
|
||||||
|
public function new(strum,data)
|
||||||
|
{
|
||||||
|
strumTime = strum;
|
||||||
|
noteData = data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class DiffCalc
|
||||||
|
{
|
||||||
|
public static var scale = 3 * 1.8;
|
||||||
|
|
||||||
|
public static var lastDiffHandOne:Array<Float> = [];
|
||||||
|
public static var lastDiffHandTwo:Array<Float> = [];
|
||||||
|
|
||||||
|
public static function CalculateDiff(song:SwagSong, ?accuracy:Float = .93)
|
||||||
|
{
|
||||||
|
trace('calcuilafjwaf');
|
||||||
|
// cleaned notes
|
||||||
|
var cleanedNotes:Array<SmallNote> = [];
|
||||||
|
|
||||||
|
if (song.notes == null)
|
||||||
|
return 0.0;
|
||||||
|
|
||||||
|
if (song.notes.length == 0)
|
||||||
|
return 0.0;
|
||||||
|
|
||||||
|
// find all of the notes
|
||||||
|
for(i in song.notes) // sections
|
||||||
|
{
|
||||||
|
for (ii in i.sectionNotes) // notes
|
||||||
|
{
|
||||||
|
if (ii[1] > 3 && !i.mustHitSection)
|
||||||
|
cleanedNotes.push(new SmallNote(ii[0],Math.floor(Math.abs(ii[1]))));
|
||||||
|
else if (ii[1] < 4 && i.mustHitSection)
|
||||||
|
cleanedNotes.push(new SmallNote(ii[0],Math.floor(Math.abs(ii[1]))));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
trace(cleanedNotes.length + " - playable notes");
|
||||||
|
|
||||||
|
var handOne:Array<SmallNote> = [];
|
||||||
|
var handTwo:Array<SmallNote> = [];
|
||||||
|
|
||||||
|
cleanedNotes.sort((a, b) -> Std.int(a.strumTime - b.strumTime));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var firstNoteTime = cleanedNotes[0].strumTime;
|
||||||
|
|
||||||
|
// normalize the notes
|
||||||
|
|
||||||
|
for(i in cleanedNotes)
|
||||||
|
{
|
||||||
|
i.strumTime = (i.strumTime - firstNoteTime) * 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i in cleanedNotes)
|
||||||
|
{
|
||||||
|
switch(i.noteData)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
handOne.push(i);
|
||||||
|
case 1:
|
||||||
|
handOne.push(i);
|
||||||
|
case 2:
|
||||||
|
handTwo.push(i);
|
||||||
|
case 3:
|
||||||
|
handTwo.push(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// collect all of the notes in each col
|
||||||
|
|
||||||
|
var leftHandCol:Array<Float> = []; // d 0
|
||||||
|
var leftMHandCol:Array<Float> = []; // f 1
|
||||||
|
var rightMHandCol:Array<Float> = []; // j 2
|
||||||
|
var rightHandCol:Array<Float> = []; // k 3
|
||||||
|
|
||||||
|
for(i in 0...handOne.length - 1)
|
||||||
|
{
|
||||||
|
if (handOne[i].noteData == 0)
|
||||||
|
leftHandCol.push(handOne[i].strumTime);
|
||||||
|
else
|
||||||
|
leftMHandCol.push(handOne[i].strumTime);
|
||||||
|
}
|
||||||
|
for(i in 0...handTwo.length - 1)
|
||||||
|
{
|
||||||
|
if (handTwo[i].noteData == 3)
|
||||||
|
rightHandCol.push(handTwo[i].strumTime);
|
||||||
|
else
|
||||||
|
rightMHandCol.push(handTwo[i].strumTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// length in segments of the song
|
||||||
|
var length = ((cleanedNotes[cleanedNotes.length - 1].strumTime / 1000) / 0.5);
|
||||||
|
|
||||||
|
// hackey way of creating a array with a length
|
||||||
|
var segmentsOne = new haxe.ds.Vector(Math.floor(length));
|
||||||
|
|
||||||
|
var segmentsTwo = new haxe.ds.Vector(Math.floor(length));
|
||||||
|
|
||||||
|
// set em all to array's (so no null's)
|
||||||
|
|
||||||
|
for(i in 0...segmentsOne.length)
|
||||||
|
segmentsOne[i] = new Array<SmallNote>();
|
||||||
|
for(i in 0...segmentsTwo.length)
|
||||||
|
segmentsTwo[i] = new Array<SmallNote>();
|
||||||
|
|
||||||
|
// algo loop
|
||||||
|
for(i in handOne)
|
||||||
|
{
|
||||||
|
var index = Std.int((((i.strumTime * 2) / 1000)));
|
||||||
|
if (index + 1 > length)
|
||||||
|
continue;
|
||||||
|
segmentsOne[index].push(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i in handTwo)
|
||||||
|
{
|
||||||
|
var index = Std.int((((i.strumTime * 2) / 1000)));
|
||||||
|
if (index + 1 > length)
|
||||||
|
continue;
|
||||||
|
segmentsTwo[index].push(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove 0 intervals
|
||||||
|
/*for(i in 0...segmentsOne.length)
|
||||||
|
{
|
||||||
|
if (segmentsOne[i].length == 0)
|
||||||
|
segmentsOne[i] = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i in 0...segmentsTwo.length)
|
||||||
|
{
|
||||||
|
if (segmentsTwo[i].length == 0)
|
||||||
|
segmentsTwo[i] = null;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
// get nps for both hands
|
||||||
|
|
||||||
|
var hand_npsOne:Array<Float> = new Array<Float>();
|
||||||
|
var hand_npsTwo:Array<Float> = new Array<Float>();
|
||||||
|
|
||||||
|
for(i in segmentsOne)
|
||||||
|
{
|
||||||
|
if (i == null)
|
||||||
|
continue;
|
||||||
|
hand_npsOne.push(i.length * scale * 1.6);
|
||||||
|
}
|
||||||
|
for(i in segmentsTwo)
|
||||||
|
{
|
||||||
|
if (i == null)
|
||||||
|
continue;
|
||||||
|
hand_npsTwo.push(i.length * scale * 1.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
// get the diff vector's for all of the hands
|
||||||
|
|
||||||
|
var hand_diffOne:Array<Float> = new Array<Float>();
|
||||||
|
var hand_diffTwo:Array<Float> = new Array<Float>();
|
||||||
|
|
||||||
|
for(i in 0...segmentsOne.length)
|
||||||
|
{
|
||||||
|
var ve = segmentsOne[i];
|
||||||
|
if (ve == null)
|
||||||
|
continue;
|
||||||
|
var fuckYouOne:Array<SmallNote> = [];
|
||||||
|
var fuckYouTwo:Array<SmallNote> = [];
|
||||||
|
for(note in ve)
|
||||||
|
{
|
||||||
|
switch(note.noteData)
|
||||||
|
{
|
||||||
|
case 0: // fingie 1
|
||||||
|
fuckYouOne.push(note);
|
||||||
|
case 1: // fingie 2
|
||||||
|
fuckYouTwo.push(note);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var one = fingieCalc(fuckYouOne,leftHandCol);
|
||||||
|
var two = fingieCalc(fuckYouTwo,leftMHandCol);
|
||||||
|
|
||||||
|
|
||||||
|
var bigFuck = ((((one > two ? one : two) * 8) + (hand_npsOne[i] / scale) * 5) / 13) * scale;
|
||||||
|
|
||||||
|
//trace(bigFuck + " - hand one [" + i + "]");
|
||||||
|
|
||||||
|
|
||||||
|
hand_diffOne.push(bigFuck);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i in 0...segmentsTwo.length)
|
||||||
|
{
|
||||||
|
var ve = segmentsTwo[i];
|
||||||
|
if (ve == null)
|
||||||
|
continue;
|
||||||
|
var fuckYouOne:Array<SmallNote> = [];
|
||||||
|
var fuckYouTwo:Array<SmallNote> = [];
|
||||||
|
for(note in ve)
|
||||||
|
{
|
||||||
|
switch(note.noteData)
|
||||||
|
{
|
||||||
|
case 2: // fingie 1
|
||||||
|
fuckYouOne.push(note);
|
||||||
|
case 3: // fingie 2
|
||||||
|
fuckYouTwo.push(note);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var one = fingieCalc(fuckYouOne,rightMHandCol);
|
||||||
|
var two = fingieCalc(fuckYouTwo,rightHandCol);
|
||||||
|
|
||||||
|
var bigFuck = ((((one > two ? one : two) * 8) + (hand_npsTwo[i] / scale) * 5) / 13) * scale;
|
||||||
|
|
||||||
|
hand_diffTwo.push(bigFuck);
|
||||||
|
|
||||||
|
// trace(bigFuck + " - hand two [" + i + "]");
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i in 0...4)
|
||||||
|
{
|
||||||
|
smoothBrain(hand_npsOne,0);
|
||||||
|
smoothBrain(hand_npsTwo,0);
|
||||||
|
|
||||||
|
smoothBrainTwo(hand_diffOne);
|
||||||
|
smoothBrainTwo(hand_diffTwo);
|
||||||
|
}
|
||||||
|
|
||||||
|
//trace(hand_diffOne);
|
||||||
|
//trace(hand_diffTwo);
|
||||||
|
|
||||||
|
//trace(hand_npsOne);
|
||||||
|
//trace(hand_npsTwo);
|
||||||
|
|
||||||
|
var point_npsOne:Array<Float> = new Array<Float>();
|
||||||
|
var point_npsTwo:Array<Float> = new Array<Float>();
|
||||||
|
|
||||||
|
for(i in segmentsOne)
|
||||||
|
{
|
||||||
|
if (i == null)
|
||||||
|
continue;
|
||||||
|
point_npsOne.push(i.length);
|
||||||
|
}
|
||||||
|
for(i in segmentsTwo)
|
||||||
|
{
|
||||||
|
if (i == null)
|
||||||
|
continue;
|
||||||
|
point_npsTwo.push(i.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
var maxPoints:Float = 0;
|
||||||
|
|
||||||
|
for(i in point_npsOne)
|
||||||
|
maxPoints += i;
|
||||||
|
for(i in point_npsTwo)
|
||||||
|
maxPoints += i;
|
||||||
|
|
||||||
|
if (accuracy > .965)
|
||||||
|
accuracy = .965;
|
||||||
|
|
||||||
|
lastDiffHandOne = hand_diffOne;
|
||||||
|
lastDiffHandTwo = hand_diffTwo;
|
||||||
|
|
||||||
|
|
||||||
|
return HelperFunctions.truncateFloat(chisel(accuracy,hand_diffOne,hand_diffTwo,point_npsOne,point_npsTwo,maxPoints),2);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function chisel(scoreGoal:Float,diffOne:Array<Float>,diffTwo:Array<Float>,pointsOne:Array<Float>,pointsTwo:Array<Float>,maxPoints:Float)
|
||||||
|
{
|
||||||
|
var lowerBound:Float = 0;
|
||||||
|
var upperBound:Float = 100;
|
||||||
|
|
||||||
|
while(upperBound - lowerBound > 0.01)
|
||||||
|
{
|
||||||
|
var average:Float = (upperBound + lowerBound) / 2;
|
||||||
|
var amtOfPoints:Float = calcuate(average,diffOne,pointsOne) + calcuate(average,diffTwo,pointsTwo);
|
||||||
|
if (amtOfPoints / maxPoints < scoreGoal)
|
||||||
|
lowerBound = average;
|
||||||
|
else
|
||||||
|
upperBound = average;
|
||||||
|
|
||||||
|
}
|
||||||
|
return upperBound;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function calcuate(midPoint:Float,diff:Array<Float>,points:Array<Float>)
|
||||||
|
{
|
||||||
|
var output:Float = 0;
|
||||||
|
|
||||||
|
for (i in 0...diff.length)
|
||||||
|
{
|
||||||
|
var res = diff[i];
|
||||||
|
if (midPoint > res)
|
||||||
|
output += points[i];
|
||||||
|
else
|
||||||
|
output += points[i] * Math.pow(midPoint / res,1.2);
|
||||||
|
}
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function findStupid(strumTime:Float, array:Array<Float>)
|
||||||
|
{
|
||||||
|
for(i in 0...array.length)
|
||||||
|
if (array[i] == strumTime)
|
||||||
|
return i;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function fingieCalc(floats:Array<SmallNote>, columArray:Array<Float>):Float
|
||||||
|
{
|
||||||
|
var sum:Float = 0;
|
||||||
|
if (floats.length == 0)
|
||||||
|
return 0;
|
||||||
|
var startIndex = findStupid(floats[0].strumTime,columArray);
|
||||||
|
if (startIndex == -1)
|
||||||
|
return 0;
|
||||||
|
for(i in floats)
|
||||||
|
{
|
||||||
|
sum += columArray[startIndex + 1] - columArray[startIndex];
|
||||||
|
startIndex++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sum == 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return (1375 * (floats.length)) / sum;
|
||||||
|
}
|
||||||
|
|
||||||
|
// based arrayer
|
||||||
|
// basicily smmoth the shit
|
||||||
|
public static function smoothBrain(npsVector:Array<Float>, weirdchamp:Float)
|
||||||
|
{
|
||||||
|
var floatOne = weirdchamp;
|
||||||
|
var floatTwo = weirdchamp;
|
||||||
|
|
||||||
|
for (i in 0...npsVector.length)
|
||||||
|
{
|
||||||
|
var result = npsVector[i];
|
||||||
|
|
||||||
|
var chunker = floatOne;
|
||||||
|
floatOne = floatTwo;
|
||||||
|
floatTwo = result;
|
||||||
|
|
||||||
|
npsVector[i] = (chunker + floatOne + floatTwo) / 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Smooth the shit but less
|
||||||
|
public static function smoothBrainTwo(diffVector:Array<Float>)
|
||||||
|
{
|
||||||
|
var floatZero:Float = 0;
|
||||||
|
|
||||||
|
for(i in 0...diffVector.length)
|
||||||
|
{
|
||||||
|
var result = diffVector[i];
|
||||||
|
|
||||||
|
var fuck = floatZero;
|
||||||
|
floatZero = result;
|
||||||
|
diffVector[i] = (fuck + floatZero) / 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
506
source/DiffOverview.hx
Normal file
@ -0,0 +1,506 @@
|
|||||||
|
package;
|
||||||
|
|
||||||
|
import Conductor.BPMChangeEvent;
|
||||||
|
import flixel.FlxCamera;
|
||||||
|
import flixel.math.FlxRect;
|
||||||
|
import Song.SwagSong;
|
||||||
|
import Section.SwagSection;
|
||||||
|
import flixel.system.FlxSound;
|
||||||
|
import flixel.input.gamepad.FlxGamepad;
|
||||||
|
import flixel.util.FlxAxes;
|
||||||
|
import flixel.FlxSubState;
|
||||||
|
import Options.Option;
|
||||||
|
import flixel.input.FlxInput;
|
||||||
|
import flixel.input.keyboard.FlxKey;
|
||||||
|
import flixel.FlxG;
|
||||||
|
import flixel.FlxObject;
|
||||||
|
import flixel.FlxSprite;
|
||||||
|
import flixel.effects.FlxFlicker;
|
||||||
|
import flixel.graphics.frames.FlxAtlasFrames;
|
||||||
|
import flixel.group.FlxGroup.FlxTypedGroup;
|
||||||
|
import flixel.text.FlxText;
|
||||||
|
import flixel.util.FlxSort;
|
||||||
|
import flixel.tweens.FlxEase;
|
||||||
|
import flixel.tweens.FlxTween;
|
||||||
|
import flixel.util.FlxColor;
|
||||||
|
import io.newgrounds.NG;
|
||||||
|
import lime.app.Application;
|
||||||
|
import lime.utils.Assets;
|
||||||
|
import flixel.math.FlxMath;
|
||||||
|
import flixel.text.FlxText;
|
||||||
|
import flixel.input.FlxKeyManager;
|
||||||
|
|
||||||
|
using StringTools;
|
||||||
|
|
||||||
|
class DiffOverview extends FlxSubState
|
||||||
|
{
|
||||||
|
var blackBox:FlxSprite;
|
||||||
|
|
||||||
|
var handOne:Array<Float>;
|
||||||
|
var handTwo:Array<Float>;
|
||||||
|
|
||||||
|
var giantText:FlxText;
|
||||||
|
|
||||||
|
var SONG:SwagSong;
|
||||||
|
var strumLine:FlxSprite;
|
||||||
|
var camHUD:FlxCamera;
|
||||||
|
|
||||||
|
var offset:FlxText;
|
||||||
|
|
||||||
|
public static var playerStrums:FlxTypedGroup<FlxSprite> = null;
|
||||||
|
|
||||||
|
override function create()
|
||||||
|
{
|
||||||
|
Conductor.songPosition = 0;
|
||||||
|
Conductor.lastSongPos = 0;
|
||||||
|
|
||||||
|
camHUD = new FlxCamera();
|
||||||
|
camHUD.bgColor.alpha = 0;
|
||||||
|
var camGame = new FlxCamera();
|
||||||
|
|
||||||
|
FlxG.cameras.add(camGame);
|
||||||
|
|
||||||
|
FlxG.cameras.add(camHUD);
|
||||||
|
|
||||||
|
FlxCamera.defaultCameras = [camGame];
|
||||||
|
|
||||||
|
playerStrums = new FlxTypedGroup<FlxSprite>();
|
||||||
|
|
||||||
|
SONG = FreeplayState.songData.get(FreeplayState.songs[FreeplayState.curSelected].songName)[FreeplayState.curDifficulty];
|
||||||
|
|
||||||
|
strumLine = new FlxSprite(0, (FlxG.height / 2) - 295).makeGraphic(FlxG.width, 10);
|
||||||
|
strumLine.scrollFactor.set();
|
||||||
|
|
||||||
|
blackBox = new FlxSprite(0, 0).makeGraphic(FlxG.width, FlxG.height, FlxColor.BLACK);
|
||||||
|
blackBox.alpha = 0;
|
||||||
|
add(blackBox);
|
||||||
|
|
||||||
|
FreeplayState.openedPreview = true;
|
||||||
|
|
||||||
|
handOne = DiffCalc.lastDiffHandOne;
|
||||||
|
handTwo = DiffCalc.lastDiffHandTwo;
|
||||||
|
for (i in 0...4)
|
||||||
|
{
|
||||||
|
// FlxG.log.add(i);
|
||||||
|
var babyArrow:FlxSprite = new FlxSprite(0, strumLine.y);
|
||||||
|
|
||||||
|
babyArrow.frames = Paths.getSparrowAtlas('NOTE_assets','shared');
|
||||||
|
babyArrow.animation.addByPrefix('green', 'arrowUP');
|
||||||
|
babyArrow.animation.addByPrefix('blue', 'arrowDOWN');
|
||||||
|
babyArrow.animation.addByPrefix('purple', 'arrowLEFT');
|
||||||
|
babyArrow.animation.addByPrefix('red', 'arrowRIGHT');
|
||||||
|
if(FlxG.save.data.antialiasing)
|
||||||
|
{
|
||||||
|
babyArrow.antialiasing = true;
|
||||||
|
}
|
||||||
|
babyArrow.setGraphicSize(Std.int(babyArrow.width * 0.7));
|
||||||
|
|
||||||
|
switch (Math.abs(i))
|
||||||
|
{
|
||||||
|
case 2:
|
||||||
|
babyArrow.x += Note.swagWidth * 2;
|
||||||
|
babyArrow.animation.addByPrefix('static', 'arrowUP');
|
||||||
|
babyArrow.animation.addByPrefix('pressed', 'up press', 24, false);
|
||||||
|
babyArrow.animation.addByPrefix('confirm', 'up confirm', 24, false);
|
||||||
|
case 3:
|
||||||
|
babyArrow.x += Note.swagWidth * 3;
|
||||||
|
babyArrow.animation.addByPrefix('static', 'arrowRIGHT');
|
||||||
|
babyArrow.animation.addByPrefix('pressed', 'right press', 24, false);
|
||||||
|
babyArrow.animation.addByPrefix('confirm', 'right confirm', 24, false);
|
||||||
|
case 1:
|
||||||
|
babyArrow.x += Note.swagWidth * 1;
|
||||||
|
babyArrow.animation.addByPrefix('static', 'arrowDOWN');
|
||||||
|
babyArrow.animation.addByPrefix('pressed', 'down press', 24, false);
|
||||||
|
babyArrow.animation.addByPrefix('confirm', 'down confirm', 24, false);
|
||||||
|
case 0:
|
||||||
|
babyArrow.x += Note.swagWidth * 0;
|
||||||
|
babyArrow.animation.addByPrefix('static', 'arrowLEFT');
|
||||||
|
babyArrow.animation.addByPrefix('pressed', 'left press', 24, false);
|
||||||
|
babyArrow.animation.addByPrefix('confirm', 'left confirm', 24, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
babyArrow.updateHitbox();
|
||||||
|
babyArrow.scrollFactor.set();
|
||||||
|
|
||||||
|
babyArrow.y -= 10;
|
||||||
|
babyArrow.alpha = 1;
|
||||||
|
|
||||||
|
babyArrow.ID = i;
|
||||||
|
|
||||||
|
playerStrums.add(babyArrow);
|
||||||
|
|
||||||
|
babyArrow.animation.play('static');
|
||||||
|
babyArrow.x += 50;
|
||||||
|
babyArrow.x += ((FlxG.width / 2));
|
||||||
|
}
|
||||||
|
|
||||||
|
add(playerStrums);
|
||||||
|
|
||||||
|
generateSong("assItch");
|
||||||
|
|
||||||
|
playerStrums.cameras = [camHUD];
|
||||||
|
notes.cameras = [camHUD];
|
||||||
|
blackBox.cameras = [camHUD];
|
||||||
|
|
||||||
|
blackBox.x = playerStrums.members[0].x;
|
||||||
|
blackBox.y = strumLine.y;
|
||||||
|
|
||||||
|
camHUD.zoom = 0.6;
|
||||||
|
camHUD.alpha = 0;
|
||||||
|
camHUD.height = 5000;
|
||||||
|
blackBox.height = camHUD.height;
|
||||||
|
|
||||||
|
camHUD.x += 280;
|
||||||
|
|
||||||
|
blackBox.y -= 100;
|
||||||
|
blackBox.x -= 100;
|
||||||
|
|
||||||
|
offset = new FlxText(10,FlxG.height - 40,0,"Offset: " + HelperFunctions.truncateFloat(FlxG.save.data.offset,0) + " (LEFT/RIGHT to decrease/increase)",16);
|
||||||
|
offset.setBorderStyle(FlxTextBorderStyle.OUTLINE,FlxColor.BLACK,4,1);
|
||||||
|
offset.color = FlxColor.WHITE;
|
||||||
|
offset.scrollFactor.set();
|
||||||
|
//add(offset);
|
||||||
|
|
||||||
|
FlxTween.tween(blackBox, {alpha: 0.5}, 1, {ease: FlxEase.expoInOut});
|
||||||
|
FlxTween.tween(camHUD, {alpha: 1}, 0.5, {ease: FlxEase.expoInOut});
|
||||||
|
FlxTween.tween(offset, {alpha: 1}, 0.5, {ease: FlxEase.expoInOut});
|
||||||
|
|
||||||
|
trace('pog');
|
||||||
|
|
||||||
|
super.create();
|
||||||
|
}
|
||||||
|
|
||||||
|
function endSong()
|
||||||
|
{
|
||||||
|
if (stopDoingShit)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
function resyncVocals():Void
|
||||||
|
{
|
||||||
|
vocals.pause();
|
||||||
|
|
||||||
|
FlxG.sound.music.play();
|
||||||
|
Conductor.songPosition = FlxG.sound.music.time;
|
||||||
|
vocals.time = Conductor.songPosition;
|
||||||
|
vocals.play();
|
||||||
|
}
|
||||||
|
|
||||||
|
public var stopDoingShit = false;
|
||||||
|
|
||||||
|
public var currentStep = 0;
|
||||||
|
public var oldStep = 0;
|
||||||
|
|
||||||
|
private function updateCurStep():Void
|
||||||
|
{
|
||||||
|
var lastChange:BPMChangeEvent = {
|
||||||
|
stepTime: 0,
|
||||||
|
songTime: 0,
|
||||||
|
bpm: 0
|
||||||
|
}
|
||||||
|
for (i in 0...Conductor.bpmChangeMap.length)
|
||||||
|
{
|
||||||
|
if (Conductor.songPosition >= Conductor.bpmChangeMap[i].songTime)
|
||||||
|
lastChange = Conductor.bpmChangeMap[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
currentStep = lastChange.stepTime + Math.floor((Conductor.songPosition - lastChange.songTime) / Conductor.stepCrochet);
|
||||||
|
}
|
||||||
|
|
||||||
|
function stepHit()
|
||||||
|
{
|
||||||
|
if (FlxG.sound.music.time > Conductor.songPosition + 20 || FlxG.sound.music.time < Conductor.songPosition - 20)
|
||||||
|
{
|
||||||
|
trace("resync");
|
||||||
|
resyncVocals();
|
||||||
|
}
|
||||||
|
oldStep = currentStep;
|
||||||
|
}
|
||||||
|
|
||||||
|
function offsetChange()
|
||||||
|
{
|
||||||
|
for (i in unspawnNotes)
|
||||||
|
i.strumTime = i.baseStrum + FlxG.save.data.offset;
|
||||||
|
for (i in notes)
|
||||||
|
i.strumTime = i.baseStrum + FlxG.save.data.offset;
|
||||||
|
}
|
||||||
|
|
||||||
|
var frames = 0;
|
||||||
|
|
||||||
|
override function update(elapsed:Float)
|
||||||
|
{
|
||||||
|
super.update(elapsed);
|
||||||
|
|
||||||
|
|
||||||
|
// input
|
||||||
|
|
||||||
|
if (frames < 10)
|
||||||
|
{
|
||||||
|
frames++;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stopDoingShit)
|
||||||
|
return;
|
||||||
|
|
||||||
|
updateCurStep();
|
||||||
|
|
||||||
|
if (oldStep != currentStep && currentStep > 0)
|
||||||
|
stepHit();
|
||||||
|
|
||||||
|
if (FlxG.keys.pressed.SPACE)
|
||||||
|
{
|
||||||
|
stopDoingShit = true;
|
||||||
|
quit();
|
||||||
|
}
|
||||||
|
|
||||||
|
var gamepad:FlxGamepad = FlxG.gamepads.lastActive;
|
||||||
|
|
||||||
|
if (gamepad != null)
|
||||||
|
if (gamepad.justPressed.X)
|
||||||
|
{
|
||||||
|
stopDoingShit = true;
|
||||||
|
quit();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*if (FlxG.keys.pressed.RIGHT)
|
||||||
|
{
|
||||||
|
if (FlxG.keys.pressed.SHIFT)
|
||||||
|
{
|
||||||
|
FlxG.save.data.offset++;
|
||||||
|
offsetChange();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (FlxG.keys.pressed.LEFT)
|
||||||
|
{
|
||||||
|
if (FlxG.keys.pressed.SHIFT)
|
||||||
|
{
|
||||||
|
FlxG.save.data.offset--;
|
||||||
|
offsetChange();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (FlxG.keys.justPressed.RIGHT)
|
||||||
|
{
|
||||||
|
FlxG.save.data.offset++;
|
||||||
|
offsetChange();
|
||||||
|
}
|
||||||
|
if (FlxG.keys.justPressed.LEFT)
|
||||||
|
{
|
||||||
|
FlxG.save.data.offset--;
|
||||||
|
offsetChange();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
offset.text = "Offset: " + HelperFunctions.truncateFloat(FlxG.save.data.offset,0) + " (LEFT/RIGHT to decrease/increase, SHIFT to go faster) - Time: " + HelperFunctions.truncateFloat(Conductor.songPosition / 1000,0) + "s - Step: " + currentStep;
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (vocals != null)
|
||||||
|
if (vocals.playing)
|
||||||
|
Conductor.songPosition += FlxG.elapsed * 1000;
|
||||||
|
|
||||||
|
if (unspawnNotes[0] != null)
|
||||||
|
{
|
||||||
|
if (unspawnNotes[0].strumTime - Conductor.songPosition < 3500)
|
||||||
|
{
|
||||||
|
var dunceNote:Note = unspawnNotes[0];
|
||||||
|
notes.add(dunceNote);
|
||||||
|
|
||||||
|
var index:Int = unspawnNotes.indexOf(dunceNote);
|
||||||
|
unspawnNotes.splice(index, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
notes.forEachAlive(function(daNote:Note)
|
||||||
|
{
|
||||||
|
// instead of doing stupid y > FlxG.height
|
||||||
|
// we be men and actually calculate the time :)
|
||||||
|
if (daNote.tooLate)
|
||||||
|
{
|
||||||
|
daNote.active = false;
|
||||||
|
daNote.visible = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
daNote.visible = true;
|
||||||
|
daNote.active = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
daNote.y = (playerStrums.members[Math.floor(Math.abs(daNote.noteData))].y
|
||||||
|
- 0.45 * (Conductor.songPosition - daNote.strumTime) * FlxMath.roundDecimal(SONG.speed,
|
||||||
|
2));
|
||||||
|
|
||||||
|
if (daNote.isSustainNote)
|
||||||
|
{
|
||||||
|
daNote.y -= daNote.height / 2;
|
||||||
|
|
||||||
|
if ((!daNote.mustPress || daNote.wasGoodHit || daNote.prevNote.wasGoodHit && !daNote.canBeHit)
|
||||||
|
&& daNote.y + daNote.offset.y * daNote.scale.y <= (strumLine.y + Note.swagWidth / 2))
|
||||||
|
{
|
||||||
|
// Clip to strumline
|
||||||
|
var swagRect = new FlxRect(0, 0, daNote.width / daNote.scale.x, daNote.height / daNote.scale.y);
|
||||||
|
swagRect.y = (playerStrums.members[Math.floor(Math.abs(daNote.noteData))].y + Note.swagWidth / 2 - daNote.y) / daNote.scale.y;
|
||||||
|
swagRect.height -= swagRect.y;
|
||||||
|
|
||||||
|
daNote.clipRect = swagRect;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
daNote.visible = playerStrums.members[Math.floor(Math.abs(daNote.noteData))].visible;
|
||||||
|
daNote.x = playerStrums.members[Math.floor(Math.abs(daNote.noteData))].x;
|
||||||
|
if (!daNote.isSustainNote)
|
||||||
|
daNote.angle = playerStrums.members[Math.floor(Math.abs(daNote.noteData))].angle;
|
||||||
|
daNote.alpha = playerStrums.members[Math.floor(Math.abs(daNote.noteData))].alpha;
|
||||||
|
|
||||||
|
// auto hit
|
||||||
|
|
||||||
|
if(daNote.y < strumLine.y)
|
||||||
|
{
|
||||||
|
// Force good note hit regardless if it's too late to hit it or not as a fail safe
|
||||||
|
if(daNote.canBeHit && daNote.mustPress || daNote.tooLate && daNote.mustPress)
|
||||||
|
{
|
||||||
|
|
||||||
|
daNote.wasGoodHit = true;
|
||||||
|
vocals.volume = 1;
|
||||||
|
|
||||||
|
daNote.kill();
|
||||||
|
notes.remove(daNote, true);
|
||||||
|
daNote.destroy();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function quit()
|
||||||
|
{
|
||||||
|
FlxTween.tween(blackBox, {alpha: 0}, 1, {ease: FlxEase.expoInOut});
|
||||||
|
FlxTween.tween(camHUD, {alpha: 0}, 1, {ease: FlxEase.expoInOut});
|
||||||
|
FlxTween.tween(offset, {alpha: 0}, 1, {ease: FlxEase.expoInOut});
|
||||||
|
|
||||||
|
vocals.fadeOut();
|
||||||
|
|
||||||
|
FreeplayState.openedPreview = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
var vocals:FlxSound;
|
||||||
|
|
||||||
|
var notes:FlxTypedGroup<Note>;
|
||||||
|
var unspawnNotes:Array<Note> = [];
|
||||||
|
|
||||||
|
public function generateSong(dataPath:String):Void
|
||||||
|
{
|
||||||
|
// FlxG.log.add(ChartParser.parse());
|
||||||
|
|
||||||
|
var songData = FreeplayState.songData.get(FreeplayState.songs[FreeplayState.curSelected].songName)[FreeplayState.curDifficulty];
|
||||||
|
Conductor.changeBPM(songData.bpm);
|
||||||
|
|
||||||
|
if (SONG.needsVoices)
|
||||||
|
vocals = new FlxSound().loadEmbedded(Paths.voices(SONG.song));
|
||||||
|
else
|
||||||
|
vocals = new FlxSound();
|
||||||
|
|
||||||
|
trace('loaded vocals');
|
||||||
|
|
||||||
|
FlxG.sound.list.add(vocals);
|
||||||
|
|
||||||
|
notes = new FlxTypedGroup<Note>();
|
||||||
|
add(notes);
|
||||||
|
|
||||||
|
var noteData:Array<SwagSection>;
|
||||||
|
|
||||||
|
// NEW SHIT
|
||||||
|
noteData = songData.notes;
|
||||||
|
|
||||||
|
var playerCounter:Int = 0;
|
||||||
|
|
||||||
|
var daBeats:Int = 0; // Not exactly representative of 'daBeats' lol, just how much it has looped
|
||||||
|
for (section in noteData)
|
||||||
|
{
|
||||||
|
var coolSection:Int = Std.int(section.lengthInSteps / 4);
|
||||||
|
|
||||||
|
for (songNotes in section.sectionNotes)
|
||||||
|
{
|
||||||
|
var daStrumTime:Float = songNotes[0] + FlxG.save.data.offset;
|
||||||
|
if (daStrumTime < 0)
|
||||||
|
daStrumTime = 0;
|
||||||
|
var daNoteData:Int = Std.int(songNotes[1] % 4);
|
||||||
|
|
||||||
|
var gottaHitNote:Bool = section.mustHitSection;
|
||||||
|
|
||||||
|
if (songNotes[1] > 3)
|
||||||
|
{
|
||||||
|
gottaHitNote = !section.mustHitSection;
|
||||||
|
}
|
||||||
|
|
||||||
|
var oldNote:Note;
|
||||||
|
if (unspawnNotes.length > 0)
|
||||||
|
oldNote = unspawnNotes[Std.int(unspawnNotes.length - 1)];
|
||||||
|
else
|
||||||
|
oldNote = null;
|
||||||
|
|
||||||
|
var swagNote:Note = new Note(daStrumTime, daNoteData, oldNote,false, true);
|
||||||
|
|
||||||
|
|
||||||
|
if (!gottaHitNote)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
swagNote.baseStrum = Math.round(songNotes[0]);
|
||||||
|
|
||||||
|
swagNote.sustainLength = songNotes[2];
|
||||||
|
swagNote.scrollFactor.set(0, 0);
|
||||||
|
|
||||||
|
var susLength:Float = swagNote.sustainLength;
|
||||||
|
|
||||||
|
susLength = susLength / Conductor.stepCrochet;
|
||||||
|
unspawnNotes.push(swagNote);
|
||||||
|
|
||||||
|
for (susNote in 0...Math.floor(susLength))
|
||||||
|
{
|
||||||
|
oldNote = unspawnNotes[Std.int(unspawnNotes.length - 1)];
|
||||||
|
|
||||||
|
var sustainNote:Note = new Note(daStrumTime + (Conductor.stepCrochet * susNote) + Conductor.stepCrochet, daNoteData, oldNote, true, true);
|
||||||
|
sustainNote.scrollFactor.set();
|
||||||
|
unspawnNotes.push(sustainNote);
|
||||||
|
|
||||||
|
sustainNote.mustPress = gottaHitNote;
|
||||||
|
|
||||||
|
if (sustainNote.mustPress)
|
||||||
|
{
|
||||||
|
sustainNote.x += FlxG.width / 2; // general offset
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
swagNote.mustPress = gottaHitNote;
|
||||||
|
|
||||||
|
if (swagNote.mustPress)
|
||||||
|
{
|
||||||
|
swagNote.x += FlxG.width / 2; // general offset
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
daBeats += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// trace(unspawnNotes.length);
|
||||||
|
// playerCounter += 1;
|
||||||
|
|
||||||
|
unspawnNotes.sort(sortByShit);
|
||||||
|
|
||||||
|
Conductor.mapBPMChanges(SONG);
|
||||||
|
Conductor.changeBPM(SONG.bpm);
|
||||||
|
|
||||||
|
FlxG.sound.playMusic(Paths.inst(SONG.song), 1, false);
|
||||||
|
FlxG.sound.music.onComplete = endSong;
|
||||||
|
vocals.play();
|
||||||
|
}
|
||||||
|
|
||||||
|
function sortByShit(Obj1:Note, Obj2:Note):Int
|
||||||
|
{
|
||||||
|
return FlxSort.byValues(FlxSort.ASCENDING, Obj1.strumTime, Obj2.strumTime);
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,15 @@
|
|||||||
package;
|
package;
|
||||||
|
import lime.app.Application;
|
||||||
|
import openfl.utils.Future;
|
||||||
|
import openfl.media.Sound;
|
||||||
|
import flixel.system.FlxSound;
|
||||||
|
#if sys
|
||||||
|
import smTools.SMFile;
|
||||||
|
import sys.FileSystem;
|
||||||
|
import sys.io.File;
|
||||||
|
#end
|
||||||
|
import Song.SwagSong;
|
||||||
|
import flixel.input.gamepad.FlxGamepad;
|
||||||
import flash.text.TextField;
|
import flash.text.TextField;
|
||||||
import flixel.FlxG;
|
import flixel.FlxG;
|
||||||
import flixel.FlxSprite;
|
import flixel.FlxSprite;
|
||||||
@ -19,15 +29,17 @@ using StringTools;
|
|||||||
|
|
||||||
class FreeplayState extends MusicBeatState
|
class FreeplayState extends MusicBeatState
|
||||||
{
|
{
|
||||||
var songs:Array<SongMetadata> = [];
|
public static var songs:Array<SongMetadata> = [];
|
||||||
|
|
||||||
var selector:FlxText;
|
var selector:FlxText;
|
||||||
var curSelected:Int = 0;
|
public static var curSelected:Int = 0;
|
||||||
var curDifficulty:Int = 1;
|
public static var curDifficulty:Int = 1;
|
||||||
|
|
||||||
var scoreText:FlxText;
|
var scoreText:FlxText;
|
||||||
var comboText:FlxText;
|
var comboText:FlxText;
|
||||||
var diffText:FlxText;
|
var diffText:FlxText;
|
||||||
|
var diffCalcText:FlxText;
|
||||||
|
var previewtext:FlxText;
|
||||||
var lerpScore:Int = 0;
|
var lerpScore:Int = 0;
|
||||||
var intendedScore:Int = 0;
|
var intendedScore:Int = 0;
|
||||||
var combo:String = '';
|
var combo:String = '';
|
||||||
@ -37,16 +49,110 @@ class FreeplayState extends MusicBeatState
|
|||||||
|
|
||||||
private var iconArray:Array<HealthIcon> = [];
|
private var iconArray:Array<HealthIcon> = [];
|
||||||
|
|
||||||
|
public static var openedPreview = false;
|
||||||
|
|
||||||
|
public static var songData:Map<String,Array<SwagSong>> = [];
|
||||||
|
|
||||||
|
public static function loadDiff(diff:Int, format:String, name:String, array:Array<SwagSong>)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
array.push(Song.loadFromJson(Highscore.formatSong(format, diff), name));
|
||||||
|
}
|
||||||
|
catch(ex)
|
||||||
|
{
|
||||||
|
// do nada
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override function create()
|
override function create()
|
||||||
{
|
{
|
||||||
var initSonglist = CoolUtil.coolTextFile(Paths.txt('freeplaySonglist'));
|
var initSonglist = CoolUtil.coolTextFile(Paths.txt('data/freeplaySonglist'));
|
||||||
|
|
||||||
|
//var diffList = "";
|
||||||
|
|
||||||
|
songData = [];
|
||||||
|
songs = [];
|
||||||
|
|
||||||
for (i in 0...initSonglist.length)
|
for (i in 0...initSonglist.length)
|
||||||
{
|
{
|
||||||
var data:Array<String> = initSonglist[i].split(':');
|
var data:Array<String> = initSonglist[i].split(':');
|
||||||
songs.push(new SongMetadata(data[0], Std.parseInt(data[2]), data[1]));
|
var meta = new SongMetadata(data[0], Std.parseInt(data[2]), data[1]);
|
||||||
|
var format = StringTools.replace(meta.songName, " ", "-");
|
||||||
|
switch (format) {
|
||||||
|
case 'Dad-Battle': format = 'Dadbattle';
|
||||||
|
case 'Philly-Nice': format = 'Philly';
|
||||||
|
}
|
||||||
|
|
||||||
|
var diffs = [];
|
||||||
|
var diffsThatExist = [];
|
||||||
|
|
||||||
|
|
||||||
|
#if sys
|
||||||
|
if (FileSystem.exists('assets/data/${format}/${format}-hard.json'))
|
||||||
|
diffsThatExist.push("Hard");
|
||||||
|
if (FileSystem.exists('assets/data/${format}/${format}-easy.json'))
|
||||||
|
diffsThatExist.push("Easy");
|
||||||
|
if (FileSystem.exists('assets/data/${format}/${format}.json'))
|
||||||
|
diffsThatExist.push("Normal");
|
||||||
|
|
||||||
|
if (diffsThatExist.length == 0)
|
||||||
|
{
|
||||||
|
Application.current.window.alert("No difficulties found for chart, skipping.",meta.songName + " Chart");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
diffsThatExist = ["Easy","Normal","Hard"];
|
||||||
|
#end
|
||||||
|
if (diffsThatExist.contains("Easy"))
|
||||||
|
FreeplayState.loadDiff(0,format,meta.songName,diffs);
|
||||||
|
if (diffsThatExist.contains("Normal"))
|
||||||
|
FreeplayState.loadDiff(1,format,meta.songName,diffs);
|
||||||
|
if (diffsThatExist.contains("Hard"))
|
||||||
|
FreeplayState.loadDiff(2,format,meta.songName,diffs);
|
||||||
|
|
||||||
|
meta.diffs = diffsThatExist;
|
||||||
|
|
||||||
|
if (diffsThatExist.length != 3)
|
||||||
|
trace("I ONLY FOUND " + diffsThatExist);
|
||||||
|
|
||||||
|
FreeplayState.songData.set(meta.songName,diffs);
|
||||||
|
trace('loaded diffs for ' + meta.songName);
|
||||||
|
songs.push(meta);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
trace("tryin to load sm files");
|
||||||
|
|
||||||
|
#if sys
|
||||||
|
for(i in FileSystem.readDirectory("assets/sm/"))
|
||||||
|
{
|
||||||
|
trace(i);
|
||||||
|
if (FileSystem.isDirectory("assets/sm/" + i))
|
||||||
|
{
|
||||||
|
trace("Reading SM file dir " + i);
|
||||||
|
for (file in FileSystem.readDirectory("assets/sm/" + i))
|
||||||
|
{
|
||||||
|
if (file.contains(" "))
|
||||||
|
FileSystem.rename("assets/sm/" + i + "/" + file,"assets/sm/" + i + "/" + file.replace(" ","_"));
|
||||||
|
if (file.endsWith(".sm"))
|
||||||
|
{
|
||||||
|
trace("reading " + file);
|
||||||
|
var file:SMFile = SMFile.loadFile("assets/sm/" + i + "/" + file.replace(" ","_"));
|
||||||
|
trace("Converting " + file.header.TITLE);
|
||||||
|
var data = file.convertToFNF("assets/sm/" + i + "/converted.json");
|
||||||
|
var meta = new SongMetadata(file.header.TITLE, 0, "sm",file,"assets/sm/" + i);
|
||||||
|
songs.push(meta);
|
||||||
|
var song = Song.loadFromJsonRAW(data);
|
||||||
|
songData.set(file.header.TITLE, [song,song,song]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#end
|
||||||
|
|
||||||
|
//trace("\n" + diffList);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if (FlxG.sound.music != null)
|
if (FlxG.sound.music != null)
|
||||||
{
|
{
|
||||||
@ -66,11 +172,17 @@ class FreeplayState extends MusicBeatState
|
|||||||
isDebug = true;
|
isDebug = true;
|
||||||
#end
|
#end
|
||||||
|
|
||||||
|
persistentUpdate = true;
|
||||||
|
|
||||||
// LOAD MUSIC
|
// LOAD MUSIC
|
||||||
|
|
||||||
// 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 = true;
|
||||||
|
}
|
||||||
add(bg);
|
add(bg);
|
||||||
|
|
||||||
grpSongs = new FlxTypedGroup<Alphabet>();
|
grpSongs = new FlxTypedGroup<Alphabet>();
|
||||||
@ -100,7 +212,7 @@ class FreeplayState extends MusicBeatState
|
|||||||
scoreText.setFormat(Paths.font("vcr.ttf"), 32, FlxColor.WHITE, RIGHT);
|
scoreText.setFormat(Paths.font("vcr.ttf"), 32, FlxColor.WHITE, RIGHT);
|
||||||
// scoreText.alignment = RIGHT;
|
// scoreText.alignment = RIGHT;
|
||||||
|
|
||||||
var scoreBG:FlxSprite = new FlxSprite(scoreText.x - 6, 0).makeGraphic(Std.int(FlxG.width * 0.35), 66, 0xFF000000);
|
var scoreBG:FlxSprite = new FlxSprite(scoreText.x - 6, 0).makeGraphic(Std.int(FlxG.width * 0.35), 105, 0xFF000000);
|
||||||
scoreBG.alpha = 0.6;
|
scoreBG.alpha = 0.6;
|
||||||
add(scoreBG);
|
add(scoreBG);
|
||||||
|
|
||||||
@ -108,6 +220,14 @@ class FreeplayState extends MusicBeatState
|
|||||||
diffText.font = scoreText.font;
|
diffText.font = scoreText.font;
|
||||||
add(diffText);
|
add(diffText);
|
||||||
|
|
||||||
|
diffCalcText = new FlxText(scoreText.x, scoreText.y + 66, 0, "", 24);
|
||||||
|
diffCalcText.font = scoreText.font;
|
||||||
|
add(diffCalcText);
|
||||||
|
|
||||||
|
previewtext = new FlxText(scoreText.x, scoreText.y + 94, 0, "" + (KeyBinds.gamepad ? "X" : "SPACE") + " to preview", 24);
|
||||||
|
previewtext.font = scoreText.font;
|
||||||
|
//add(previewtext);
|
||||||
|
|
||||||
comboText = new FlxText(diffText.x + 100, diffText.y, 0, "", 24);
|
comboText = new FlxText(diffText.x + 100, diffText.y, 0, "", 24);
|
||||||
comboText.font = diffText.font;
|
comboText.font = diffText.font;
|
||||||
add(comboText);
|
add(comboText);
|
||||||
@ -166,7 +286,7 @@ class FreeplayState extends MusicBeatState
|
|||||||
num++;
|
num++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override function update(elapsed:Float)
|
override function update(elapsed:Float)
|
||||||
{
|
{
|
||||||
super.update(elapsed);
|
super.update(elapsed);
|
||||||
@ -184,9 +304,40 @@ class FreeplayState extends MusicBeatState
|
|||||||
scoreText.text = "PERSONAL BEST:" + lerpScore;
|
scoreText.text = "PERSONAL BEST:" + lerpScore;
|
||||||
comboText.text = combo + '\n';
|
comboText.text = combo + '\n';
|
||||||
|
|
||||||
var upP = controls.UP_P;
|
if (FlxG.sound.music.volume > 0.8)
|
||||||
var downP = controls.DOWN_P;
|
{
|
||||||
var accepted = controls.ACCEPT;
|
FlxG.sound.music.volume -= 0.5 * FlxG.elapsed;
|
||||||
|
}
|
||||||
|
|
||||||
|
var upP = FlxG.keys.justPressed.UP;
|
||||||
|
var downP = FlxG.keys.justPressed.DOWN;
|
||||||
|
var accepted = FlxG.keys.justPressed.ENTER;
|
||||||
|
|
||||||
|
var gamepad:FlxGamepad = FlxG.gamepads.lastActive;
|
||||||
|
|
||||||
|
if (gamepad != null)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (gamepad.justPressed.DPAD_UP)
|
||||||
|
{
|
||||||
|
changeSelection(-1);
|
||||||
|
}
|
||||||
|
if (gamepad.justPressed.DPAD_DOWN)
|
||||||
|
{
|
||||||
|
changeSelection(1);
|
||||||
|
}
|
||||||
|
if (gamepad.justPressed.DPAD_LEFT)
|
||||||
|
{
|
||||||
|
changeDiff(-1);
|
||||||
|
}
|
||||||
|
if (gamepad.justPressed.DPAD_RIGHT)
|
||||||
|
{
|
||||||
|
changeDiff(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
//if (gamepad.justPressed.X && !openedPreview)
|
||||||
|
//openSubState(new DiffOverview());
|
||||||
|
}
|
||||||
|
|
||||||
if (upP)
|
if (upP)
|
||||||
{
|
{
|
||||||
@ -197,9 +348,12 @@ class FreeplayState extends MusicBeatState
|
|||||||
changeSelection(1);
|
changeSelection(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (controls.LEFT_P)
|
//if (FlxG.keys.justPressed.SPACE && !openedPreview)
|
||||||
|
//openSubState(new DiffOverview());
|
||||||
|
|
||||||
|
if (FlxG.keys.justPressed.LEFT)
|
||||||
changeDiff(-1);
|
changeDiff(-1);
|
||||||
if (controls.RIGHT_P)
|
if (FlxG.keys.justPressed.RIGHT)
|
||||||
changeDiff(1);
|
changeDiff(1);
|
||||||
|
|
||||||
if (controls.BACK)
|
if (controls.BACK)
|
||||||
@ -215,24 +369,45 @@ class FreeplayState extends MusicBeatState
|
|||||||
case 'Dad-Battle': songFormat = 'Dadbattle';
|
case 'Dad-Battle': songFormat = 'Dadbattle';
|
||||||
case 'Philly-Nice': songFormat = 'Philly';
|
case 'Philly-Nice': songFormat = 'Philly';
|
||||||
}
|
}
|
||||||
|
var hmm;
|
||||||
trace(songs[curSelected].songName);
|
try
|
||||||
|
{
|
||||||
|
hmm = songData.get(songs[curSelected].songName)[curDifficulty];
|
||||||
|
if (hmm == null)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
catch(ex)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var poop:String = Highscore.formatSong(songFormat, curDifficulty);
|
|
||||||
|
|
||||||
trace(poop);
|
PlayState.SONG = hmm;
|
||||||
|
|
||||||
PlayState.SONG = Song.loadFromJson(poop, songs[curSelected].songName);
|
|
||||||
PlayState.isStoryMode = false;
|
PlayState.isStoryMode = false;
|
||||||
PlayState.storyDifficulty = curDifficulty;
|
PlayState.storyDifficulty = curDifficulty;
|
||||||
PlayState.storyWeek = songs[curSelected].week;
|
PlayState.storyWeek = songs[curSelected].week;
|
||||||
trace('CUR WEEK' + PlayState.storyWeek);
|
trace('CUR WEEK' + PlayState.storyWeek);
|
||||||
|
#if sys
|
||||||
|
if (songs[curSelected].songCharacter == "sm")
|
||||||
|
{
|
||||||
|
PlayState.isSM = true;
|
||||||
|
PlayState.sm = songs[curSelected].sm;
|
||||||
|
PlayState.pathToSm = songs[curSelected].path;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
PlayState.isSM = false;
|
||||||
|
#else
|
||||||
|
PlayState.isSM = false;
|
||||||
|
#end
|
||||||
LoadingState.loadAndSwitchState(new PlayState());
|
LoadingState.loadAndSwitchState(new PlayState());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function changeDiff(change:Int = 0)
|
function changeDiff(change:Int = 0)
|
||||||
{
|
{
|
||||||
|
if (!songs[curSelected].diffs.contains(CoolUtil.difficultyFromInt(curDifficulty + change)))
|
||||||
|
return;
|
||||||
|
|
||||||
curDifficulty += change;
|
curDifficulty += change;
|
||||||
|
|
||||||
if (curDifficulty < 0)
|
if (curDifficulty < 0)
|
||||||
@ -240,6 +415,7 @@ class FreeplayState extends MusicBeatState
|
|||||||
if (curDifficulty > 2)
|
if (curDifficulty > 2)
|
||||||
curDifficulty = 0;
|
curDifficulty = 0;
|
||||||
|
|
||||||
|
|
||||||
// adjusting the highscore song name to be compatible (changeDiff)
|
// adjusting the highscore song name to be compatible (changeDiff)
|
||||||
var songHighscore = StringTools.replace(songs[curSelected].songName, " ", "-");
|
var songHighscore = StringTools.replace(songs[curSelected].songName, " ", "-");
|
||||||
switch (songHighscore) {
|
switch (songHighscore) {
|
||||||
@ -251,16 +427,8 @@ class FreeplayState extends MusicBeatState
|
|||||||
intendedScore = Highscore.getScore(songHighscore, curDifficulty);
|
intendedScore = Highscore.getScore(songHighscore, curDifficulty);
|
||||||
combo = Highscore.getCombo(songHighscore, curDifficulty);
|
combo = Highscore.getCombo(songHighscore, curDifficulty);
|
||||||
#end
|
#end
|
||||||
|
diffCalcText.text = 'RATING: ${DiffCalc.CalculateDiff(songData.get(songs[curSelected].songName)[curDifficulty])}';
|
||||||
switch (curDifficulty)
|
diffText.text = CoolUtil.difficultyFromInt(curDifficulty).toUpperCase();
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
diffText.text = "EASY";
|
|
||||||
case 1:
|
|
||||||
diffText.text = 'NORMAL';
|
|
||||||
case 2:
|
|
||||||
diffText.text = "HARD";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function changeSelection(change:Int = 0)
|
function changeSelection(change:Int = 0)
|
||||||
@ -272,6 +440,8 @@ class FreeplayState extends MusicBeatState
|
|||||||
// NGio.logEvent('Fresh');
|
// NGio.logEvent('Fresh');
|
||||||
FlxG.sound.play(Paths.sound('scrollMenu'), 0.4);
|
FlxG.sound.play(Paths.sound('scrollMenu'), 0.4);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
curSelected += change;
|
curSelected += change;
|
||||||
|
|
||||||
if (curSelected < 0)
|
if (curSelected < 0)
|
||||||
@ -279,6 +449,19 @@ class FreeplayState extends MusicBeatState
|
|||||||
if (curSelected >= songs.length)
|
if (curSelected >= songs.length)
|
||||||
curSelected = 0;
|
curSelected = 0;
|
||||||
|
|
||||||
|
if (songs[curSelected].diffs.length != 3)
|
||||||
|
{
|
||||||
|
switch(songs[curSelected].diffs[0])
|
||||||
|
{
|
||||||
|
case "Easy":
|
||||||
|
curDifficulty = 0;
|
||||||
|
case "Normal":
|
||||||
|
curDifficulty = 1;
|
||||||
|
case "Hard":
|
||||||
|
curDifficulty = 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// selector.y = (70 * curSelected) + 30;
|
// selector.y = (70 * curSelected) + 30;
|
||||||
|
|
||||||
// adjusting the highscore song name to be compatible (changeSelection)
|
// adjusting the highscore song name to be compatible (changeSelection)
|
||||||
@ -295,10 +478,38 @@ class FreeplayState extends MusicBeatState
|
|||||||
// lerpScore = 0;
|
// lerpScore = 0;
|
||||||
#end
|
#end
|
||||||
|
|
||||||
|
diffCalcText.text = 'RATING: ${DiffCalc.CalculateDiff(songData.get(songs[curSelected].songName)[curDifficulty])}';
|
||||||
|
|
||||||
#if PRELOAD_ALL
|
#if PRELOAD_ALL
|
||||||
FlxG.sound.playMusic(Paths.inst(songs[curSelected].songName), 0);
|
if (songs[curSelected].songCharacter == "sm")
|
||||||
|
{
|
||||||
|
var data = songs[curSelected];
|
||||||
|
trace("Loading " + data.path + "/" + data.sm.header.MUSIC);
|
||||||
|
var bytes = File.getBytes(data.path + "/" + data.sm.header.MUSIC);
|
||||||
|
var sound = new Sound();
|
||||||
|
sound.loadCompressedDataFromByteArray(bytes.getData(), bytes.length);
|
||||||
|
FlxG.sound.playMusic(sound);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
FlxG.sound.playMusic(Paths.inst(songs[curSelected].songName), 0);
|
||||||
#end
|
#end
|
||||||
|
|
||||||
|
var hmm;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
hmm = songData.get(songs[curSelected].songName)[curDifficulty];
|
||||||
|
if (hmm != null)
|
||||||
|
Conductor.changeBPM(hmm.bpm);
|
||||||
|
}
|
||||||
|
catch(ex)
|
||||||
|
{}
|
||||||
|
|
||||||
|
if (openedPreview)
|
||||||
|
{
|
||||||
|
closeSubState();
|
||||||
|
openSubState(new DiffOverview());
|
||||||
|
}
|
||||||
|
|
||||||
var bullShit:Int = 0;
|
var bullShit:Int = 0;
|
||||||
|
|
||||||
for (i in 0...iconArray.length)
|
for (i in 0...iconArray.length)
|
||||||
@ -329,12 +540,29 @@ class SongMetadata
|
|||||||
{
|
{
|
||||||
public var songName:String = "";
|
public var songName:String = "";
|
||||||
public var week:Int = 0;
|
public var week:Int = 0;
|
||||||
|
#if sys
|
||||||
|
public var sm:SMFile;
|
||||||
|
public var path:String;
|
||||||
|
#end
|
||||||
public var songCharacter:String = "";
|
public var songCharacter:String = "";
|
||||||
|
|
||||||
|
public var diffs = [];
|
||||||
|
|
||||||
|
#if sys
|
||||||
|
public function new(song:String, week:Int, songCharacter:String, ?sm:SMFile = null, ?path:String = "")
|
||||||
|
{
|
||||||
|
this.songName = song;
|
||||||
|
this.week = week;
|
||||||
|
this.songCharacter = songCharacter;
|
||||||
|
this.sm = sm;
|
||||||
|
this.path = path;
|
||||||
|
}
|
||||||
|
#else
|
||||||
public function new(song:String, week:Int, songCharacter:String)
|
public function new(song:String, week:Int, songCharacter:String)
|
||||||
{
|
{
|
||||||
this.songName = song;
|
this.songName = song;
|
||||||
this.week = week;
|
this.week = week;
|
||||||
this.songCharacter = songCharacter;
|
this.songCharacter = songCharacter;
|
||||||
}
|
}
|
||||||
|
#end
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,10 @@ class GameOverState extends FlxTransitionableState
|
|||||||
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;
|
||||||
restart.antialiasing = true;
|
if(FlxG.save.data.antialiasing)
|
||||||
|
{
|
||||||
|
restart.antialiasing = true;
|
||||||
|
}
|
||||||
add(restart);
|
add(restart);
|
||||||
|
|
||||||
FlxG.sound.music.fadeOut(2, FlxG.sound.music.volume * 0.6);
|
FlxG.sound.music.fadeOut(2, FlxG.sound.music.volume * 0.6);
|
||||||
|
@ -48,6 +48,8 @@ class GameOverSubstate extends MusicBeatSubstate
|
|||||||
bf.playAnim('firstDeath');
|
bf.playAnim('firstDeath');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var startVibin:Bool = false;
|
||||||
|
|
||||||
override function update(elapsed:Float)
|
override function update(elapsed:Float)
|
||||||
{
|
{
|
||||||
super.update(elapsed);
|
super.update(elapsed);
|
||||||
@ -76,6 +78,7 @@ class GameOverSubstate extends MusicBeatSubstate
|
|||||||
if (bf.animation.curAnim.name == 'firstDeath' && bf.animation.curAnim.finished)
|
if (bf.animation.curAnim.name == 'firstDeath' && bf.animation.curAnim.finished)
|
||||||
{
|
{
|
||||||
FlxG.sound.playMusic(Paths.music('gameOver' + stageSuffix));
|
FlxG.sound.playMusic(Paths.music('gameOver' + stageSuffix));
|
||||||
|
startVibin = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (FlxG.sound.music.playing)
|
if (FlxG.sound.music.playing)
|
||||||
@ -88,6 +91,10 @@ class GameOverSubstate extends MusicBeatSubstate
|
|||||||
{
|
{
|
||||||
super.beatHit();
|
super.beatHit();
|
||||||
|
|
||||||
|
if (startVibin && !isEnding)
|
||||||
|
{
|
||||||
|
bf.playAnim('deathLoop', true);
|
||||||
|
}
|
||||||
FlxG.log.add('beat');
|
FlxG.log.add('beat');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -97,6 +104,7 @@ class GameOverSubstate extends MusicBeatSubstate
|
|||||||
{
|
{
|
||||||
if (!isEnding)
|
if (!isEnding)
|
||||||
{
|
{
|
||||||
|
PlayState.startTime = 0;
|
||||||
isEnding = true;
|
isEnding = true;
|
||||||
bf.playAnim('deathConfirm', true);
|
bf.playAnim('deathConfirm', true);
|
||||||
FlxG.sound.music.stop();
|
FlxG.sound.music.stop();
|
||||||
|
@ -33,6 +33,7 @@ class GameplayCustomizeState extends MusicBeatState
|
|||||||
|
|
||||||
var bf:Boyfriend;
|
var bf:Boyfriend;
|
||||||
var dad:Character;
|
var dad:Character;
|
||||||
|
var gf:Character;
|
||||||
|
|
||||||
var strumLine:FlxSprite;
|
var strumLine:FlxSprite;
|
||||||
var strumLineNotes:FlxTypedGroup<FlxSprite>;
|
var strumLineNotes:FlxTypedGroup<FlxSprite>;
|
||||||
@ -42,7 +43,7 @@ class GameplayCustomizeState extends MusicBeatState
|
|||||||
public override function create() {
|
public override function create() {
|
||||||
#if windows
|
#if windows
|
||||||
// Updating Discord Rich Presence
|
// Updating Discord Rich Presence
|
||||||
DiscordClient.changePresence("Customizing Gameplay", null);
|
DiscordClient.changePresence("Customizing Gameplay Modules", null);
|
||||||
#end
|
#end
|
||||||
|
|
||||||
sick = new FlxSprite().loadGraphic(Paths.image('sick','shared'));
|
sick = new FlxSprite().loadGraphic(Paths.image('sick','shared'));
|
||||||
@ -51,7 +52,7 @@ class GameplayCustomizeState extends MusicBeatState
|
|||||||
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'));
|
||||||
|
|
||||||
Conductor.changeBPM(102);
|
//Conductor.changeBPM(102);
|
||||||
persistentUpdate = true;
|
persistentUpdate = true;
|
||||||
|
|
||||||
super.create();
|
super.create();
|
||||||
@ -74,10 +75,14 @@ class GameplayCustomizeState extends MusicBeatState
|
|||||||
|
|
||||||
bf = new Boyfriend(770, 450, 'bf');
|
bf = new Boyfriend(770, 450, 'bf');
|
||||||
|
|
||||||
|
gf = new Character(400, 130, 'gf');
|
||||||
|
gf.scrollFactor.set(0.95, 0.95);
|
||||||
|
|
||||||
var camPos:FlxPoint = new FlxPoint(dad.getGraphicMidpoint().x + 400, dad.getGraphicMidpoint().y);
|
var camPos:FlxPoint = new FlxPoint(dad.getGraphicMidpoint().x + 400, dad.getGraphicMidpoint().y);
|
||||||
|
|
||||||
camFollow.setPosition(camPos.x, camPos.y);
|
camFollow.setPosition(camPos.x, camPos.y);
|
||||||
|
|
||||||
|
add(gf);
|
||||||
add(bf);
|
add(bf);
|
||||||
add(dad);
|
add(dad);
|
||||||
|
|
||||||
@ -111,7 +116,7 @@ class GameplayCustomizeState extends MusicBeatState
|
|||||||
generateStaticArrows(0);
|
generateStaticArrows(0);
|
||||||
generateStaticArrows(1);
|
generateStaticArrows(1);
|
||||||
|
|
||||||
text = new FlxText(5, FlxG.height + 40, 0, "Drag around gameplay elements, R to reset, Escape to go back.", 12);
|
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.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);
|
||||||
|
|
||||||
@ -188,8 +193,9 @@ class GameplayCustomizeState extends MusicBeatState
|
|||||||
{
|
{
|
||||||
super.beatHit();
|
super.beatHit();
|
||||||
|
|
||||||
bf.playAnim('idle');
|
bf.playAnim('idle', true);
|
||||||
dad.dance();
|
dad.dance(true);
|
||||||
|
gf.dance();
|
||||||
|
|
||||||
FlxG.camera.zoom += 0.015;
|
FlxG.camera.zoom += 0.015;
|
||||||
camHUD.zoom += 0.010;
|
camHUD.zoom += 0.010;
|
||||||
|
@ -22,12 +22,20 @@ 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 = 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 = true;
|
||||||
|
}
|
||||||
add(bf);
|
add(bf);
|
||||||
bf.screenCenter(X);
|
bf.screenCenter(X);
|
||||||
|
|
||||||
@ -36,6 +44,10 @@ 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 = true;
|
||||||
|
}
|
||||||
add(replayButton);
|
add(replayButton);
|
||||||
|
|
||||||
cancelButton = new FlxSprite(FlxG.width * 0.58, replayButton.y);
|
cancelButton = new FlxSprite(FlxG.width * 0.58, replayButton.y);
|
||||||
@ -43,6 +55,10 @@ 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 = true;
|
||||||
|
}
|
||||||
add(cancelButton);
|
add(cancelButton);
|
||||||
|
|
||||||
changeThing();
|
changeThing();
|
||||||
|