├── .gitignore
├── LICENSE
├── Project.xml
├── README.md
├── appveyor-linux.yml
├── appveyor-win32.yml
├── assets
├── default
│ ├── fonts
│ │ ├── pixel.otf
│ │ └── vcr.ttf
│ ├── images
│ │ ├── alphabet.png
│ │ ├── alphabet.xml
│ │ ├── characters
│ │ │ ├── BOYFRIEND.png
│ │ │ ├── BOYFRIEND.xml
│ │ │ ├── DADDY_DEAREST.png
│ │ │ ├── DADDY_DEAREST.xml
│ │ │ ├── GF_assets.png
│ │ │ └── GF_assets.xml
│ │ ├── charter
│ │ │ ├── bg.png
│ │ │ ├── quantIndicator.png
│ │ │ └── ref.png
│ │ ├── gameplay
│ │ │ ├── NOTE_assets.png
│ │ │ ├── NOTE_assets.xml
│ │ │ ├── judgements
│ │ │ │ ├── bad.png
│ │ │ │ ├── good.png
│ │ │ │ ├── miss.png
│ │ │ │ ├── shit.png
│ │ │ │ └── sick.png
│ │ │ ├── num0.png
│ │ │ ├── num1.png
│ │ │ ├── num2.png
│ │ │ ├── num3.png
│ │ │ ├── num4.png
│ │ │ ├── num5.png
│ │ │ ├── num6.png
│ │ │ ├── num7.png
│ │ │ ├── num8.png
│ │ │ └── num9.png
│ │ ├── iconGrid.png
│ │ ├── mainMenu
│ │ │ ├── mainMenuAssets.png
│ │ │ ├── mainMenuAssets.xml
│ │ │ ├── menuBG.png
│ │ │ ├── menuBGBlue.png
│ │ │ ├── menuBGMagenta.png
│ │ │ └── menuDesat.png
│ │ ├── spinner.png
│ │ ├── splash.png
│ │ ├── storyMenu
│ │ │ ├── storyMenuAssets.png
│ │ │ ├── storyMenuAssets.xml
│ │ │ ├── storyMenuCharacters.png
│ │ │ ├── storyMenuCharacters.xml
│ │ │ ├── week0.png
│ │ │ ├── week1.png
│ │ │ ├── week2.png
│ │ │ ├── week3.png
│ │ │ ├── week4.png
│ │ │ ├── week5.png
│ │ │ └── week6.png
│ │ └── title
│ │ │ ├── gfDanceTitle.png
│ │ │ ├── gfDanceTitle.xml
│ │ │ ├── logoBumpin.png
│ │ │ ├── logoBumpin.xml
│ │ │ ├── newgrounds_logo.png
│ │ │ ├── titleEnter.png
│ │ │ └── titleEnter.xml
│ ├── music
│ │ ├── freakyMenu.ogg
│ │ ├── gameOver.ogg
│ │ └── gameOverEnd.ogg
│ └── sounds
│ │ ├── cancelMenu.ogg
│ │ ├── charterZoom.ogg
│ │ ├── confirmMenu.ogg
│ │ ├── fnf_loss_sfx.ogg
│ │ ├── intro1.ogg
│ │ ├── intro2.ogg
│ │ ├── intro3.ogg
│ │ ├── introGo.ogg
│ │ ├── metronome.ogg
│ │ ├── missnote1.ogg
│ │ ├── missnote2.ogg
│ │ ├── missnote3.ogg
│ │ ├── scrollMenu.ogg
│ │ └── snapChange.ogg
├── no.png
├── no_the_sequel.png
├── week1
│ └── images
│ │ ├── stageback.png
│ │ ├── stagecurtains.png
│ │ └── stagefront.png
├── week2
│ ├── images
│ │ ├── characters
│ │ │ ├── spooky_kids_assets.png
│ │ │ └── spooky_kids_assets.xml
│ │ ├── halloween_bg.png
│ │ └── halloween_bg.xml
│ └── sounds
│ │ ├── thunder_1.ogg
│ │ └── thunder_2.ogg
├── week3
│ ├── images
│ │ ├── characters
│ │ │ ├── Pico_FNF_assetss.png
│ │ │ └── Pico_FNF_assetss.xml
│ │ └── philly
│ │ │ ├── behindTrain.png
│ │ │ ├── city.png
│ │ │ ├── sky.png
│ │ │ ├── street.png
│ │ │ ├── train.png
│ │ │ ├── win0.png
│ │ │ ├── win1.png
│ │ │ ├── win2.png
│ │ │ ├── win3.png
│ │ │ └── win4.png
│ └── sounds
│ │ └── train_passes.ogg
├── week4
│ ├── images
│ │ ├── characters
│ │ │ ├── bfCar.png
│ │ │ ├── bfCar.xml
│ │ │ ├── gfCar.png
│ │ │ ├── gfCar.xml
│ │ │ ├── momCar.png
│ │ │ └── momCar.xml
│ │ └── limo
│ │ │ ├── bgLimo.png
│ │ │ ├── bgLimo.xml
│ │ │ ├── dumb.png
│ │ │ ├── fastCarLol.png
│ │ │ ├── limoDancer.png
│ │ │ ├── limoDancer.xml
│ │ │ ├── limoDrive.png
│ │ │ ├── limoDrive.xml
│ │ │ ├── limoOverlay.png
│ │ │ └── limoSunset.png
│ └── sounds
│ │ ├── carPass0.ogg
│ │ └── carPass1.ogg
├── week5
│ ├── images
│ │ ├── characters
│ │ │ ├── bfChristmas.png
│ │ │ ├── bfChristmas.xml
│ │ │ ├── gfChristmas.png
│ │ │ ├── gfChristmas.xml
│ │ │ ├── mom_dad_christmas_assets.png
│ │ │ ├── mom_dad_christmas_assets.xml
│ │ │ ├── monsterChristmas.png
│ │ │ └── monsterChristmas.xml
│ │ └── christmas
│ │ │ ├── bgEscalator.png
│ │ │ ├── bgWalls.png
│ │ │ ├── bottomBop.png
│ │ │ ├── bottomBop.xml
│ │ │ ├── christmasTree.png
│ │ │ ├── christmasWall.png
│ │ │ ├── evilBG.png
│ │ │ ├── evilSnow.png
│ │ │ ├── evilTree.png
│ │ │ ├── fgSnow.png
│ │ │ ├── santa.png
│ │ │ ├── santa.xml
│ │ │ ├── upperBop.png
│ │ │ └── upperBop.xml
│ └── sounds
│ │ ├── Lights_Shut_off.ogg
│ │ └── Lights_Turn_On.ogg
└── week6
│ ├── images
│ ├── characters
│ │ ├── bfPixel.png
│ │ ├── bfPixel.xml
│ │ ├── bfPixelsDEAD.png
│ │ ├── bfPixelsDEAD.xml
│ │ ├── gfPixel.png
│ │ ├── gfPixel.xml
│ │ ├── senpai.png
│ │ ├── senpai.xml
│ │ ├── spirit.png
│ │ └── spirit.txt
│ └── weeb
│ │ ├── animatedEvilSchool.png
│ │ ├── animatedEvilSchool.xml
│ │ ├── bfPortrait.png
│ │ ├── bfPortrait.xml
│ │ ├── bgFreaks.png
│ │ ├── bgFreaks.xml
│ │ ├── evilSchoolBG.png
│ │ ├── evilSchoolFG.png
│ │ ├── petals.png
│ │ ├── petals.xml
│ │ ├── pixelUI
│ │ ├── arrows-pixels.png
│ │ ├── arrows-pixels.xml
│ │ ├── bad-pixel.png
│ │ ├── combo-pixel.png
│ │ ├── date-pixel.png
│ │ ├── dialogueBox-evil.png
│ │ ├── dialogueBox-evil.xml
│ │ ├── dialogueBox-pixel.png
│ │ ├── dialogueBox-pixel.xml
│ │ ├── dialogueBox-senpaiMad.png
│ │ ├── dialogueBox-senpaiMad.xml
│ │ ├── good-pixel.png
│ │ ├── hand_textbox.png
│ │ ├── num0-pixel.png
│ │ ├── num1-pixel.png
│ │ ├── num2-pixel.png
│ │ ├── num3-pixel.png
│ │ ├── num4-pixel.png
│ │ ├── num5-pixel.png
│ │ ├── num6-pixel.png
│ │ ├── num7-pixel.png
│ │ ├── num8-pixel.png
│ │ ├── num9-pixel.png
│ │ ├── ready-pixel.png
│ │ ├── set-pixel.png
│ │ ├── shit-pixel.png
│ │ └── sick-pixel.png
│ │ ├── senpaiCrazy.png
│ │ ├── senpaiCrazy.xml
│ │ ├── senpaiPortrait.png
│ │ ├── senpaiPortrait.xml
│ │ ├── spiritFaceForward.png
│ │ ├── weebSchool.png
│ │ ├── weebSky.png
│ │ ├── weebStreet.png
│ │ ├── weebTrees.png
│ │ ├── weebTrees.txt
│ │ └── weebTreesBack.png
│ ├── music
│ ├── Lunchbox.ogg
│ ├── LunchboxScary.ogg
│ ├── gameOver-pixel.ogg
│ └── gameOverEnd-pixel.ogg
│ └── sounds
│ ├── Senpai_Dies.ogg
│ ├── clickText.ogg
│ ├── fnf_loss_sfx-pixel.ogg
│ ├── intro1-pixel.ogg
│ ├── intro2-pixel.ogg
│ ├── intro3-pixel.ogg
│ ├── introGo-pixel.ogg
│ └── pixelText.ogg
├── build-crash-dialog.bat
├── build-crash-dialog.sh
├── concept
├── charter bg.psd
├── charter ui concept 2 (with properties).png
├── charter ui concept 2 (without properties).png
├── charter ui concept 2.psd
├── charter ui concept.psd
├── charter ui dialog box.psd
├── charter ui esc menu.psd
└── crash banner.psd
├── crash-dialog
├── assets
│ ├── banner.png
│ ├── banner1.png
│ └── main-view.xml
├── hxformat.json
├── hxwidgets-linux.hxml
├── hxwidgets-windows.hxml
└── src
│ ├── Main.hx
│ ├── haxeui-hxwidgets.properties
│ └── module.xml
├── data
├── characters
│ ├── bf-car.json
│ ├── bf.json
│ ├── dad.json
│ ├── gf-car.json
│ ├── gf.json
│ ├── mom-car.json
│ ├── parents-christmas.json
│ ├── pico.json
│ └── spooky.json
├── gameplay.json
├── introTexts.json
├── noteStyles
│ ├── default.json
│ └── pixel.json
├── shaders
│ ├── quad_raytrace.frag
│ ├── rgb_shift.frag
│ └── vhs.frag
├── stages
│ ├── halloween.hscript
│ ├── limo.hscript
│ ├── mall.hscript
│ ├── philly.hscript
│ └── stage.hscript
└── weeks.json
├── docs
├── Makefile
├── conf.py
├── index.rst
├── make.bat
└── pages
│ └── about
│ └── introduction.rst
├── hxformat.json
├── img
└── IzzyEngineLogo.svg
├── songs
├── blammed
│ ├── Inst.ogg
│ ├── Voices.ogg
│ ├── easy.json
│ ├── hard.json
│ ├── normal.json
│ └── songMetadata.json
├── bopeebo
│ ├── Inst.ogg
│ ├── Voices.ogg
│ ├── easy.json
│ ├── hard.json
│ ├── normal.json
│ └── songMetadata.json
├── cocoa
│ ├── Inst.ogg
│ ├── Voices.ogg
│ ├── easy.json
│ ├── hard.json
│ ├── normal.json
│ └── songMetadata.json
├── dadbattle
│ ├── Inst.ogg
│ ├── Voices.ogg
│ ├── easy.json
│ ├── hard.json
│ ├── normal.json
│ └── songMetadata.json
├── eggnog
│ ├── Inst.ogg
│ ├── Voices.ogg
│ ├── easy.json
│ ├── hard.json
│ ├── normal.json
│ └── songMetadata.json
├── fresh
│ ├── Inst.ogg
│ ├── Voices.ogg
│ ├── easy.json
│ ├── hard.json
│ ├── normal.json
│ └── songMetadata.json
├── high
│ ├── Inst.ogg
│ ├── Voices.ogg
│ ├── easy.json
│ ├── hard.json
│ ├── normal.json
│ └── songMetadata.json
├── milf
│ ├── Inst.ogg
│ ├── Voices.ogg
│ ├── easy.json
│ ├── hard.json
│ ├── normal.json
│ └── songMetadata.json
├── philly-nice
│ ├── Inst.ogg
│ ├── Voices.ogg
│ ├── easy.json
│ ├── hard.json
│ ├── normal.json
│ └── songMetadata.json
├── pico
│ ├── Inst.ogg
│ ├── Voices.ogg
│ ├── easy.json
│ ├── hard.json
│ ├── normal.json
│ └── songMetadata.json
├── roses
│ ├── Inst.ogg
│ ├── Voices.ogg
│ ├── easy.json
│ ├── hard.json
│ ├── normal.json
│ ├── rosesDialogue.txt
│ └── songMetadata.json
├── satin-panties
│ ├── Inst.ogg
│ ├── Voices.ogg
│ ├── easy.json
│ ├── hard.json
│ ├── normal.json
│ └── songMetadata.json
├── senpai
│ ├── Inst.ogg
│ ├── Voices.ogg
│ ├── easy.json
│ ├── hard.json
│ ├── normal.json
│ ├── senpaiDialogue.txt
│ └── songMetadata.json
├── south
│ ├── Inst.ogg
│ ├── Voices.ogg
│ ├── easy.json
│ ├── hard.json
│ ├── normal.json
│ └── songMetadata.json
├── spookeez
│ ├── Inst.ogg
│ ├── Voices.ogg
│ ├── easy.json
│ ├── hard.json
│ ├── normal.json
│ └── songMetadata.json
├── thorns
│ ├── Inst.ogg
│ ├── Voices.ogg
│ ├── easy.json
│ ├── hard.json
│ ├── normal.json
│ ├── songMetadata.json
│ └── thornsDialogue.txt
├── tutorial
│ ├── Inst.ogg
│ ├── easy.json
│ ├── hard.json
│ ├── normal.json
│ └── songMetadata.json
└── winter-horrorland
│ ├── Inst.ogg
│ ├── Voices.ogg
│ ├── easy.json
│ ├── hard.json
│ ├── normal.json
│ └── songMetadata.json
└── source
├── Main.hx
├── flixel
└── graphics
│ └── tile
│ └── FlxGraphicsShader.hx
├── izzy
├── core
│ ├── AssetHelper.hx
│ ├── ChartParser.hx
│ ├── Conductor.hx
│ ├── Overlay.hx
│ ├── RichPresence.hx
│ ├── SongDatabase.hx
│ └── Util.hx
├── gameplay
│ ├── Character.hx
│ ├── ModchartHelper.hx
│ └── Stage.hx
├── scripting
│ └── ScriptHelper.hx
├── state
│ ├── CharterSubState.hx
│ ├── FreeplayState.hx
│ ├── InitState.hx
│ ├── MainMenuState.hx
│ ├── PlayState.hx
│ ├── TestState.hx
│ ├── TitleState.hx
│ └── base
│ │ └── MusicBeatState.hx
└── ui
│ ├── Alphabet.hx
│ ├── CharterUI.hx
│ ├── GameplayUI.hx
│ └── TiledSprite.hx
└── openfl
└── display
├── GraphicsShader.hx
└── Shader.hx
/.gitignore:
--------------------------------------------------------------------------------
1 | export/
2 | crash-dialog/build/
3 | .vscode/
4 | docs/_build
--------------------------------------------------------------------------------
/Project.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
70 |
71 |
72 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Friday Night Funkin' Izzy Engine
2 |
3 |  
4 |
5 | 
6 |
7 | Izzy Engine is a complete recreation of Friday Night Funkin'. Think of it as [opsu!](https://github.com/itdelatrisu/opsu) but for Friday Night Funkin', with great customizability in mind.
8 |
9 | My goal is to make a framework that is accessible, easy to use, and close to the original as possible, with a sprinkle of fixes and quality of life features.
10 |
11 | ## Features Planned and Implemented
12 |
13 | - [X] Un-hardcode characters with .json **[Completed]**
14 | - [X] Un-hardcode weeks with .json **[Completed]**
15 | - [X] Un-hardcode note styles with .json **[Completed]**
16 | - [X] Un-hardcode stages with .hscript **[Partial]**
17 | - [X] Gameplay logic **[Partial]**
18 | - [X] Event system **[Partial]**
19 | - [ ] Controls remapping
20 | - [ ] Charter
21 | - [ ] Song Modchart support with .hscript
22 | - [ ] Customizable UI elements with .hscript
23 |
24 | More goals will be added as we go.
25 |
26 | ## License
27 |
28 | This framework is distributed under the Apache License. See `LICENSE` for more information.
29 |
30 | ## Credits
31 |
32 | ### Friday Night Funkin'
33 |
34 | - [ninjamuffin99](https://twitter.com/ninja_muffin99) - Programming
35 | - [PhantomArcade3K](https://twitter.com/phantomarcade3k) and [Evilsk8r](https://twitter.com/evilsk8r) - Art
36 | - [Kawai Sprite](https://twitter.com/kawaisprite) - Music
37 |
38 | This game was made with love to Newgrounds and its community. Extra love to Tom Fulp.
39 |
40 | ### Friday Night Funkin' Izzy Engine
41 |
42 | - [gedehari](https://twitter.com/gedehari) - Owner, maintainer, and programmer
43 | - [Effects](https://www.youtube.com/channel/UCRwExVyoZ3Nw5sBzAlRJ6fw) - Logo designer
44 |
--------------------------------------------------------------------------------
/appveyor-linux.yml:
--------------------------------------------------------------------------------
1 | version: "{build}"
2 | image: Ubuntu
3 |
4 | environment:
5 | global:
6 | HAXELIB_ROOT: /home/appveyor/haxelib
7 |
8 | only_commits:
9 | files:
10 | - source/
11 |
12 | install:
13 | - cd /home/appveyor
14 | - sudo add-apt-repository ppa:haxe/releases -y
15 | - sudo apt update
16 | - sudo apt install haxe neko tar gcc-7 g++-7 gcc-7-multilib g++-7-multilib -y
17 | - mkdir $HAXELIB_ROOT && haxelib setup $HAXELIB_ROOT
18 | # Install project dependencies
19 | - haxelib install hscript
20 | - haxelib git discord_rpc https://github.com/Aidan63/linc_discord-rpc
21 | - haxelib install lime
22 | - haxelib install openfl
23 | - haxelib install flixel
24 | - haxelib run lime setup flixel
25 | - haxelib run lime setup
26 | - cd /home/appveyor/projects/izzyengine-linux
27 |
28 | build_script:
29 | - haxelib run lime build linux
30 |
31 | after_build:
32 | - tar -cvf IzzyEngine-linux.tar -C export/release/linux/bin .
33 |
34 | artifacts:
35 | - path: IzzyEngine-linux.tar
36 | name: IzzyEngine-linux
37 |
--------------------------------------------------------------------------------
/appveyor-win32.yml:
--------------------------------------------------------------------------------
1 | version: "{build}"
2 |
3 | environment:
4 | global:
5 | HAXELIB_ROOT: C:\projects\haxelib
6 | WXWIN: C:\wxWidgets
7 |
8 | only_commits:
9 | files:
10 | - source/
11 |
12 | install:
13 | # http://help.appveyor.com/discussions/problems/5616-not-able-to-build-due-to-problem-in-chocolateyinstallps1
14 | - ps: Set-Service wuauserv -StartupType Manual
15 | # Install the haxe chocolatey package (https://chocolatey.org/packages/haxe)
16 | - cinst haxe --version 4.2.2 -y
17 | - RefreshEnv
18 | # Setup haxelib
19 | - mkdir "%HAXELIB_ROOT%"
20 | - haxelib setup "%HAXELIB_ROOT%"
21 | # Install project dependencies
22 | - haxelib install hscript
23 | - haxelib git discord_rpc https://github.com/Aidan63/linc_discord-rpc
24 | - haxelib install lime
25 | - haxelib install openfl
26 | - haxelib install flixel
27 | - haxelib run lime setup flixel
28 | - haxelib run lime setup
29 |
30 | build_script:
31 | - haxelib run lime build windows
32 |
33 | artifacts:
34 | - path: export/release/windows/bin
35 | name: IzzyEngine-win32
36 | type: zip
37 |
--------------------------------------------------------------------------------
/assets/default/fonts/pixel.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/fonts/pixel.otf
--------------------------------------------------------------------------------
/assets/default/fonts/vcr.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/fonts/vcr.ttf
--------------------------------------------------------------------------------
/assets/default/images/alphabet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/alphabet.png
--------------------------------------------------------------------------------
/assets/default/images/characters/BOYFRIEND.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/characters/BOYFRIEND.png
--------------------------------------------------------------------------------
/assets/default/images/characters/DADDY_DEAREST.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/characters/DADDY_DEAREST.png
--------------------------------------------------------------------------------
/assets/default/images/characters/GF_assets.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/characters/GF_assets.png
--------------------------------------------------------------------------------
/assets/default/images/charter/bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/charter/bg.png
--------------------------------------------------------------------------------
/assets/default/images/charter/quantIndicator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/charter/quantIndicator.png
--------------------------------------------------------------------------------
/assets/default/images/charter/ref.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/charter/ref.png
--------------------------------------------------------------------------------
/assets/default/images/gameplay/NOTE_assets.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/gameplay/NOTE_assets.png
--------------------------------------------------------------------------------
/assets/default/images/gameplay/judgements/bad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/gameplay/judgements/bad.png
--------------------------------------------------------------------------------
/assets/default/images/gameplay/judgements/good.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/gameplay/judgements/good.png
--------------------------------------------------------------------------------
/assets/default/images/gameplay/judgements/miss.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/gameplay/judgements/miss.png
--------------------------------------------------------------------------------
/assets/default/images/gameplay/judgements/shit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/gameplay/judgements/shit.png
--------------------------------------------------------------------------------
/assets/default/images/gameplay/judgements/sick.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/gameplay/judgements/sick.png
--------------------------------------------------------------------------------
/assets/default/images/gameplay/num0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/gameplay/num0.png
--------------------------------------------------------------------------------
/assets/default/images/gameplay/num1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/gameplay/num1.png
--------------------------------------------------------------------------------
/assets/default/images/gameplay/num2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/gameplay/num2.png
--------------------------------------------------------------------------------
/assets/default/images/gameplay/num3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/gameplay/num3.png
--------------------------------------------------------------------------------
/assets/default/images/gameplay/num4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/gameplay/num4.png
--------------------------------------------------------------------------------
/assets/default/images/gameplay/num5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/gameplay/num5.png
--------------------------------------------------------------------------------
/assets/default/images/gameplay/num6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/gameplay/num6.png
--------------------------------------------------------------------------------
/assets/default/images/gameplay/num7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/gameplay/num7.png
--------------------------------------------------------------------------------
/assets/default/images/gameplay/num8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/gameplay/num8.png
--------------------------------------------------------------------------------
/assets/default/images/gameplay/num9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/gameplay/num9.png
--------------------------------------------------------------------------------
/assets/default/images/iconGrid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/iconGrid.png
--------------------------------------------------------------------------------
/assets/default/images/mainMenu/mainMenuAssets.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/mainMenu/mainMenuAssets.png
--------------------------------------------------------------------------------
/assets/default/images/mainMenu/menuBG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/mainMenu/menuBG.png
--------------------------------------------------------------------------------
/assets/default/images/mainMenu/menuBGBlue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/mainMenu/menuBGBlue.png
--------------------------------------------------------------------------------
/assets/default/images/mainMenu/menuBGMagenta.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/mainMenu/menuBGMagenta.png
--------------------------------------------------------------------------------
/assets/default/images/mainMenu/menuDesat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/mainMenu/menuDesat.png
--------------------------------------------------------------------------------
/assets/default/images/spinner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/spinner.png
--------------------------------------------------------------------------------
/assets/default/images/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/splash.png
--------------------------------------------------------------------------------
/assets/default/images/storyMenu/storyMenuAssets.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/storyMenu/storyMenuAssets.png
--------------------------------------------------------------------------------
/assets/default/images/storyMenu/storyMenuAssets.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/assets/default/images/storyMenu/storyMenuCharacters.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/storyMenu/storyMenuCharacters.png
--------------------------------------------------------------------------------
/assets/default/images/storyMenu/week0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/storyMenu/week0.png
--------------------------------------------------------------------------------
/assets/default/images/storyMenu/week1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/storyMenu/week1.png
--------------------------------------------------------------------------------
/assets/default/images/storyMenu/week2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/storyMenu/week2.png
--------------------------------------------------------------------------------
/assets/default/images/storyMenu/week3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/storyMenu/week3.png
--------------------------------------------------------------------------------
/assets/default/images/storyMenu/week4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/storyMenu/week4.png
--------------------------------------------------------------------------------
/assets/default/images/storyMenu/week5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/storyMenu/week5.png
--------------------------------------------------------------------------------
/assets/default/images/storyMenu/week6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/storyMenu/week6.png
--------------------------------------------------------------------------------
/assets/default/images/title/gfDanceTitle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/title/gfDanceTitle.png
--------------------------------------------------------------------------------
/assets/default/images/title/gfDanceTitle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/assets/default/images/title/logoBumpin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/title/logoBumpin.png
--------------------------------------------------------------------------------
/assets/default/images/title/logoBumpin.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/assets/default/images/title/newgrounds_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/title/newgrounds_logo.png
--------------------------------------------------------------------------------
/assets/default/images/title/titleEnter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/images/title/titleEnter.png
--------------------------------------------------------------------------------
/assets/default/music/freakyMenu.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/music/freakyMenu.ogg
--------------------------------------------------------------------------------
/assets/default/music/gameOver.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/music/gameOver.ogg
--------------------------------------------------------------------------------
/assets/default/music/gameOverEnd.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/music/gameOverEnd.ogg
--------------------------------------------------------------------------------
/assets/default/sounds/cancelMenu.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/sounds/cancelMenu.ogg
--------------------------------------------------------------------------------
/assets/default/sounds/charterZoom.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/sounds/charterZoom.ogg
--------------------------------------------------------------------------------
/assets/default/sounds/confirmMenu.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/sounds/confirmMenu.ogg
--------------------------------------------------------------------------------
/assets/default/sounds/fnf_loss_sfx.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/sounds/fnf_loss_sfx.ogg
--------------------------------------------------------------------------------
/assets/default/sounds/intro1.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/sounds/intro1.ogg
--------------------------------------------------------------------------------
/assets/default/sounds/intro2.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/sounds/intro2.ogg
--------------------------------------------------------------------------------
/assets/default/sounds/intro3.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/sounds/intro3.ogg
--------------------------------------------------------------------------------
/assets/default/sounds/introGo.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/sounds/introGo.ogg
--------------------------------------------------------------------------------
/assets/default/sounds/metronome.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/sounds/metronome.ogg
--------------------------------------------------------------------------------
/assets/default/sounds/missnote1.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/sounds/missnote1.ogg
--------------------------------------------------------------------------------
/assets/default/sounds/missnote2.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/sounds/missnote2.ogg
--------------------------------------------------------------------------------
/assets/default/sounds/missnote3.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/sounds/missnote3.ogg
--------------------------------------------------------------------------------
/assets/default/sounds/scrollMenu.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/sounds/scrollMenu.ogg
--------------------------------------------------------------------------------
/assets/default/sounds/snapChange.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/default/sounds/snapChange.ogg
--------------------------------------------------------------------------------
/assets/no.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/no.png
--------------------------------------------------------------------------------
/assets/no_the_sequel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/no_the_sequel.png
--------------------------------------------------------------------------------
/assets/week1/images/stageback.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week1/images/stageback.png
--------------------------------------------------------------------------------
/assets/week1/images/stagecurtains.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week1/images/stagecurtains.png
--------------------------------------------------------------------------------
/assets/week1/images/stagefront.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week1/images/stagefront.png
--------------------------------------------------------------------------------
/assets/week2/images/characters/spooky_kids_assets.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week2/images/characters/spooky_kids_assets.png
--------------------------------------------------------------------------------
/assets/week2/images/halloween_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week2/images/halloween_bg.png
--------------------------------------------------------------------------------
/assets/week2/images/halloween_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/assets/week2/sounds/thunder_1.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week2/sounds/thunder_1.ogg
--------------------------------------------------------------------------------
/assets/week2/sounds/thunder_2.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week2/sounds/thunder_2.ogg
--------------------------------------------------------------------------------
/assets/week3/images/characters/Pico_FNF_assetss.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week3/images/characters/Pico_FNF_assetss.png
--------------------------------------------------------------------------------
/assets/week3/images/philly/behindTrain.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week3/images/philly/behindTrain.png
--------------------------------------------------------------------------------
/assets/week3/images/philly/city.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week3/images/philly/city.png
--------------------------------------------------------------------------------
/assets/week3/images/philly/sky.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week3/images/philly/sky.png
--------------------------------------------------------------------------------
/assets/week3/images/philly/street.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week3/images/philly/street.png
--------------------------------------------------------------------------------
/assets/week3/images/philly/train.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week3/images/philly/train.png
--------------------------------------------------------------------------------
/assets/week3/images/philly/win0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week3/images/philly/win0.png
--------------------------------------------------------------------------------
/assets/week3/images/philly/win1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week3/images/philly/win1.png
--------------------------------------------------------------------------------
/assets/week3/images/philly/win2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week3/images/philly/win2.png
--------------------------------------------------------------------------------
/assets/week3/images/philly/win3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week3/images/philly/win3.png
--------------------------------------------------------------------------------
/assets/week3/images/philly/win4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week3/images/philly/win4.png
--------------------------------------------------------------------------------
/assets/week3/sounds/train_passes.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week3/sounds/train_passes.ogg
--------------------------------------------------------------------------------
/assets/week4/images/characters/bfCar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week4/images/characters/bfCar.png
--------------------------------------------------------------------------------
/assets/week4/images/characters/gfCar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week4/images/characters/gfCar.png
--------------------------------------------------------------------------------
/assets/week4/images/characters/momCar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week4/images/characters/momCar.png
--------------------------------------------------------------------------------
/assets/week4/images/limo/bgLimo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week4/images/limo/bgLimo.png
--------------------------------------------------------------------------------
/assets/week4/images/limo/bgLimo.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/assets/week4/images/limo/dumb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week4/images/limo/dumb.png
--------------------------------------------------------------------------------
/assets/week4/images/limo/fastCarLol.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week4/images/limo/fastCarLol.png
--------------------------------------------------------------------------------
/assets/week4/images/limo/limoDancer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week4/images/limo/limoDancer.png
--------------------------------------------------------------------------------
/assets/week4/images/limo/limoDrive.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week4/images/limo/limoDrive.png
--------------------------------------------------------------------------------
/assets/week4/images/limo/limoDrive.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/assets/week4/images/limo/limoOverlay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week4/images/limo/limoOverlay.png
--------------------------------------------------------------------------------
/assets/week4/images/limo/limoSunset.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week4/images/limo/limoSunset.png
--------------------------------------------------------------------------------
/assets/week4/sounds/carPass0.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week4/sounds/carPass0.ogg
--------------------------------------------------------------------------------
/assets/week4/sounds/carPass1.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week4/sounds/carPass1.ogg
--------------------------------------------------------------------------------
/assets/week5/images/characters/bfChristmas.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week5/images/characters/bfChristmas.png
--------------------------------------------------------------------------------
/assets/week5/images/characters/gfChristmas.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week5/images/characters/gfChristmas.png
--------------------------------------------------------------------------------
/assets/week5/images/characters/mom_dad_christmas_assets.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week5/images/characters/mom_dad_christmas_assets.png
--------------------------------------------------------------------------------
/assets/week5/images/characters/monsterChristmas.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week5/images/characters/monsterChristmas.png
--------------------------------------------------------------------------------
/assets/week5/images/christmas/bgEscalator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week5/images/christmas/bgEscalator.png
--------------------------------------------------------------------------------
/assets/week5/images/christmas/bgWalls.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week5/images/christmas/bgWalls.png
--------------------------------------------------------------------------------
/assets/week5/images/christmas/bottomBop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week5/images/christmas/bottomBop.png
--------------------------------------------------------------------------------
/assets/week5/images/christmas/bottomBop.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/assets/week5/images/christmas/christmasTree.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week5/images/christmas/christmasTree.png
--------------------------------------------------------------------------------
/assets/week5/images/christmas/christmasWall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week5/images/christmas/christmasWall.png
--------------------------------------------------------------------------------
/assets/week5/images/christmas/evilBG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week5/images/christmas/evilBG.png
--------------------------------------------------------------------------------
/assets/week5/images/christmas/evilSnow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week5/images/christmas/evilSnow.png
--------------------------------------------------------------------------------
/assets/week5/images/christmas/evilTree.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week5/images/christmas/evilTree.png
--------------------------------------------------------------------------------
/assets/week5/images/christmas/fgSnow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week5/images/christmas/fgSnow.png
--------------------------------------------------------------------------------
/assets/week5/images/christmas/santa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week5/images/christmas/santa.png
--------------------------------------------------------------------------------
/assets/week5/images/christmas/santa.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/assets/week5/images/christmas/upperBop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week5/images/christmas/upperBop.png
--------------------------------------------------------------------------------
/assets/week5/images/christmas/upperBop.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/assets/week5/sounds/Lights_Shut_off.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week5/sounds/Lights_Shut_off.ogg
--------------------------------------------------------------------------------
/assets/week5/sounds/Lights_Turn_On.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week5/sounds/Lights_Turn_On.ogg
--------------------------------------------------------------------------------
/assets/week6/images/characters/bfPixel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/characters/bfPixel.png
--------------------------------------------------------------------------------
/assets/week6/images/characters/bfPixelsDEAD.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/characters/bfPixelsDEAD.png
--------------------------------------------------------------------------------
/assets/week6/images/characters/gfPixel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/characters/gfPixel.png
--------------------------------------------------------------------------------
/assets/week6/images/characters/gfPixel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/assets/week6/images/characters/senpai.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/characters/senpai.png
--------------------------------------------------------------------------------
/assets/week6/images/characters/spirit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/characters/spirit.png
--------------------------------------------------------------------------------
/assets/week6/images/characters/spirit.txt:
--------------------------------------------------------------------------------
1 | idle spirit_0 = 0 1028 128 128
2 | idle spirit_1 = 0 1157 128 128
3 | idle spirit_2 = 1542 0 128 128
4 | idle spirit_3 = 643 900 128 128
5 | idle spirit_4 = 387 1029 128 128
6 | idle spirit_5 = 772 771 128 128
7 | idle spirit_6 = 129 1415 128 128
8 | idle spirit_7 = 258 1286 128 128
9 | idle spirit_8 = 0 1544 128 128
10 | idle spirit_9 = 387 1158 128 128
11 | idle spirit_10 = 129 1028 128 128
12 | idle spirit_11 = 514 771 128 128
13 | idle spirit_12 = 129 1157 128 128
14 | idle spirit_13 = 258 1028 128 128
15 | idle spirit_14 = 0 1286 128 128
16 | idle spirit_15 = 514 900 128 128
17 | idle spirit_16 = 643 771 128 128
18 | idle spirit_17 = 0 1415 128 128
19 | idle spirit_18 = 129 1286 128 128
20 | idle spirit_19 = 258 1157 128 128
21 | spirit down_0 = 0 0 256 256
22 | spirit down_1 = 257 0 256 256
23 | spirit down_2 = 771 514 256 256
24 | spirit down_3 = 1028 257 256 256
25 | spirit down_4 = 1285 0 256 256
26 | spirit down_5 = 1285 257 256 256
27 | spirit down_6 = 1028 514 256 256
28 | spirit down_7 = 1285 514 256 256
29 | spirit down_8 = 0 771 256 256
30 | spirit down_9 = 257 771 256 256
31 | spirit down_10 = 514 0 256 256
32 | spirit down_11 = 0 257 256 256
33 | spirit down_12 = 257 257 256 256
34 | spirit down_13 = 0 514 256 256
35 | spirit down_14 = 257 514 256 256
36 | spirit down_15 = 514 257 256 256
37 | spirit down_16 = 514 514 256 256
38 | spirit down_17 = 771 0 256 256
39 | spirit down_18 = 771 257 256 256
40 | spirit down_19 = 1028 0 256 256
41 | left_0 = 516 1029 128 128
42 | left_1 = 1542 129 128 128
43 | left_10 = 772 900 128 128
44 | left_11 = 901 771 128 128
45 | left_12 = 258 1415 128 128
46 | left_13 = 129 1544 128 128
47 | left_14 = 387 1287 128 128
48 | left_15 = 645 1029 128 128
49 | left_16 = 516 1158 128 128
50 | left_17 = 1542 258 128 128
51 | left_18 = 1030 771 128 128
52 | left_19 = 901 900 128 128
53 | left_2 = 258 1544 128 128
54 | left_3 = 516 1287 128 128
55 | left_4 = 387 1416 128 128
56 | left_5 = 645 1158 128 128
57 | left_6 = 774 1029 128 128
58 | left_7 = 1542 387 128 128
59 | left_8 = 1030 900 128 128
60 | left_9 = 1159 771 128 128
61 | right_0 = 903 1029 128 128
62 | right_1 = 774 1158 128 128
63 | right_2 = 1032 1029 128 128
64 | right_3 = 1542 645 128 128
65 | right_4 = 1288 900 128 128
66 | right_5 = 774 1416 128 128
67 | right_6 = 1032 1158 128 128
68 | right_7 = 903 1287 128 128
69 | right_8 = 1161 1029 128 128
70 | right_9 = 645 1545 128 128
71 | right_10 = 516 1416 128 128
72 | right_11 = 387 1545 128 128
73 | right_12 = 645 1287 128 128
74 | right_13 = 1542 516 128 128
75 | right_14 = 1288 771 128 128
76 | right_15 = 1159 900 128 128
77 | right_16 = 645 1416 128 128
78 | right_17 = 516 1545 128 128
79 | right_18 = 774 1287 128 128
80 | right_19 = 903 1158 128 128
81 | up_0 = 1417 774 128 128
82 | up_1 = 903 1416 128 128
83 | up_2 = 1419 1032 128 128
84 | up_3 = 1548 903 128 128
85 | up_4 = 1290 1287 128 128
86 | up_5 = 1161 1416 128 128
87 | up_6 = 1032 1545 128 128
88 | up_7 = 1548 1032 128 128
89 | up_8 = 1419 1161 128 128
90 | up_9 = 1161 1545 128 128
91 | up_10 = 1290 1029 128 128
92 | up_11 = 1161 1158 128 128
93 | up_12 = 774 1545 128 128
94 | up_13 = 1032 1287 128 128
95 | up_14 = 1546 774 128 128
96 | up_15 = 903 1545 128 128
97 | up_16 = 1161 1287 128 128
98 | up_17 = 1032 1416 128 128
99 | up_18 = 1290 1158 128 128
100 | up_19 = 1419 903 128 128
101 |
--------------------------------------------------------------------------------
/assets/week6/images/weeb/animatedEvilSchool.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/animatedEvilSchool.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/animatedEvilSchool.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/assets/week6/images/weeb/bfPortrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/bfPortrait.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/bfPortrait.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/assets/week6/images/weeb/bgFreaks.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/bgFreaks.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/evilSchoolBG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/evilSchoolBG.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/evilSchoolFG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/evilSchoolFG.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/petals.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/petals.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/pixelUI/arrows-pixels.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/pixelUI/arrows-pixels.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/pixelUI/arrows-pixels.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/assets/week6/images/weeb/pixelUI/bad-pixel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/pixelUI/bad-pixel.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/pixelUI/combo-pixel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/pixelUI/combo-pixel.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/pixelUI/date-pixel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/pixelUI/date-pixel.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/pixelUI/dialogueBox-evil.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/pixelUI/dialogueBox-evil.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/pixelUI/dialogueBox-evil.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/assets/week6/images/weeb/pixelUI/dialogueBox-pixel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/pixelUI/dialogueBox-pixel.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/pixelUI/dialogueBox-pixel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/assets/week6/images/weeb/pixelUI/dialogueBox-senpaiMad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/pixelUI/dialogueBox-senpaiMad.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/pixelUI/dialogueBox-senpaiMad.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/assets/week6/images/weeb/pixelUI/good-pixel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/pixelUI/good-pixel.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/pixelUI/hand_textbox.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/pixelUI/hand_textbox.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/pixelUI/num0-pixel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/pixelUI/num0-pixel.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/pixelUI/num1-pixel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/pixelUI/num1-pixel.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/pixelUI/num2-pixel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/pixelUI/num2-pixel.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/pixelUI/num3-pixel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/pixelUI/num3-pixel.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/pixelUI/num4-pixel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/pixelUI/num4-pixel.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/pixelUI/num5-pixel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/pixelUI/num5-pixel.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/pixelUI/num6-pixel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/pixelUI/num6-pixel.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/pixelUI/num7-pixel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/pixelUI/num7-pixel.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/pixelUI/num8-pixel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/pixelUI/num8-pixel.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/pixelUI/num9-pixel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/pixelUI/num9-pixel.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/pixelUI/ready-pixel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/pixelUI/ready-pixel.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/pixelUI/set-pixel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/pixelUI/set-pixel.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/pixelUI/shit-pixel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/pixelUI/shit-pixel.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/pixelUI/sick-pixel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/pixelUI/sick-pixel.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/senpaiCrazy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/senpaiCrazy.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/senpaiPortrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/senpaiPortrait.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/senpaiPortrait.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/assets/week6/images/weeb/spiritFaceForward.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/spiritFaceForward.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/weebSchool.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/weebSchool.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/weebSky.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/weebSky.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/weebStreet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/weebStreet.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/weebTrees.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/weebTrees.png
--------------------------------------------------------------------------------
/assets/week6/images/weeb/weebTrees.txt:
--------------------------------------------------------------------------------
1 | trees_0 = 0 0 512 512
2 | trees_1 = 513 0 512 512
3 | trees_2 = 1539 1026 512 512
4 | trees_3 = 2052 513 512 512
5 | trees_4 = 2565 0 512 512
6 | trees_5 = 3078 0 512 512
7 | trees_6 = 2565 513 512 512
8 | trees_7 = 2052 1026 512 512
9 | trees_8 = 2565 1026 512 512
10 | trees_9 = 3078 513 512 512
11 | trees_10 = 1026 0 512 512
12 | trees_11 = 0 513 512 512
13 | trees_12 = 513 513 512 512
14 | trees_13 = 0 1026 512 512
15 | trees_14 = 513 1026 512 512
16 | trees_15 = 1026 513 512 512
17 | trees_16 = 1026 1026 512 512
18 | trees_17 = 1539 0 512 512
19 | trees_18 = 1539 513 512 512
20 | trees_19 = 2052 0 512 512
--------------------------------------------------------------------------------
/assets/week6/images/weeb/weebTreesBack.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/images/weeb/weebTreesBack.png
--------------------------------------------------------------------------------
/assets/week6/music/Lunchbox.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/music/Lunchbox.ogg
--------------------------------------------------------------------------------
/assets/week6/music/LunchboxScary.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/music/LunchboxScary.ogg
--------------------------------------------------------------------------------
/assets/week6/music/gameOver-pixel.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/music/gameOver-pixel.ogg
--------------------------------------------------------------------------------
/assets/week6/music/gameOverEnd-pixel.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/music/gameOverEnd-pixel.ogg
--------------------------------------------------------------------------------
/assets/week6/sounds/Senpai_Dies.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/sounds/Senpai_Dies.ogg
--------------------------------------------------------------------------------
/assets/week6/sounds/clickText.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/sounds/clickText.ogg
--------------------------------------------------------------------------------
/assets/week6/sounds/fnf_loss_sfx-pixel.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/sounds/fnf_loss_sfx-pixel.ogg
--------------------------------------------------------------------------------
/assets/week6/sounds/intro1-pixel.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/sounds/intro1-pixel.ogg
--------------------------------------------------------------------------------
/assets/week6/sounds/intro2-pixel.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/sounds/intro2-pixel.ogg
--------------------------------------------------------------------------------
/assets/week6/sounds/intro3-pixel.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/sounds/intro3-pixel.ogg
--------------------------------------------------------------------------------
/assets/week6/sounds/introGo-pixel.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/sounds/introGo-pixel.ogg
--------------------------------------------------------------------------------
/assets/week6/sounds/pixelText.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/assets/week6/sounds/pixelText.ogg
--------------------------------------------------------------------------------
/build-crash-dialog.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 |
3 | cd crash-dialog
4 | haxe hxwidgets-windows.hxml
5 | copy build\windows\Main.exe ..\export\release\windows\bin\IzzyEngine-CrashDialog.exe
6 | cd ..
7 |
8 | @echo on
--------------------------------------------------------------------------------
/build-crash-dialog.sh:
--------------------------------------------------------------------------------
1 | cd crash-dialog
2 | haxe hxwidgets-linux.hxml
3 | cp build/linux/Main ../export/release/linux/bin/IzzyEngine-CrashDialog
4 | cd ..
--------------------------------------------------------------------------------
/concept/charter bg.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/concept/charter bg.psd
--------------------------------------------------------------------------------
/concept/charter ui concept 2 (with properties).png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/concept/charter ui concept 2 (with properties).png
--------------------------------------------------------------------------------
/concept/charter ui concept 2 (without properties).png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/concept/charter ui concept 2 (without properties).png
--------------------------------------------------------------------------------
/concept/charter ui concept 2.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/concept/charter ui concept 2.psd
--------------------------------------------------------------------------------
/concept/charter ui concept.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/concept/charter ui concept.psd
--------------------------------------------------------------------------------
/concept/charter ui dialog box.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/concept/charter ui dialog box.psd
--------------------------------------------------------------------------------
/concept/charter ui esc menu.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/concept/charter ui esc menu.psd
--------------------------------------------------------------------------------
/concept/crash banner.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/concept/crash banner.psd
--------------------------------------------------------------------------------
/crash-dialog/assets/banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/crash-dialog/assets/banner.png
--------------------------------------------------------------------------------
/crash-dialog/assets/banner1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/crash-dialog/assets/banner1.png
--------------------------------------------------------------------------------
/crash-dialog/assets/main-view.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/crash-dialog/hxformat.json:
--------------------------------------------------------------------------------
1 | {
2 | "lineEnds": {
3 | "leftCurly": "both",
4 | "rightCurly": "both",
5 | "objectLiteralCurly": {
6 | "leftCurly": "after"
7 | }
8 | },
9 | "sameLine": {
10 | "ifElse": "next",
11 | "doWhile": "next",
12 | "tryBody": "next",
13 | "tryCatch": "next"
14 | }
15 | }
--------------------------------------------------------------------------------
/crash-dialog/hxwidgets-linux.hxml:
--------------------------------------------------------------------------------
1 | -cp src
2 | -main Main
3 |
4 | -lib haxeui-core
5 | -lib haxeui-hxwidgets
6 | -lib hxWidgets
7 | -lib hscript
8 |
9 | -D linux
10 | -D ABI=-MD
11 | -D WXSTATIC
12 | -D HXCPP_M64
13 |
14 | -cpp build/linux
15 |
--------------------------------------------------------------------------------
/crash-dialog/hxwidgets-windows.hxml:
--------------------------------------------------------------------------------
1 | -cp src
2 | -main Main
3 |
4 | -lib haxeui-core
5 | -lib haxeui-hxwidgets
6 | -lib hxWidgets
7 | -lib hscript
8 |
9 | -D windows
10 | -D ABI=-MD
11 | -D WXSTATIC
12 | -D HXCPP_M64
13 |
14 | -cpp build/windows
15 |
--------------------------------------------------------------------------------
/crash-dialog/src/Main.hx:
--------------------------------------------------------------------------------
1 | package;
2 |
3 | import haxe.ui.HaxeUIApp;
4 | import haxe.ui.components.Button;
5 | import haxe.ui.components.Label;
6 | import haxe.ui.core.Component;
7 | import haxe.ui.macros.ComponentMacros;
8 | import sys.io.File;
9 | import sys.io.Process;
10 |
11 | class Main
12 | {
13 | /**
14 | * Okay so since I am not funny (prolly never will), feel free to add a PR
15 | * extending this list of quotes, or raise an issue if you're too lazy
16 | * to do it. Thanks -gedehari
17 | */
18 | static final quotes:Array = [
19 | "Blueballed.", // gedehari
20 | "This isn't spooky, this is scary!", // gedehari
21 | "Izzy Engine is D-izzy.", // 52
22 | "Useless, but not for long.", // ito
23 | "He's in your bed, and Izzy has crashed.", // ito
24 | "I think I'm dying this time.", // ito
25 | "Skill issue.", // shubs
26 | "Tight bars. Can't say the same for the game.", // shubs
27 | "Totally not stolen from NotITG!", // shubs
28 | "And I was just about to beat it too!", // shubs
29 | "Almost as dead as Garcello.", // shubs
30 | "Please stop you aren't even making sense!", // shubs
31 | "You were so bad the game just crashed.", // shubs
32 | ];
33 |
34 | public static function main()
35 | {
36 | var args:Array = Sys.args();
37 |
38 | if (args[0] == null)
39 | Sys.exit(1);
40 | else
41 | {
42 | var path:String = args[0];
43 | var contents:String = File.getContent(path);
44 | var split:Array = contents.split("\n");
45 |
46 | var app = new HaxeUIApp();
47 |
48 | app.ready(function()
49 | {
50 | var mainView:Component = ComponentMacros.buildComponent("assets/main-view.xml");
51 | app.addComponent(mainView);
52 |
53 | var messageLabel:Label = mainView.findComponent("message-label", Label);
54 | messageLabel.text = quotes[Std.random(quotes.length)] + "\nUnfortunately, Izzy Engine has crashed.";
55 | messageLabel.percentWidth = 100;
56 | messageLabel.textAlign = "center";
57 |
58 | var callStackLabel:Label = mainView.findComponent("call-stack-label", Label);
59 | callStackLabel.text = "";
60 | for (i in 0...split.length - 4)
61 | {
62 | if (i == split.length - 5)
63 | callStackLabel.text += split[i];
64 | else
65 | callStackLabel.text += split[i] + "\n";
66 | }
67 |
68 | var crashReasonLabel:Label = mainView.findComponent("crash-reason-label", Label);
69 | crashReasonLabel.text = "";
70 | for (i in split.length - 3...split.length - 1)
71 | {
72 | if (i == split.length - 2)
73 | crashReasonLabel.text += split[i];
74 | else
75 | crashReasonLabel.text += split[i] + "\n";
76 | }
77 |
78 | mainView.findComponent("view-crash-dump-button", Button).onClick = function(_)
79 | {
80 | #if windows
81 | Sys.command("start", [path]);
82 | #elseif linux
83 | Sys.command("xdg-open", [path]);
84 | #end
85 | };
86 |
87 | mainView.findComponent("restart-button", Button).onClick = function(_)
88 | {
89 | #if windows
90 | new Process("IzzyEngine.exe", []);
91 | #elseif linux
92 | new Process("./IzzyEngine", []);
93 | #end
94 |
95 | Sys.exit(0);
96 | };
97 |
98 | mainView.findComponent("close-button", Button).onClick = function(_)
99 | {
100 | Sys.exit(0);
101 | };
102 |
103 | app.start();
104 | });
105 | }
106 | }
107 | }
108 |
--------------------------------------------------------------------------------
/crash-dialog/src/haxeui-hxwidgets.properties:
--------------------------------------------------------------------------------
1 | haxe.ui.hxwidgets.frame.fit=true
2 | haxe.ui.hxwidgets.frame.title=Izzy Engine Crash Dialog
3 | haxe.ui.hxwidgets.frame.resizable=false
4 | haxe.ui.hxwidgets.frame.maximizable=false
5 |
--------------------------------------------------------------------------------
/crash-dialog/src/module.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/data/characters/bf-car.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "bf-car",
3 | "atlasPath": [
4 | "characters/bfCar",
5 | "week4"
6 | ],
7 | "flipX": false,
8 | "height": 412,
9 | "cameraOffset": [-300.0, -100.0],
10 | "idleSequence": ["idle"],
11 | "animations": {
12 | "idle": {
13 | "fromPrefix": "BF idle dance",
14 | "fps": 24,
15 | "loop": false,
16 | "offset": [5.0, 0.0]
17 | },
18 | "singUp": {
19 | "fromPrefix": "BF NOTE UP0",
20 | "fps": 24,
21 | "loop": false,
22 | "offset": [29.0, -27.0]
23 | },
24 | "singLeft": {
25 | "fromPrefix": "BF NOTE LEFT0",
26 | "fps": 24,
27 | "loop": false,
28 | "offset": [-12.0, 6.0]
29 | },
30 | "singRight": {
31 | "fromPrefix": "BF NOTE RIGHT0",
32 | "fps": 24,
33 | "loop": false,
34 | "offset": [38.0, 7.0]
35 | },
36 | "singDown": {
37 | "fromPrefix": "BF NOTE DOWN0",
38 | "fps": 24,
39 | "loop": false,
40 | "offset": [10.0, 50.0]
41 | },
42 | "singUpMiss": {
43 | "fromPrefix": "BF NOTE UP MISS",
44 | "fps": 24,
45 | "loop": false,
46 | "offset": [29.0, -27.0]
47 | },
48 | "singLeftMiss": {
49 | "fromPrefix": "BF NOTE LEFT MISS",
50 | "fps": 24,
51 | "loop": false,
52 | "offset": [-12.0, -24.0]
53 | },
54 | "singRightMiss": {
55 | "fromPrefix": "BF NOTE RIGHT MISS",
56 | "fps": 24,
57 | "loop": false,
58 | "offset": [30.0, -21.0]
59 | },
60 | "singDownMiss": {
61 | "fromPrefix": "BF NOTE DOWN MISS",
62 | "fps": 24,
63 | "loop": false,
64 | "offset": [11.0, 19.0]
65 | }
66 | }
67 | }
--------------------------------------------------------------------------------
/data/characters/bf.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "bf",
3 | "atlasPath": [
4 | "characters/BOYFRIEND",
5 | "default"
6 | ],
7 | "flipX": false,
8 | "height": 412,
9 | "cameraOffset": [-100.0, -100.0],
10 | "idleSequence": ["idle"],
11 | "animations": {
12 | "idle": {
13 | "fromPrefix": "BF idle dance",
14 | "fps": 24,
15 | "loop": false,
16 | "offset": [5.0, 0.0]
17 | },
18 | "singUp": {
19 | "fromPrefix": "BF NOTE UP0",
20 | "fps": 24,
21 | "loop": false,
22 | "offset": [29.0, -27.0]
23 | },
24 | "singLeft": {
25 | "fromPrefix": "BF NOTE LEFT0",
26 | "fps": 24,
27 | "loop": false,
28 | "offset": [-12.0, 6.0]
29 | },
30 | "singRight": {
31 | "fromPrefix": "BF NOTE RIGHT0",
32 | "fps": 24,
33 | "loop": false,
34 | "offset": [38.0, 7.0]
35 | },
36 | "singDown": {
37 | "fromPrefix": "BF NOTE DOWN0",
38 | "fps": 24,
39 | "loop": false,
40 | "offset": [10.0, 50.0]
41 | },
42 | "singUpMiss": {
43 | "fromPrefix": "BF NOTE UP MISS",
44 | "fps": 24,
45 | "loop": false,
46 | "offset": [29.0, -27.0]
47 | },
48 | "singLeftMiss": {
49 | "fromPrefix": "BF NOTE LEFT MISS",
50 | "fps": 24,
51 | "loop": false,
52 | "offset": [-12.0, -24.0]
53 | },
54 | "singRightMiss": {
55 | "fromPrefix": "BF NOTE RIGHT MISS",
56 | "fps": 24,
57 | "loop": false,
58 | "offset": [30.0, -21.0]
59 | },
60 | "singDownMiss": {
61 | "fromPrefix": "BF NOTE DOWN MISS",
62 | "fps": 24,
63 | "loop": false,
64 | "offset": [11.0, 19.0]
65 | }
66 | }
67 | }
--------------------------------------------------------------------------------
/data/characters/dad.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "dad",
3 | "atlasPath": [
4 | "characters/DADDY_DEAREST",
5 | "default"
6 | ],
7 | "flipX": false,
8 | "height": 767,
9 | "cameraOffset": [150.0, -100.0],
10 | "idleSequence": ["idle"],
11 | "animations": {
12 | "idle": {
13 | "fromPrefix": "Dad idle dance",
14 | "fps": 24,
15 | "loop": false
16 | },
17 | "singUp": {
18 | "fromPrefix": "Dad Sing Note UP",
19 | "fps": 24,
20 | "loop": false,
21 | "offset": [6.0, -50.0]
22 | },
23 | "singLeft": {
24 | "fromPrefix": "Dad Sing Note LEFT",
25 | "fps": 24,
26 | "loop": false,
27 | "offset": [10.0, -10.0]
28 | },
29 | "singRight": {
30 | "fromPrefix": "Dad Sing Note RIGHT",
31 | "fps": 24,
32 | "loop": false,
33 | "offset": [0.0, -27.0]
34 | },
35 | "singDown": {
36 | "fromPrefix": "Dad Sing Note DOWN",
37 | "fps": 24,
38 | "loop": false,
39 | "offset": [0.0, 30.0]
40 | }
41 | }
42 | }
--------------------------------------------------------------------------------
/data/characters/gf-car.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "gf-car",
3 | "atlasPath": [
4 | "characters/gfCar",
5 | "week4"
6 | ],
7 | "flipX": false,
8 | "height": 648,
9 | "cameraOffset": [0.0, 0.0],
10 | "idleSequence": ["danceLeft", "danceRight"],
11 | "animations": {
12 | "danceLeft": {
13 | "fromPrefix": "GF Dancing Beat Hair blowing CAR",
14 | "indices": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
15 | "fps": 24,
16 | "loop": false
17 | },
18 | "danceRight": {
19 | "fromPrefix": "GF Dancing Beat Hair blowing CAR",
20 | "indices": [16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
21 | "fps": 24,
22 | "loop": false
23 | }
24 | }
25 | }
--------------------------------------------------------------------------------
/data/characters/gf.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "gf",
3 | "atlasPath": [
4 | "characters/GF_assets",
5 | "default"
6 | ],
7 | "flipX": false,
8 | "height": 648,
9 | "cameraOffset": [0.0, 0.0],
10 | "idleSequence": ["danceLeft", "danceRight"],
11 | "animations": {
12 | "cheer": {
13 | "fromPrefix": "GF Cheer",
14 | "fps": 24,
15 | "loop": false
16 | },
17 | "hairBlow": {
18 | "fromPrefix": "GF Dancing Beat Hair blowing",
19 | "indices": [0, 1, 2, 3],
20 | "fps": 24,
21 | "loop": true,
22 | "offset": [-45, 8]
23 | },
24 | "hairFall": {
25 | "fromPrefix": "GF Dancing Beat Hair Landing",
26 | "indices": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
27 | "fps": 24,
28 | "loop": false,
29 | "offset": [0, 9]
30 | },
31 | "singUp": {
32 | "fromPrefix": "GF Up Note",
33 | "fps": 24,
34 | "loop": false,
35 | "offset": [0, -4]
36 | },
37 | "singLeft": {
38 | "fromPrefix": "GF left note",
39 | "fps": 24,
40 | "loop": false,
41 | "offset": [0, 19]
42 | },
43 | "singRight": {
44 | "fromPrefix": "GF Right Note",
45 | "fps": 24,
46 | "loop": false,
47 | "offset": [0, 20]
48 | },
49 | "singDown": {
50 | "fromPrefix": "GF Down Note",
51 | "fps": 24,
52 | "loop": false,
53 | "offset": [0, 20]
54 | },
55 | "danceLeft": {
56 | "fromPrefix": "GF Dancing Beat",
57 | "indices": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
58 | "fps": 24,
59 | "loop": false,
60 | "offset": [0, 9]
61 | },
62 | "danceRight": {
63 | "fromPrefix": "GF Dancing Beat",
64 | "indices": [16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30],
65 | "fps": 24,
66 | "loop": false,
67 | "offset": [0, 9]
68 | }
69 | }
70 | }
--------------------------------------------------------------------------------
/data/characters/mom-car.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "mom-car",
3 | "atlasPath": [
4 | "characters/momCar",
5 | "week4"
6 | ],
7 | "flipX": false,
8 | "height": 814,
9 | "cameraOffset": [150.0, 0.0],
10 | "idleSequence": ["idle"],
11 | "animations": {
12 | "idle": {
13 | "fromPrefix": "Mom Idle",
14 | "fps": 24,
15 | "loop": false
16 | },
17 | "singUp": {
18 | "fromPrefix": "Mom Up Pose",
19 | "fps": 24,
20 | "loop": false,
21 | "offset": [-14.0, -71.0]
22 | },
23 | "singLeft": {
24 | "fromPrefix": "Mom Left Pose",
25 | "fps": 24,
26 | "loop": false,
27 | "offset": [-250.0, 23.0]
28 | },
29 | "singRight": {
30 | "fromPrefix": "Mom Pose Left",
31 | "fps": 24,
32 | "loop": false,
33 | "offset": [-10.0, 60.0]
34 | },
35 | "singDown": {
36 | "fromPrefix": "MOM DOWN POSE",
37 | "fps": 24,
38 | "loop": false,
39 | "offset": [-20.0, 160.0]
40 | }
41 | }
42 | }
--------------------------------------------------------------------------------
/data/characters/parents-christmas.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "parents-christmas",
3 | "atlasPath": [
4 | "characters/mom_dad_christmas_assets",
5 | "week5"
6 | ],
7 | "flipX": false,
8 | "height": 782,
9 | "cameraOffset": [150.0, -100.0],
10 | "idleSequence": ["idle"],
11 | "animations": {
12 | "idle": {
13 | "fromPrefix": "Parent Christmas Idle",
14 | "fps": 24,
15 | "loop": false
16 | },
17 | "singUp": {
18 | "fromPrefix": "Parent Up Note Dad",
19 | "fps": 24,
20 | "loop": false,
21 | "offset": [47.0, -24.0]
22 | },
23 | "singLeft": {
24 | "fromPrefix": "Parent Left Note Dad",
25 | "fps": 24,
26 | "loop": false,
27 | "offset": [30.0, -16.0]
28 | },
29 | "singRight": {
30 | "fromPrefix": "Parent Right Note Dad",
31 | "fps": 24,
32 | "loop": false,
33 | "offset": [1.0, 23.0]
34 | },
35 | "singDown": {
36 | "fromPrefix": "Parent Down Note Dad",
37 | "fps": 24,
38 | "loop": false,
39 | "offset": [31.0, 29.0]
40 | },
41 | "singUp-alt": {
42 | "fromPrefix": "Parent Up Note Mom",
43 | "fps": 24,
44 | "loop": false,
45 | "offset": [47.0, -24.0]
46 | },
47 | "singLeft-alt": {
48 | "fromPrefix": "Parent Left Note Mom",
49 | "fps": 24,
50 | "loop": false,
51 | "offset": [30.0, -15.0]
52 | },
53 | "singRight-alt": {
54 | "fromPrefix": "Parent Right Note Mom",
55 | "fps": 24,
56 | "loop": false,
57 | "offset": [1.0, 24.0]
58 | },
59 | "singDown-alt": {
60 | "fromPrefix": "Parent Down Note Mom",
61 | "fps": 24,
62 | "loop": false,
63 | "offset": [30.0, 27.0]
64 | }
65 | }
66 | }
--------------------------------------------------------------------------------
/data/characters/pico.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "pico",
3 | "atlasPath": [
4 | "characters/Pico_FNF_assetss",
5 | "week3"
6 | ],
7 | "flipX": true,
8 | "height": 475,
9 | "cameraOffset": [150.0, -100.0],
10 | "idleSequence": ["idle"],
11 | "animations": {
12 | "idle": {
13 | "fromPrefix": "Pico Idle Dance",
14 | "fps": 24,
15 | "loop": false
16 | },
17 | "singUp": {
18 | "fromPrefix": "pico Up note0",
19 | "fps": 24,
20 | "loop": false,
21 | "offset": [-29.0, -27.0]
22 | },
23 | "singLeft": {
24 | "fromPrefix": "Pico Note Right0",
25 | "fps": 24,
26 | "loop": false,
27 | "offset": [65.0, -9.0]
28 | },
29 | "singRight": {
30 | "fromPrefix": "Pico NOTE LEFT0",
31 | "fps": 24,
32 | "loop": false,
33 | "offset": [-68.0, 7.0]
34 | },
35 | "singDown": {
36 | "fromPrefix": "Pico Down Note0",
37 | "fps": 24,
38 | "loop": false,
39 | "offset": [200.0, 70.0]
40 | }
41 | }
42 | }
--------------------------------------------------------------------------------
/data/characters/spooky.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "spooky",
3 | "atlasPath": [
4 | "characters/spooky_kids_assets",
5 | "week2"
6 | ],
7 | "flipX": false,
8 | "height": 549,
9 | "cameraOffset": [0.0, 0.0],
10 | "idleSequence": ["danceLeft", "danceRight"],
11 | "animations": {
12 | "danceLeft": {
13 | "fromPrefix": "spooky dance idle",
14 | "indices": [0, 2, 6],
15 | "fps": 12,
16 | "loop": false
17 | },
18 | "danceRight": {
19 | "fromPrefix": "spooky dance idle",
20 | "indices": [8, 10, 12, 14],
21 | "fps": 12,
22 | "loop": false
23 | },
24 | "singUp": {
25 | "fromPrefix": "spooky UP NOTE",
26 | "fps": 24,
27 | "loop": false,
28 | "offset": [20.0, -26.0]
29 | },
30 | "singLeft": {
31 | "fromPrefix": "note sing left",
32 | "fps": 24,
33 | "loop": false,
34 | "offset": [-130.0, 10.0]
35 | },
36 | "singRight": {
37 | "fromPrefix": "spooky sing right",
38 | "fps": 24,
39 | "loop": false,
40 | "offset": [130.0, 14.0]
41 | },
42 | "singDown": {
43 | "fromPrefix": "spooky DOWN note",
44 | "fps": 24,
45 | "loop": false,
46 | "offset": [50.0, 130.0]
47 | }
48 | }
49 | }
--------------------------------------------------------------------------------
/data/gameplay.json:
--------------------------------------------------------------------------------
1 | {
2 | "noteHoldTolerance": 0.1,
3 | "timeWindow": {
4 | "sick": 0.04,
5 | "good": 0.07,
6 | "bad" : 0.14,
7 | "shit": 0.22
8 | }
9 | }
--------------------------------------------------------------------------------
/data/introTexts.json:
--------------------------------------------------------------------------------
1 | [
2 | ["shoutouts to tom fulp", "lmao"],
3 | ["Ludum dare", "extraordinaire"],
4 | ["cyberzone", "coming soon"],
5 | ["love to thriftman", "swag"],
6 | ["ultimate rhythm gaming", "probably"],
7 | ["dope ass game", "playstation magazine"],
8 | ["in loving memory of", "henryeyes"],
9 | ["dancin", "forever"],
10 | ["funkin", "forever"],
11 | ["ritz dx", "rest in peace lol"],
12 | ["rate five", "pls no blam"],
13 | ["rhythm gaming", "ultimate"],
14 | ["game of the year", "forever"],
15 | ["you already know", "we really out here"],
16 | ["rise and grind", "love to luis"],
17 | ["like parappa", "but cooler"],
18 | ["album of the year", "chuckie finster"],
19 | ["free gitaroo man", "with love to wandaboy"],
20 | ["better than geometry dash", "fight me robtop"],
21 | ["kiddbrute for president", "vote now"],
22 | ["play dead estate", "on newgrounds"],
23 | ["this is a god damn prototype", "we workin on it okay"],
24 | ["women are real", "this is official"],
25 | ["too over exposed", "newgrounds cant handle us"],
26 | ["Hatsune Miku", "biggest inspiration"],
27 | ["too many people", "my head hurts"],
28 | ["newgrounds", "forever"],
29 | ["refined taste in music", "if i say so myself"],
30 | ["his name isnt keith", "dumb eggy lol"],
31 | ["his name isnt evan", "silly tiktok"],
32 | ["stream chuckie finster", "on spotify"],
33 | ["never forget to", "pray to god"],
34 | ["dont play rust", "we only funkin"],
35 | ["good bye", "my penis"],
36 | ["dababy", "biggest inspiration"],
37 | ["fashionably late", "but here it is"],
38 | ["yooooooooooo", "yooooooooo"],
39 | ["pico funny", "pico funny"],
40 | ["updates each friday", "on time every time"],
41 | ["shoutouts to mason", "for da homies"],
42 | ["bonk", "get in the discord call"],
43 | ["good soldiers", "follow orders"],
44 | ["not the original game", "this is a complete remake"],
45 | ["DrPatrick", "was here"],
46 | ["we do", "a little trollin"]
47 | ]
48 |
--------------------------------------------------------------------------------
/data/noteStyles/default.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "default",
3 | "atlasPath": ["gameplay/NOTE_assets", "default"],
4 | "globalNoteScale": 0.7,
5 | "antialiasing": true,
6 | "animPrefixes":
7 | {
8 | "arrow": ["purple0", "blue0", "green0", "red0"],
9 | "tailHold": ["purple hold piece", "blue hold piece", "green hold piece", "red hold piece"],
10 | "tailEnd": ["pruple end hold", "blue hold end", "green hold end", "red hold end"],
11 | "strumIdle": ["arrowLEFT", "arrowDOWN", "arrowUP", "arrowRIGHT"],
12 | "strumPress": ["left press", "down press", "up press", "right press"],
13 | "strumHit": ["left confirm0", "down confirm0", "up confirm0", "right confirm0"]
14 | }
15 | }
--------------------------------------------------------------------------------
/data/noteStyles/pixel.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "pixel",
3 | "atlasPath": ["weeb/pixelUI/arrows-pixels", "week6"],
4 | "globalNoteScale": 6.0,
5 | "antialiasing": false,
6 | "animPrefixes":
7 | {
8 | "arrow": ["moving_left", "moving_down", "moving_up", "moving_right"],
9 | "tailHold": ["tailhold_left", "tailhold_down", "tailhold_up", "tailhold_right"],
10 | "tailEnd": ["tailend_left", "tailend_down", "tailend_up", "tailend_right"],
11 | "strumIdle": ["static_left", "static_down", "static_up", "static_right"],
12 | "strumPress": ["static_pressed_left", "static_pressed_down", "static_pressed_up", "static_pressed_right"],
13 | "strumHit": ["static_hit_left", "static_hit_down", "static_hit_up", "static_hit_right"]
14 | }
15 | }
--------------------------------------------------------------------------------
/data/shaders/quad_raytrace.frag:
--------------------------------------------------------------------------------
1 | // Based on a shader by zalo.
2 | // https://www.shadertoy.com/view/4tBBzG
3 | // Modified to support OpenFL.
4 |
5 | #pragma header
6 |
7 | uniform vec3 planePosition;
8 | uniform vec3 planeRotation;
9 | uniform vec2 planeDimension;
10 |
11 | float plane( in vec3 norm, in vec3 po, in vec3 ro, in vec3 rd ) {
12 | float de = dot(norm, rd);
13 | de = sign(de)*max( abs(de), 0.001);
14 | return dot(norm, po-ro)/de;
15 | }
16 |
17 | vec2 raytraceTexturedQuad(in vec3 rayOrigin, in vec3 rayDirection, in vec3 quadCenter, in vec3 quadRotation, in vec2 quadDimensions) {
18 | //Rotations ------------------
19 | float a = sin(quadRotation.x); float b = cos(quadRotation.x);
20 | float c = sin(quadRotation.y); float d = cos(quadRotation.y);
21 | float e = sin(quadRotation.z); float f = cos(quadRotation.z);
22 | float ac = a*c; float bc = b*c;
23 |
24 | mat3 RotationMatrix =
25 | mat3( d*f, d*e, -c,
26 | ac*f-b*e, ac*e+b*f, a*d,
27 | bc*f+a*e, bc*e-a*f, b*d );
28 | //--------------------------------------
29 |
30 | vec3 right = RotationMatrix * vec3(quadDimensions.x, 0.0, 0.0);
31 | vec3 up = RotationMatrix * vec3(0, quadDimensions.y, 0);
32 | vec3 normal = cross(right, up);
33 | normal /= length(normal);
34 |
35 | //Find the plane hit point in space
36 | vec3 pos = (rayDirection * plane(normal, quadCenter, rayOrigin, rayDirection)) - quadCenter;
37 |
38 | //Find the texture UV by projecting the hit point along the plane dirs
39 | return vec2(dot(pos, right) / dot(right, right),
40 | dot(pos, up) / dot(up, up)) + 0.5;
41 | }
42 |
43 | void main() {
44 | //Screen UV goes from 0 - 1 along each axis
45 | vec2 screenUV = openfl_TextureCoordv;
46 | vec2 p = (2.0 * screenUV) - 1.0;
47 | float screenAspect = 1280.0 / 720.0;
48 | p.x *= screenAspect;
49 |
50 | //Normalized Ray Dir
51 | vec3 dir = vec3(p.x, p.y, 1.0);
52 | dir /= length(dir);
53 |
54 | //Define the plane
55 | //vec3 planePosition = vec3(0.0, 0.0, 0.5);
56 | //vec3 planeRotation = vec3(0.2 * cos(time), 0.2 * sin(time), 0.0);
57 | //vec2 planeDimension = vec2(screenAspect, 1.0);
58 |
59 | vec2 uv = raytraceTexturedQuad(vec3(0), dir, planePosition, planeRotation, planeDimension);
60 |
61 | //If we hit the rectangle, sample the texture
62 | if(abs(uv.x - 0.5) < 0.5 && abs(uv.y - 0.5) < 0.5) {
63 | gl_FragColor = vec4(texture(bitmap, uv));
64 | }
65 | }
--------------------------------------------------------------------------------
/data/shaders/rgb_shift.frag:
--------------------------------------------------------------------------------
1 | // Based on a shader by ME!
2 | // YES I FINALLY WROTE SHADERS ON MY OWN LOLOL
3 |
4 | #pragma header
5 |
6 | uniform float amount;
7 |
8 | void main()
9 | {
10 | vec2 uv = openfl_TextureCoordv;
11 | vec3 col = vec3(1.0);
12 |
13 | col.r = texture(bitmap, uv + amount);
14 | col.g = texture(bitmap, uv);
15 | col.b = texture(bitmap, uv - amount);
16 |
17 | gl_FragColor = vec4(col, 1.0);
18 | }
--------------------------------------------------------------------------------
/data/shaders/vhs.frag:
--------------------------------------------------------------------------------
1 | // Based on a shader by FMS_Cat.
2 | // https://www.shadertoy.com/view/XtBXDt
3 | // Modified to support OpenFL.
4 |
5 | #pragma header
6 | #define PI 3.14159265
7 |
8 | uniform float time;
9 |
10 | vec3 tex2D(sampler2D _tex,vec2 _p)
11 | {
12 | vec3 col=texture(_tex,_p).xyz;
13 | if(.5 4)
21 | {
22 | if (lightningCooldown == 0)
23 | {
24 | var random = Std.random(101);
25 | if (random > 90)
26 | {
27 | lazyPlaySound("thunder_" + (Std.random(2) + 1) + ".ogg", "week2");
28 | halloweenBg.animation.play("lightning", true);
29 | lightningCooldown = 20;
30 | }
31 | }
32 | else
33 | {
34 | lightningCooldown -= 1;
35 | }
36 | }
37 | }
--------------------------------------------------------------------------------
/data/stages/limo.hscript:
--------------------------------------------------------------------------------
1 | var skyBG;
2 | var bgLimo;
3 | var limoDancers = [];
4 | var fastCar;
5 | var limo;
6 |
7 | var limoMoving = false;
8 | var limoCooldown = 0;
9 |
10 | function onCreate()
11 | {
12 | stageCamera.zoom = 0.9;
13 |
14 | skyBG = createSprite(-120, -50);
15 | skyBG.loadGraphic(getGraphic("limo/limoSunset.png", "week4"));
16 | skyBG.scrollFactor.set(0.1, 0.1);
17 | stage.add(skyBG);
18 |
19 | bgLimo = createSprite(-200, 480);
20 | bgLimo.frames = getSparrowAtlas("limo/bgLimo", "week4");
21 | bgLimo.animation.addByPrefix("drive", "background limo pink", 24);
22 | bgLimo.animation.play("drive");
23 | bgLimo.scrollFactor.set(0.4, 0.4);
24 | stage.add(bgLimo);
25 |
26 | for (i in 0...5)
27 | {
28 | var dancer = createSprite((370 * i) + 130, bgLimo.y - 400);
29 | dancer.frames = getSparrowAtlas("limo/limoDancer", "week4");
30 | dancer.animation.addByIndices("danceLeft", "bg dancer sketch PINK", [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "", 24, false);
31 | dancer.animation.addByIndices("danceRight", "bg dancer sketch PINK", [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "", 24, false);
32 | dancer.animation.play('danceLeft');
33 | dancer.scrollFactor.set(0.4, 0.4);
34 | stage.add(dancer);
35 | limoDancers.push(dancer);
36 | }
37 |
38 | fastCar = createSprite(-10000, 160);
39 | fastCar.loadGraphic(getGraphic("limo/fastCarLol.png", "week4"));
40 | stage.add(fastCar);
41 |
42 | addGf(400, 778);
43 |
44 | limo = createSprite(-120, 550);
45 | limo.frames = getSparrowAtlas("limo/limoDrive", "week4");
46 | limo.animation.addByPrefix("drive", "Limo stage", 24);
47 | limo.animation.play("drive");
48 | stage.add(limo);
49 |
50 | addEnemy(100, 867);
51 | addPlayer(1030, 642);
52 | }
53 |
54 | function onUpdate(elapsed)
55 | {
56 | if (limoMoving)
57 | {
58 | fastCar.x += elapsed * 8000;
59 | if (fastCar.x > 2000)
60 | {
61 | fastCar.x = -10000;
62 | limoMoving = false;
63 | }
64 | }
65 | }
66 |
67 | function onBeat(beat)
68 | {
69 | if (beat >= 0)
70 | {
71 | // Henchmen
72 | for (i in 0...5)
73 | {
74 | var dancer = limoDancers[i];
75 | if (beat % 2 == 0)
76 | dancer.animation.play('danceLeft');
77 | else
78 | dancer.animation.play('danceRight');
79 | }
80 |
81 | // Passing limo
82 | if (limoCooldown == 0 && !limoMoving)
83 | {
84 | var random = Std.random(101);
85 | if (random > 90)
86 | {
87 | lazyPlaySound("carPass" + Std.random(2) + ".ogg", "week4");
88 | limoMoving = true;
89 | limoCooldown = 20;
90 | }
91 | }
92 | else
93 | {
94 | limoCooldown -= 1;
95 | }
96 | }
97 | }
--------------------------------------------------------------------------------
/data/stages/mall.hscript:
--------------------------------------------------------------------------------
1 | var bg;
2 | var upperBoppers;
3 | var bgEscalator;
4 | var tree;
5 | var bottomBoppers;
6 | var fgSnow;
7 | var santa;
8 |
9 | function onCreate()
10 | {
11 | stageCamera.zoom = 0.9;
12 |
13 | bg = createSprite(-1000, -500);
14 | bg.loadGraphic(getGraphic("christmas/bgWalls.png", "week5"));
15 | bg.scrollFactor.set(0.2, 0.2);
16 | bg.scale.set(0.8, 0.8);
17 | bg.updateHitbox();
18 | stage.add(bg);
19 |
20 | upperBoppers = createSprite(-240, -90);
21 | upperBoppers.frames = getSparrowAtlas("christmas/upperBop", "week5");
22 | upperBoppers.animation.addByPrefix("idle", "Upper Crowd Bob", 24, false);
23 | upperBoppers.scrollFactor.set(0.33, 0.33);
24 | upperBoppers.scale.set(0.85, 0.85);
25 | upperBoppers.updateHitbox();
26 | stage.add(upperBoppers);
27 |
28 | bgEscalator = createSprite(-1100, -600);
29 | bgEscalator.loadGraphic(getGraphic("christmas/bgEscalator.png", "week5"));
30 | bgEscalator.scrollFactor.set(0.3, 0.3);
31 | bgEscalator.active = false;
32 | bgEscalator.scale.set(0.9, 0.9);
33 | bgEscalator.updateHitbox();
34 | stage.add(bgEscalator);
35 |
36 | tree = createSprite(370, -250);
37 | tree.loadGraphic(getGraphic("christmas/christmasTree.png", "week5"));
38 | tree.scrollFactor.set(0.40, 0.40);
39 | stage.add(tree);
40 |
41 | bottomBoppers = createSprite(-300, 140);
42 | bottomBoppers.frames = getSparrowAtlas("christmas/bottomBop", "week5");
43 | bottomBoppers.animation.addByPrefix("idle", "Bottom Level Boppers", 24, false);
44 | bottomBoppers.scrollFactor.set(0.9, 0.9);
45 | stage.add(bottomBoppers);
46 |
47 | fgSnow = createSprite(-600, 700);
48 | fgSnow.loadGraphic(getGraphic("christmas/fgSnow.png", "week5"));
49 | stage.add(fgSnow);
50 |
51 | santa = createSprite(-840, 150);
52 | santa.frames = getSparrowAtlas("christmas/santa", "week5");
53 | santa.animation.addByPrefix("idle", "santa idle in fear", 24, false);
54 | stage.add(santa);
55 |
56 | addGf(400, 778);
57 | addEnemy(-400, 867);
58 | addPlayer(970, 862);
59 | }
60 |
61 | function onBeat(beat)
62 | {
63 | if (beat >= 0)
64 | {
65 | upperBoppers.animation.play("idle", true);
66 | bottomBoppers.animation.play("idle", true);
67 | santa.animation.play("idle", true);
68 | }
69 | }
--------------------------------------------------------------------------------
/data/stages/stage.hscript:
--------------------------------------------------------------------------------
1 | /*
2 | * Exposed functions and variables (Stage specific):
3 | *
4 | * function addEnemy(x:Int, y:Int, scrollX:Float = 1.0, scrollY:Float = 1.0):Bool
5 | * function addPlayer(x:Int, y:Int, scrollX:Float = 1.0, scrollY:Float = 1.0):Bool
6 | * function addGf(x:Int, y:Int, scrollX:Float = 1.0, scrollY:Float = 1.0):Bool
7 | *
8 | * var stage:FlxTypedGroup
9 | * var stageCamera:FlxCamera
10 | * var uiCamera:FlxCamera
11 | *
12 | * For more information, check out the wiki document here: [Hyperlink Removed]
13 | */
14 |
15 | var bg;
16 | var stageFront;
17 | var stageCurtains;
18 |
19 | function onCreate()
20 | {
21 | stageCamera.zoom = 0.9;
22 |
23 | /* Add sprite with function helper */
24 | bg = createSprite(-600, -200);
25 | bg.loadGraphic(getGraphic("stageback.png", "week1"));
26 | bg.scrollFactor.set(0.9, 0.9);
27 | stage.add(bg);
28 |
29 | stageFront = createSprite(-650, 600);
30 | stageFront.loadGraphic(getGraphic("stagefront.png", "week1"));
31 | stageFront.scale.set(1.1, 1.1);
32 | stageFront.updateHitbox();
33 | stageFront.scrollFactor.set(0.9, 0.9);
34 | stage.add(stageFront);
35 |
36 | /* Add key characters, order matters because of layering */
37 | addGf(400, 778);
38 | addEnemy(100, 867);
39 | addPlayer(770, 862);
40 |
41 | /* Stage curtain is in front of everything */
42 | stageCurtains = createSprite(-500, -300);
43 | stageCurtains.loadGraphic(getGraphic("stagecurtains.png", "week1"));
44 | stageCurtains.scale.set(0.9, 0.9);
45 | stageCurtains.updateHitbox();
46 | stageCurtains.scrollFactor.set(1.3, 1.3);
47 | stage.add(stageCurtains);
48 | }
--------------------------------------------------------------------------------
/data/weeks.json:
--------------------------------------------------------------------------------
1 | [{
2 | "weekName": "tutorial",
3 | "storyMenuCharacters": ["", "bf"],
4 | "weekTagline": "",
5 | "songs": [
6 | "tutorial"
7 | ]
8 | }, {
9 | "weekName": "week1",
10 | "storyMenuCharacters": ["dad", "bf"],
11 | "weekTagline": "Daddy Dearest",
12 | "songs": [
13 | "bopeebo",
14 | "fresh",
15 | "dadbattle"
16 | ]
17 | },{
18 | "weekName": "week2",
19 | "storyMenuCharacters": ["spooky", "bf"],
20 | "weekTagline": "Spooky Month",
21 | "songs": [
22 | "spookeez",
23 | "south"
24 | ]
25 | },{
26 | "weekName": "week3",
27 | "storyMenuCharacters": ["pico", "bf"],
28 | "weekTagline": "PICO",
29 | "songs": [
30 | "pico",
31 | "philly-nice",
32 | "blammed"
33 | ]
34 | },{
35 | "weekName": "week4",
36 | "storyMenuCharacters": ["mom", "bf"],
37 | "weekTagline": "MOMMY MUST MURDER",
38 | "songs": [
39 | "satin-panties",
40 | "high",
41 | "milf"
42 | ]
43 | },{
44 | "weekName": "week5",
45 | "storyMenuCharacters": ["parents-christmas", "bf"],
46 | "weekTagline": "RED SNOW",
47 | "songs": [
48 | "cocoa",
49 | "eggnog",
50 | "winter-horrorland"
51 | ]
52 | },{
53 | "weekName": "week6",
54 | "storyMenuCharacters": ["senpai", "bf"],
55 | "weekTagline": "hating simulator ft. moawling",
56 | "songs": [
57 | "senpai",
58 | "roses",
59 | "thorns"
60 | ]
61 | }]
--------------------------------------------------------------------------------
/docs/Makefile:
--------------------------------------------------------------------------------
1 | # Minimal makefile for Sphinx documentation
2 | #
3 |
4 | # You can set these variables from the command line, and also
5 | # from the environment for the first two.
6 | SPHINXOPTS ?=
7 | SPHINXBUILD ?= sphinx-build
8 | SOURCEDIR = .
9 | BUILDDIR = _build
10 |
11 | # Put it first so that "make" without argument is like "make help".
12 | help:
13 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
14 |
15 | .PHONY: help Makefile
16 |
17 | # Catch-all target: route all unknown targets to Sphinx using the new
18 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
19 | %: Makefile
20 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
21 |
--------------------------------------------------------------------------------
/docs/conf.py:
--------------------------------------------------------------------------------
1 | # Configuration file for the Sphinx documentation builder.
2 | #
3 | # This file only contains a selection of the most common options. For a full
4 | # list see the documentation:
5 | # https://www.sphinx-doc.org/en/master/usage/configuration.html
6 |
7 | # -- Path setup --------------------------------------------------------------
8 |
9 | # If extensions (or modules to document with autodoc) are in another directory,
10 | # add these directories to sys.path here. If the directory is relative to the
11 | # documentation root, use os.path.abspath to make it absolute, like shown here.
12 | #
13 | # import os
14 | # import sys
15 | # sys.path.insert(0, os.path.abspath('.'))
16 |
17 | import sphinx_rtd_theme;
18 |
19 |
20 | # -- Project information -----------------------------------------------------
21 |
22 | project = 'Izzy Engine'
23 | copyright = '2021, gedehari'
24 | author = 'gedehari'
25 |
26 |
27 | # -- General configuration ---------------------------------------------------
28 |
29 | # Add any Sphinx extension module names here, as strings. They can be
30 | # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
31 | # ones.
32 | extensions = [
33 | "sphinx_rtd_theme"
34 | ]
35 |
36 | # Add any paths that contain templates here, relative to this directory.
37 | templates_path = ['_templates']
38 |
39 | # List of patterns, relative to source directory, that match files and
40 | # directories to ignore when looking for source files.
41 | # This pattern also affects html_static_path and html_extra_path.
42 | exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
43 |
44 |
45 | # -- Options for HTML output -------------------------------------------------
46 |
47 | # The theme to use for HTML and HTML Help pages. See the documentation for
48 | # a list of builtin themes.
49 | #
50 | html_theme = 'sphinx_rtd_theme'
51 |
52 | # Add any paths that contain custom static files (such as style sheets) here,
53 | # relative to this directory. They are copied after the builtin static files,
54 | # so a file named "default.css" will overwrite the builtin "default.css".
55 | html_static_path = ['_static']
--------------------------------------------------------------------------------
/docs/index.rst:
--------------------------------------------------------------------------------
1 | Izzy Engine Docs
2 | ================
3 |
4 | .. note::
5 | This documentation is heavily *work-in-progress*.
6 | Things will be added over time, so be in a constant lookout!
7 | Thank you for understanding.
8 |
9 | Welcome to the official documentation of Izzy Engine, a complete recreation of Friday Night Funkin'!
10 | If you are new to this documentation, we recommend checking out the :doc:`pages/about/introduction` page to get started on this documentation.
11 | We hope you learnt something new!
12 |
13 |
14 | .. toctree::
15 | :maxdepth: 2
16 | :caption: About
17 |
18 | pages/about/introduction
19 |
20 | .. Indices and tables
21 | .. ------------------
22 | ..
23 | .. * :ref:`genindex`
24 | .. * :ref:`modindex`
25 | .. * :ref:`search`
--------------------------------------------------------------------------------
/docs/make.bat:
--------------------------------------------------------------------------------
1 | @ECHO OFF
2 |
3 | pushd %~dp0
4 |
5 | REM Command file for Sphinx documentation
6 |
7 | if "%SPHINXBUILD%" == "" (
8 | set SPHINXBUILD=sphinx-build
9 | )
10 | set SOURCEDIR=.
11 | set BUILDDIR=_build
12 |
13 | if "%1" == "" goto help
14 |
15 | %SPHINXBUILD% >NUL 2>NUL
16 | if errorlevel 9009 (
17 | echo.
18 | echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
19 | echo.installed, then set the SPHINXBUILD environment variable to point
20 | echo.to the full path of the 'sphinx-build' executable. Alternatively you
21 | echo.may add the Sphinx directory to PATH.
22 | echo.
23 | echo.If you don't have Sphinx installed, grab it from
24 | echo.http://sphinx-doc.org/
25 | exit /b 1
26 | )
27 |
28 | %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
29 | goto end
30 |
31 | :help
32 | %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
33 |
34 | :end
35 | popd
36 |
--------------------------------------------------------------------------------
/docs/pages/about/introduction.rst:
--------------------------------------------------------------------------------
1 | Introduction
2 | ============
3 | What's Izzy Engine?
4 | -------------------
5 | Izzy Engine is a complete recreation of Friday Night Funkin'.
6 | Think of it as `opsu! `_ but for Friday Night Funkin', with great customizability in mind.
7 | But, what does Izzy Engine has that others don't? This next section will exactly tell you that.
8 |
9 | Izzy Engine features
10 | --------------------
11 | The first and striking feature of this engine is to be able to make custom content, **without the source code!**
12 | The solid modding system allows it to be more accessible to all kinds of modders.
13 | Since this is a general purpose engine, both beginner and advanced users can put their content with ease.
14 |
15 | Here are the lists of features currently implemented:
16 |
17 | * Custom weeks and songs
18 | * Character creation system
19 | * Note skins creation system
20 | * Stage scripting
21 | * Song event system
22 | * Backwards compatibility with vanilla charts
23 |
24 | Features waiting to be implemented:
25 |
26 | * Izzy Engine chart standard
27 | * Script modules (ex: custom dialogue system)
28 | * UI theming and scripting
29 | * Comprehensive debug menu and modding UI
30 | * Modular options menu
31 |
32 | \...and many more to be planned!
--------------------------------------------------------------------------------
/hxformat.json:
--------------------------------------------------------------------------------
1 | {
2 | "lineEnds": {
3 | "leftCurly": "both",
4 | "rightCurly": "both",
5 | "objectLiteralCurly": {
6 | "leftCurly": "after"
7 | }
8 | },
9 | "sameLine": {
10 | "ifElse": "next",
11 | "doWhile": "next",
12 | "tryBody": "next",
13 | "tryCatch": "next"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/songs/blammed/Inst.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/blammed/Inst.ogg
--------------------------------------------------------------------------------
/songs/blammed/Voices.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/blammed/Voices.ogg
--------------------------------------------------------------------------------
/songs/blammed/songMetadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "stage": "philly",
3 | "noteStyle": "default",
4 | "bpm": 165,
5 | "songName": "blammed",
6 | "characters": ["pico", "bf", "gf"]
7 | }
8 |
--------------------------------------------------------------------------------
/songs/bopeebo/Inst.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/bopeebo/Inst.ogg
--------------------------------------------------------------------------------
/songs/bopeebo/Voices.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/bopeebo/Voices.ogg
--------------------------------------------------------------------------------
/songs/bopeebo/easy.json:
--------------------------------------------------------------------------------
1 | {"song":{"song":"Bopeebo","bpm":100.0,"needsVoices":true,"player1":"bf","player2":"dad","speed":1.0,"notes":[{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[0.0,2,0.0],[600.0,3,450.0],[1200.0,3,600.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[2400.0,2,0.0],[3000.0,3,450.0],[3600.0,3,600.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[4800.0,1,300.0],[5400.0,0,300.0],[6000.0,3,600.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[7200.0,1,300.0],[7800.0,0,300.0],[8400.0,3,600.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[9600.0,1,0.0],[10200.0,3,0.0],[10500.0,0,0.0],[10800.0,1,600.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[12000.0,1,0.0],[12600.0,3,0.0],[12900.0,0,0.0],[13200.0,1,600.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[14400.0,3,0.0],[14700.0,1,0.0],[15300.0,0,0.0],[15600.0,2,600.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[16800.0,3,0.0],[17100.0,1,0.0],[17700.0,0,0.0],[18000.0,2,600.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[19200.0,0,0.0],[19500.0,3,0.0],[19800.0,1,900.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[21600.0,0,0.0],[21900.0,3,0.0],[22200.0,1,900.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[24000.0,1,0.0],[24300.0,3,0.0],[24600.0,0,900.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[26400.0,1,0.0],[26700.0,3,0.0],[27000.0,0,900.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[28800.0,2,0.0],[29100.0,3,0.0],[29400.0,0,1200.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[31200.0,2,0.0],[31500.0,3,0.0],[31800.0,0,1200.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[33600.0,0,0.0],[33900.0,3,0.0],[34500.0,2,0.0],[34800.0,1,600.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[36000.0,0,0.0],[36300.0,3,0.0],[36900.0,2,0.0],[37200.0,1,600.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[38400.0,2,450.0],[39000.0,3,300.0],[39600.0,0,600.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[40800.0,2,450.0],[41400.0,3,300.0],[42000.0,0,600.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[43200.0,1,0.0],[43800.0,2,0.0],[44400.0,1,0.0],[44700.0,1,0.0],[45000.0,2,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[45600.0,1,0.0],[46200.0,2,0.0],[46800.0,1,0.0],[47100.0,1,0.0],[47400.0,2,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[48000.0,2,450.0],[48600.0,3,300.0],[49200.0,0,450.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[50400.0,2,450.0],[51000.0,3,300.0],[51600.0,0,450.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[52800.0,3,1800.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[55200.0,3,1800.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[57600.0,2,0.0],[57900.0,3,0.0],[58200.0,0,1200.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[60000.0,2,0.0],[60300.0,3,0.0],[60600.0,0,1200.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[62400.0,0,0.0],[62700.0,3,0.0],[63300.0,2,0.0],[63600.0,1,600.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[64800.0,0,0.0],[65100.0,3,0.0],[65700.0,2,0.0],[66000.0,1,600.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[67200.0,2,0.0],[67500.0,3,0.0],[67800.0,0,0.0],[68100.0,2,0.0],[68400.0,1,600.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[69600.0,2,0.0],[69900.0,3,0.0],[70200.0,0,0.0],[70500.0,2,0.0],[70800.0,1,600.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[72000.0,0,0.0],[72300.0,3,0.0],[72900.0,2,0.0],[73200.0,1,600.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[74400.0,0,0.0],[74700.0,3,0.0],[75300.0,2,0.0],[75600.0,1,600.0]]}]},"generatedBy":"SNIFF ver.6"}
--------------------------------------------------------------------------------
/songs/bopeebo/hard.json:
--------------------------------------------------------------------------------
1 | {"song":{"song":"Bopeebo","bpm":100.0,"needsVoices":true,"player1":"bf","player2":"dad","speed":1.3,"notes":[{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[0.0,2,0.0],[600.0,3,600.0],[1200.0,3,600.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[2400.0,2,0.0],[3000.0,3,600.0],[3600.0,3,600.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[4800.0,1,300.0],[5400.0,0,300.0],[6000.0,3,600.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[7200.0,1,300.0],[7800.0,0,300.0],[8400.0,3,600.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[9600.0,1,300.0],[10200.0,3,0.0],[10500.0,0,0.0],[10800.0,1,600.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[12000.0,1,300.0],[12600.0,3,0.0],[12900.0,0,0.0],[13200.0,1,600.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[14400.0,3,0.0],[14700.0,1,0.0],[15300.0,0,0.0],[15600.0,2,600.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[16800.0,3,0.0],[17100.0,1,0.0],[17700.0,0,0.0],[18000.0,2,600.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[19200.0,0,0.0],[19500.0,3,0.0],[19800.0,1,900.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[21600.0,0,0.0],[21900.0,3,0.0],[22200.0,1,900.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[24000.0,1,0.0],[24300.0,3,0.0],[24600.0,0,900.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[26400.0,1,0.0],[26700.0,3,0.0],[27000.0,0,900.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[28800.0,2,0.0],[29100.0,3,0.0],[29400.0,0,1200.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[31200.0,2,0.0],[31500.0,3,0.0],[31800.0,0,1200.0],[33300.0,6,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[33600.0,0,0.0],[33900.0,3,0.0],[34500.0,2,0.0],[34575.0,0,0.0],[34800.0,1,600.0],[35700.0,6,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[36000.0,0,0.0],[36300.0,3,0.0],[36900.0,2,0.0],[36975.0,0,0.0],[37200.0,1,600.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[38400.0,2,450.0],[39000.0,3,300.0],[39600.0,0,600.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[40800.0,2,450.0],[41400.0,3,300.0],[42000.0,0,600.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[43200.0,1,0.0],[43800.0,2,0.0],[44400.0,1,0.0],[44550.0,1,0.0],[44700.0,1,0.0],[45000.0,2,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[45600.0,1,0.0],[46200.0,2,0.0],[46800.0,1,0.0],[46950.0,1,0.0],[47100.0,1,0.0],[47400.0,2,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[48000.0,2,450.0],[48600.0,3,300.0],[49200.0,0,450.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[50400.0,2,450.0],[51000.0,3,300.0],[51600.0,0,450.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[52800.0,3,1800.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[55200.0,3,1800.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[57600.0,2,0.0],[57900.0,3,0.0],[58200.0,0,1200.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[60000.0,2,0.0],[60300.0,3,0.0],[60600.0,0,1200.0],[62100.0,6,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[62400.0,0,0.0],[62700.0,3,0.0],[63300.0,2,0.0],[63375.0,0,0.0],[63600.0,1,600.0],[64500.0,6,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[64800.0,0,0.0],[65100.0,3,0.0],[65700.0,2,0.0],[65775.0,0,0.0],[66000.0,1,600.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[67200.0,2,0.0],[67500.0,3,0.0],[67800.0,0,0.0],[68100.0,2,0.0],[68400.0,1,600.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[69600.0,2,0.0],[69900.0,3,0.0],[70200.0,0,0.0],[70500.0,2,0.0],[70800.0,1,600.0],[71700.0,6,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[72000.0,0,0.0],[72300.0,3,0.0],[72900.0,2,0.0],[72975.0,0,0.0],[73200.0,1,600.0],[74100.0,6,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[74400.0,0,0.0],[74700.0,3,0.0],[75300.0,2,0.0],[75375.0,0,0.0],[75600.0,1,600.0]]}]},"generatedBy":"SNIFF ver.6"}
--------------------------------------------------------------------------------
/songs/bopeebo/normal.json:
--------------------------------------------------------------------------------
1 | {"song":{"song":"Bopeebo","bpm":100.0,"needsVoices":true,"player1":"bf","player2":"dad","speed":1.0,"notes":[{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[0.0,2,0.0],[600.0,3,600.0],[1200.0,3,600.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[2400.0,2,0.0],[3000.0,3,600.0],[3600.0,3,600.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[4800.0,1,300.0],[5400.0,0,300.0],[6000.0,3,600.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[7200.0,1,300.0],[7800.0,0,300.0],[8400.0,3,600.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[9600.0,1,300.0],[10200.0,3,0.0],[10500.0,0,0.0],[10800.0,1,600.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[12000.0,1,300.0],[12600.0,3,0.0],[12900.0,0,0.0],[13200.0,1,600.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[14400.0,3,0.0],[14700.0,1,0.0],[15300.0,0,0.0],[15600.0,2,600.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[16800.0,3,0.0],[17100.0,1,0.0],[17700.0,0,0.0],[18000.0,2,600.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[19200.0,0,0.0],[19500.0,3,0.0],[19800.0,1,900.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[21600.0,0,0.0],[21900.0,3,0.0],[22200.0,1,900.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[24000.0,1,0.0],[24300.0,3,0.0],[24600.0,0,900.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[26400.0,1,0.0],[26700.0,3,0.0],[27000.0,0,900.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[28800.0,2,0.0],[29100.0,3,0.0],[29400.0,0,1200.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[31200.0,2,0.0],[31500.0,3,0.0],[31800.0,0,1200.0],[33300.0,6,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[33600.0,0,0.0],[33900.0,3,0.0],[34500.0,2,0.0],[34800.0,1,600.0],[35700.0,6,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[36000.0,0,0.0],[36300.0,3,0.0],[36900.0,2,0.0],[37200.0,1,600.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[38400.0,2,450.0],[39000.0,3,300.0],[39600.0,0,600.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[40800.0,2,450.0],[41400.0,3,300.0],[42000.0,0,600.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[43200.0,1,0.0],[43800.0,2,0.0],[44400.0,1,0.0],[44550.0,1,0.0],[44700.0,1,0.0],[45000.0,2,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[45600.0,1,0.0],[46200.0,2,0.0],[46800.0,1,0.0],[46950.0,1,0.0],[47100.0,1,0.0],[47400.0,2,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[48000.0,2,450.0],[48600.0,3,300.0],[49200.0,0,450.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[50400.0,2,450.0],[51000.0,3,300.0],[51600.0,0,450.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[52800.0,3,1800.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[55200.0,3,1800.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[57600.0,2,0.0],[57900.0,3,0.0],[58200.0,0,1200.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[60000.0,2,0.0],[60300.0,3,0.0],[60600.0,0,1200.0],[62100.0,6,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[62400.0,0,0.0],[62700.0,3,0.0],[63300.0,2,0.0],[63600.0,1,600.0],[64500.0,6,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[64800.0,0,0.0],[65100.0,3,0.0],[65700.0,2,0.0],[66000.0,1,600.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[67200.0,2,0.0],[67500.0,3,0.0],[67800.0,0,0.0],[68100.0,2,0.0],[68400.0,1,600.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[69600.0,2,0.0],[69900.0,3,0.0],[70200.0,0,0.0],[70500.0,2,0.0],[70800.0,1,600.0],[71700.0,6,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[72000.0,0,0.0],[72300.0,3,0.0],[72900.0,2,0.0],[73200.0,1,600.0],[74100.0,6,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[74400.0,0,0.0],[74700.0,3,0.0],[75300.0,2,0.0],[75600.0,1,600.0]]}]},"generatedBy":"SNIFF ver.6"}
--------------------------------------------------------------------------------
/songs/bopeebo/songMetadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "songName": "bopeebo",
3 | "noteStyle": "default",
4 | "bpm": 100,
5 | "characters": ["dad", "bf", "gf"],
6 | "stage": "stage"
7 | }
8 |
--------------------------------------------------------------------------------
/songs/cocoa/Inst.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/cocoa/Inst.ogg
--------------------------------------------------------------------------------
/songs/cocoa/Voices.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/cocoa/Voices.ogg
--------------------------------------------------------------------------------
/songs/cocoa/songMetadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "stage": "mall",
3 | "noteStyle": "default",
4 | "bpm": 100,
5 | "songName": "cocoa",
6 | "characters": ["parents-christmas", "bf", "gf"]
7 | }
8 |
--------------------------------------------------------------------------------
/songs/dadbattle/Inst.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/dadbattle/Inst.ogg
--------------------------------------------------------------------------------
/songs/dadbattle/Voices.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/dadbattle/Voices.ogg
--------------------------------------------------------------------------------
/songs/dadbattle/songMetadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "stage": "stage",
3 | "noteStyle": "default",
4 | "bpm": 180,
5 | "songName": "dadbattle",
6 | "characters": ["dad", "bf", "gf"]
7 | }
8 |
--------------------------------------------------------------------------------
/songs/eggnog/Inst.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/eggnog/Inst.ogg
--------------------------------------------------------------------------------
/songs/eggnog/Voices.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/eggnog/Voices.ogg
--------------------------------------------------------------------------------
/songs/eggnog/songMetadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "stage": "mall",
3 | "noteStyle": "default",
4 | "bpm": 150,
5 | "songName": "eggnog",
6 | "characters": ["parents-christmas", "bf", "gf"]
7 | }
8 |
--------------------------------------------------------------------------------
/songs/fresh/Inst.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/fresh/Inst.ogg
--------------------------------------------------------------------------------
/songs/fresh/Voices.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/fresh/Voices.ogg
--------------------------------------------------------------------------------
/songs/fresh/songMetadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "stage": "stage",
3 | "noteStyle": "default",
4 | "bpm": 120,
5 | "songName": "fresh",
6 | "characters": ["dad", "bf", "gf"]
7 | }
8 |
--------------------------------------------------------------------------------
/songs/high/Inst.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/high/Inst.ogg
--------------------------------------------------------------------------------
/songs/high/Voices.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/high/Voices.ogg
--------------------------------------------------------------------------------
/songs/high/songMetadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "stage": "limo",
3 | "noteStyle": "default",
4 | "bpm": 125,
5 | "songName": "high",
6 | "characters": ["mom-car", "bf-car", "gf-car"]
7 | }
8 |
--------------------------------------------------------------------------------
/songs/milf/Inst.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/milf/Inst.ogg
--------------------------------------------------------------------------------
/songs/milf/Voices.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/milf/Voices.ogg
--------------------------------------------------------------------------------
/songs/milf/songMetadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "stage": "limo",
3 | "noteStyle": "default",
4 | "bpm": 180,
5 | "songName": "milf",
6 | "characters": ["mom-car", "bf-car", "gf-car"]
7 | }
8 |
--------------------------------------------------------------------------------
/songs/philly-nice/Inst.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/philly-nice/Inst.ogg
--------------------------------------------------------------------------------
/songs/philly-nice/Voices.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/philly-nice/Voices.ogg
--------------------------------------------------------------------------------
/songs/philly-nice/songMetadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "stage": "philly",
3 | "noteStyle": "default",
4 | "bpm": 175,
5 | "songName": "philly-nice",
6 | "characters": ["pico", "bf", "gf"]
7 | }
8 |
--------------------------------------------------------------------------------
/songs/pico/Inst.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/pico/Inst.ogg
--------------------------------------------------------------------------------
/songs/pico/Voices.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/pico/Voices.ogg
--------------------------------------------------------------------------------
/songs/pico/songMetadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "stage": "philly",
3 | "noteStyle": "default",
4 | "bpm": 150,
5 | "songName": "pico",
6 | "characters": ["pico", "bf", "gf"]
7 | }
8 |
--------------------------------------------------------------------------------
/songs/roses/Inst.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/roses/Inst.ogg
--------------------------------------------------------------------------------
/songs/roses/Voices.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/roses/Voices.ogg
--------------------------------------------------------------------------------
/songs/roses/rosesDialogue.txt:
--------------------------------------------------------------------------------
1 | :dad:Not bad for an ugly worm.
2 | :dad:But this time I'll rip your nuts off right after your girlfriend finishes gargling mine.
3 | :bf:Bop beep be be skdoo bep
--------------------------------------------------------------------------------
/songs/roses/songMetadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "stage": "stage",
3 | "noteStyle": "pixel",
4 | "bpm": 120,
5 | "songName": "roses",
6 | "characters": ["dad", "bf", "gf"]
7 | }
8 |
--------------------------------------------------------------------------------
/songs/satin-panties/Inst.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/satin-panties/Inst.ogg
--------------------------------------------------------------------------------
/songs/satin-panties/Voices.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/satin-panties/Voices.ogg
--------------------------------------------------------------------------------
/songs/satin-panties/songMetadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "stage": "limo",
3 | "noteStyle": "default",
4 | "bpm": 110,
5 | "songName": "satin-panties",
6 | "characters": ["mom-car", "bf-car", "gf-car"]
7 | }
8 |
--------------------------------------------------------------------------------
/songs/senpai/Inst.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/senpai/Inst.ogg
--------------------------------------------------------------------------------
/songs/senpai/Voices.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/senpai/Voices.ogg
--------------------------------------------------------------------------------
/songs/senpai/senpaiDialogue.txt:
--------------------------------------------------------------------------------
1 | :dad:Ah, a new fair maiden has come in search of true love!
2 | :dad:A serenade between gentlemen shall decide where her beautiful heart shall reside.
3 | :bf:Beep bo bop
--------------------------------------------------------------------------------
/songs/senpai/songMetadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "stage": "stage",
3 | "noteStyle": "pixel",
4 | "bpm": 144,
5 | "songName": "senpai",
6 | "characters": ["dad", "bf", "gf"]
7 | }
8 |
--------------------------------------------------------------------------------
/songs/south/Inst.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/south/Inst.ogg
--------------------------------------------------------------------------------
/songs/south/Voices.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/south/Voices.ogg
--------------------------------------------------------------------------------
/songs/south/songMetadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "stage": "halloween",
3 | "noteStyle": "default",
4 | "bpm": 165,
5 | "songName": "south",
6 | "characters": ["spooky", "bf", "gf"]
7 | }
8 |
--------------------------------------------------------------------------------
/songs/spookeez/Inst.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/spookeez/Inst.ogg
--------------------------------------------------------------------------------
/songs/spookeez/Voices.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/spookeez/Voices.ogg
--------------------------------------------------------------------------------
/songs/spookeez/songMetadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "stage": "halloween",
3 | "noteStyle": "default",
4 | "bpm": 150,
5 | "songName": "spookeez",
6 | "characters": ["spooky", "bf", "gf"]
7 | }
8 |
--------------------------------------------------------------------------------
/songs/thorns/Inst.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/thorns/Inst.ogg
--------------------------------------------------------------------------------
/songs/thorns/Voices.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/thorns/Voices.ogg
--------------------------------------------------------------------------------
/songs/thorns/songMetadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "stage": "stage",
3 | "noteStyle": "pixel",
4 | "bpm": 190,
5 | "songName": "thorns",
6 | "characters": ["dad", "bf", "gf"]
7 | }
8 |
--------------------------------------------------------------------------------
/songs/thorns/thornsDialogue.txt:
--------------------------------------------------------------------------------
1 | :dad:Direct contact with real humans, after being trapped in here for so long...
2 | :dad:and HER of all people.
3 | :dad:I'll make her father pay for what he's done to me and all the others,,,,
4 | :dad:I'll beat you and make you take my place.
5 | :dad:You don't mind your bodies being borrowed right? It's only fair...
--------------------------------------------------------------------------------
/songs/tutorial/Inst.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/tutorial/Inst.ogg
--------------------------------------------------------------------------------
/songs/tutorial/songMetadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "stage": "stage",
3 | "noteStyle": "default",
4 | "bpm": 100,
5 | "songName": "tutorial",
6 | "characters": ["", "bf", "gf"]
7 | }
8 |
--------------------------------------------------------------------------------
/songs/winter-horrorland/Inst.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/winter-horrorland/Inst.ogg
--------------------------------------------------------------------------------
/songs/winter-horrorland/Voices.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sqirradotdev/IzzyEngine/95b313bca3da390f3d7dcd888e8c1fad7bb13a74/songs/winter-horrorland/Voices.ogg
--------------------------------------------------------------------------------
/songs/winter-horrorland/songMetadata.json:
--------------------------------------------------------------------------------
1 | {
2 | "stage": "stage",
3 | "noteStyle": "default",
4 | "bpm": 159,
5 | "songName": "winter-horrorland",
6 | "characters": ["dad", "bf", "gf"]
7 | }
8 |
--------------------------------------------------------------------------------
/source/Main.hx:
--------------------------------------------------------------------------------
1 | package;
2 |
3 | import flixel.FlxG;
4 | import flixel.FlxGame;
5 | import flixel.tweens.FlxTween;
6 | import haxe.CallStack;
7 | import haxe.io.Path;
8 | import izzy.core.Conductor;
9 | import izzy.core.Overlay;
10 | import izzy.core.RichPresence;
11 | import izzy.state.InitState;
12 | import lime.app.Application;
13 | import openfl.Lib;
14 | import openfl.display.Sprite;
15 | import openfl.events.UncaughtErrorEvent;
16 | import sys.FileSystem;
17 | import sys.io.File;
18 | import sys.io.Process;
19 |
20 | class Main extends Sprite
21 | {
22 | // FPS settings
23 | final normalFps:Int = 120;
24 | final lowFps:Int = 20;
25 |
26 | public static var overlay:Overlay;
27 |
28 | var game:FlxGame;
29 | var focusMusicTween:FlxTween;
30 |
31 | public function new()
32 | {
33 | super();
34 |
35 | Lib.current.loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, onCrash);
36 |
37 | // Print game name and information to system console
38 | Sys.println(Lib.application.meta["name"] + " v" + Lib.application.meta["version"]);
39 |
40 | RichPresence.startRichPresence();
41 |
42 | game = new FlxGame(1280, 720, InitState, 1, normalFps, normalFps, true);
43 | addChild(game);
44 |
45 | overlay = new Overlay(0, 0);
46 | addChild(overlay);
47 |
48 | // Changes to HaxeFlixel default settings
49 | FlxG.sound.muteKeys = null;
50 | FlxG.sound.volumeUpKeys = null;
51 | FlxG.sound.volumeDownKeys = null;
52 | FlxG.autoPause = false;
53 | FlxG.fixedTimestep = false;
54 | FlxG.mouse.useSystemCursor = true;
55 | FlxG.mouse.visible = false;
56 | FlxG.console.autoPause = false;
57 |
58 | #if debug
59 | // For debugging purposes
60 | FlxG.console.registerObject("Conductor", Conductor);
61 | #end
62 |
63 | // Add event listeners for window focus
64 | Application.current.window.onFocusOut.add(onWindowFocusOut);
65 | Application.current.window.onFocusIn.add(onWindowFocusIn);
66 | }
67 |
68 | function onWindowFocusOut()
69 | {
70 | trace("Game unfocused");
71 |
72 | // Lower global volume when unfocused
73 | if (focusMusicTween != null)
74 | focusMusicTween.cancel();
75 | focusMusicTween = FlxTween.tween(FlxG.sound, {volume: 0.3}, 0.5);
76 |
77 | // Conserve power by lowering draw framerate when unfocuced
78 | FlxG.drawFramerate = lowFps;
79 | }
80 |
81 | function onWindowFocusIn()
82 | {
83 | trace("Game focused");
84 |
85 | // Normal global volume when focused
86 | if (focusMusicTween != null)
87 | focusMusicTween.cancel();
88 | focusMusicTween = FlxTween.tween(FlxG.sound, {volume: 1.0}, 0.5);
89 |
90 | // Bring framerate back when focused
91 | FlxG.drawFramerate = normalFps;
92 | }
93 |
94 | function onCrash(e:UncaughtErrorEvent):Void
95 | {
96 | var errMsg:String = "";
97 | var path:String;
98 | var callStack:Array = CallStack.exceptionStack(true);
99 | var dateNow:String = Date.now().toString();
100 |
101 | dateNow = StringTools.replace(dateNow, " ", "_");
102 | dateNow = StringTools.replace(dateNow, ":", "'");
103 |
104 | path = "./crash/" + "IzzyEngine_" + dateNow + ".txt";
105 |
106 | for (stackItem in callStack)
107 | {
108 | switch (stackItem)
109 | {
110 | case FilePos(s, file, line, column):
111 | errMsg += file + " (line " + line + ")\n";
112 | default:
113 | Sys.println(stackItem);
114 | }
115 | }
116 |
117 | errMsg += "\nUncaught Error: " + e.error + "\nPlease report this error to the GitHub page: https://github.com/gedehari/IzzyEngine";
118 |
119 | if (!FileSystem.exists("./crash/"))
120 | FileSystem.createDirectory("./crash/");
121 |
122 | File.saveContent(path, errMsg + "\n");
123 |
124 | Sys.println(errMsg);
125 | Sys.println("Crash dump saved in " + Path.normalize(path));
126 |
127 | var crashDialoguePath:String = "IzzyEngine-CrashDialog";
128 |
129 | #if windows
130 | crashDialoguePath += ".exe";
131 | #end
132 |
133 | if (FileSystem.exists("./" + crashDialoguePath))
134 | {
135 | Sys.println("Found crash dialog: " + crashDialoguePath);
136 |
137 | #if linux
138 | crashDialoguePath = "./" + crashDialoguePath;
139 | #end
140 | new Process(crashDialoguePath, [path]);
141 | }
142 | else
143 | {
144 | // I had to do this or the stupid CI won't build :distress:
145 | Sys.println("No crash dialog found! Making a simple alert instead...");
146 | Application.current.window.alert(errMsg, "Error!");
147 | }
148 |
149 | RichPresence.shutdownRichPresence();
150 | Sys.exit(1);
151 | }
152 | }
153 |
--------------------------------------------------------------------------------
/source/flixel/graphics/tile/FlxGraphicsShader.hx:
--------------------------------------------------------------------------------
1 | package flixel.graphics.tile;
2 |
3 | import openfl.display.ShaderParameter;
4 | import sys.io.File;
5 | #if FLX_DRAW_QUADS
6 | import openfl.display.GraphicsShader;
7 |
8 | class FlxGraphicsShader extends GraphicsShader
9 | {
10 | public var alpha:ShaderParameter;
11 | public var colorMultiplier:ShaderParameter;
12 | public var colorOffset:ShaderParameter;
13 | public var hasTransform:ShaderParameter;
14 | public var hasColorTransform:ShaderParameter;
15 |
16 | public function new()
17 | {
18 | super(
19 | // Vertex
20 | "#pragma header
21 |
22 | attribute float alpha;
23 | attribute vec4 colorMultiplier;
24 | attribute vec4 colorOffset;
25 | uniform bool hasColorTransform;
26 |
27 | void main(void)
28 | {
29 | #pragma body
30 |
31 | openfl_Alphav = openfl_Alpha * alpha;
32 |
33 | if (hasColorTransform)
34 | {
35 | openfl_ColorOffsetv = colorOffset / 255.0;
36 | openfl_ColorMultiplierv = colorMultiplier;
37 | }
38 | }",
39 | // Fragment
40 | "#pragma header
41 |
42 | void main(void)
43 | {
44 | gl_FragColor = flixel_texture2D(bitmap, openfl_TextureCoordv);
45 | }", false);
46 |
47 | glFragmentHeader += "uniform bool hasTransform;
48 | uniform bool hasColorTransform;
49 |
50 | vec4 flixel_texture2D(sampler2D bitmap, vec2 coord)
51 | {
52 | vec4 color = texture2D(bitmap, coord);
53 | if (!hasTransform)
54 | {
55 | return color;
56 | }
57 |
58 | if (color.a == 0.0)
59 | {
60 | return vec4(0.0, 0.0, 0.0, 0.0);
61 | }
62 |
63 | if (!hasColorTransform)
64 | {
65 | return color * openfl_Alphav;
66 | }
67 |
68 | color = vec4(color.rgb / color.a, color.a);
69 |
70 | mat4 colorMultiplier = mat4(0);
71 | colorMultiplier[0][0] = openfl_ColorMultiplierv.x;
72 | colorMultiplier[1][1] = openfl_ColorMultiplierv.y;
73 | colorMultiplier[2][2] = openfl_ColorMultiplierv.z;
74 | colorMultiplier[3][3] = openfl_ColorMultiplierv.w;
75 |
76 | color = clamp(openfl_ColorOffsetv + (color * colorMultiplier), 0.0, 1.0);
77 |
78 | if (color.a > 0.0)
79 | {
80 | return vec4(color.rgb * color.a * openfl_Alphav, color.a * openfl_Alphav);
81 | }
82 | return vec4(0.0, 0.0, 0.0, 0.0);
83 | }";
84 |
85 | __initGL();
86 |
87 | bitmap = data.bitmap;
88 | alpha = data.alpha;
89 | colorMultiplier = data.colorMultiplier;
90 | colorOffset = data.colorOffset;
91 | hasTransform = data.hasTransform;
92 | hasColorTransform = data.hasColorTransform;
93 | }
94 |
95 | /* override function __initGL()
96 | {
97 | super.__initGL();
98 |
99 | alpha = new ShaderParameter();
100 | colorMultiplier = new ShaderParameter();
101 | colorOffset = new ShaderParameter();
102 | hasTransform = new ShaderParameter();
103 | hasColorTransform = new ShaderParameter();
104 | } */
105 | }
106 | #end
107 |
--------------------------------------------------------------------------------
/source/izzy/core/AssetHelper.hx:
--------------------------------------------------------------------------------
1 | package izzy.core;
2 |
3 | import flixel.FlxG;
4 | import flixel.graphics.FlxGraphic;
5 | import flixel.graphics.frames.FlxAtlasFrames;
6 | import lime.utils.AssetType;
7 | import openfl.display.BitmapData;
8 | import openfl.media.Sound;
9 | import openfl.utils.Assets;
10 | import sys.FileSystem;
11 | import sys.io.File;
12 |
13 | @:enum abstract DataCategory(String) to String
14 | {
15 | var ROOT = "";
16 | var CHARACTERS = "characters";
17 | var NOTE_STYLES = "noteStyles";
18 | var STAGES = "stages";
19 | var MODULES = "modules";
20 | var SHADERS = "shaders";
21 | }
22 |
23 | class AssetHelper
24 | {
25 | public static function getAssetPath(path:String, type:AssetType, group:String = "default"):String
26 | {
27 | switch (type)
28 | {
29 | case IMAGE:
30 | return "assets/" + group + "/images/" + path;
31 | case SOUND:
32 | return "assets/" + group + "/sounds/" + path;
33 | case MUSIC:
34 | return "assets/" + group + "/music/" + path;
35 | default:
36 | return "";
37 | }
38 | }
39 |
40 | public static function getAsset(path:String, type:AssetType, group:String = "default"):Dynamic
41 | {
42 | var actualPath:String = getAssetPath(path, type, group);
43 |
44 | if (FileSystem.exists(actualPath)) // Check if it exists in the FileSystem (desktop only)
45 | {
46 | if (FlxG.bitmap.checkCache(actualPath) || Assets.cache.hasSound(actualPath)) // Check if it exists in the AssetCache library
47 | {
48 | /* #if debug
49 | trace(type + " asset from cache: " + actualPath);
50 | #end */
51 |
52 | switch (type)
53 | {
54 | case IMAGE:
55 | return FlxG.bitmap.get(actualPath);
56 | case SOUND, MUSIC:
57 | return Assets.cache.getSound(actualPath);
58 | default:
59 | return null;
60 | }
61 | }
62 | else if (Assets.exists(actualPath)) // Check if it exists in the embedded assets library
63 | {
64 | /* #if debug
65 | trace(type + " asset from ID: " + actualPath);
66 | #end */
67 |
68 | switch (type)
69 | {
70 | case IMAGE:
71 | return FlxGraphic.fromAssetKey(actualPath);
72 | case SOUND:
73 | return Assets.getSound(actualPath);
74 | case MUSIC:
75 | return Assets.getMusic(actualPath);
76 | default:
77 | return null;
78 | }
79 | }
80 | else // If not, load it manually from file.
81 | {
82 | /* #if debug
83 | trace(type + " asset from file: " + actualPath);
84 | #end */
85 |
86 | actualPath = "./" + actualPath; // Relative path
87 | switch (type)
88 | {
89 | case IMAGE:
90 | return FlxGraphic.fromBitmapData(BitmapData.fromFile(actualPath));
91 | case SOUND, MUSIC:
92 | if (!Assets.cache.hasSound(actualPath))
93 | {
94 | var sound:Sound = Sound.fromFile(actualPath);
95 | Assets.cache.setSound(actualPath, sound);
96 | }
97 | return Assets.cache.getSound(actualPath);
98 | default:
99 | return null;
100 | }
101 | }
102 | }
103 |
104 | return null;
105 | }
106 |
107 | inline public static function getDataPath(path:String, category:DataCategory):String
108 | return "./data/" + category + "/" + path;
109 |
110 | inline public static function getSparrowAtlas(path:String, group:String = "default"):FlxAtlasFrames
111 | return FlxAtlasFrames.fromSparrow(getAsset(path + ".png", IMAGE, group), File.getContent(getAssetPath(path + ".xml", IMAGE, group)));
112 | }
113 |
--------------------------------------------------------------------------------
/source/izzy/core/ChartParser.hx:
--------------------------------------------------------------------------------
1 | package izzy.core;
2 |
3 | import haxe.Json;
4 | import haxe.macro.Type.AnonType;
5 | import izzy.core.Conductor.EventStruct;
6 | import izzy.core.Conductor.TimeEvents;
7 | import izzy.state.PlayState.GameplayEvents;
8 | import sys.io.File;
9 |
10 | @:enum abstract VanillaChartType(String) to String
11 | {
12 | var VANILLA = "vanilla";
13 | var VANILLA_V2 = "vanilla_v2";
14 | }
15 |
16 | typedef ChartData =
17 | {
18 | var bpm:Int;
19 | var noteSpeed:Float;
20 | var enemyNotes:Array;
21 | var playerNotes:Array;
22 | var timeEvents:Array>;
23 | var gameplayEvents:Array>;
24 | }
25 |
26 | typedef NoteData =
27 | {
28 | var time:Float;
29 | var tick:Int;
30 | var holdTime:Float;
31 | var whoseStrum:Int;
32 | var strumIndex:Int;
33 | }
34 |
35 | class ChartParser
36 | {
37 | /*
38 | * Helper function that returns chart data based on what type it is
39 | */
40 | public static function readChart(path:String):ChartData
41 | {
42 | if (StringTools.endsWith(path, "json"))
43 | {
44 | trace("Reading vanilla chart");
45 | return readVanilla(File.getContent("./" + path));
46 | }
47 |
48 | // TODO: Make Izzy Engine chart standard
49 | return null;
50 | }
51 |
52 | /*
53 | * Vanilla chart reading for the original Funkin game
54 | */
55 | public static function readVanilla(contents:String):ChartData
56 | {
57 | var chartData:ChartData = {
58 | bpm: 0,
59 | noteSpeed: 1.0,
60 | enemyNotes: [],
61 | playerNotes: [],
62 | timeEvents: [],
63 | gameplayEvents: []
64 | };
65 |
66 | var totalTicks:Int = 0;
67 |
68 | var parsedJson = Json.parse(contents);
69 | chartData.noteSpeed = Reflect.field(Reflect.field(parsedJson, "song"), "speed");
70 | var sectionInformation:Array = Reflect.field(Reflect.field(parsedJson, "song"), "notes");
71 | for (notes in sectionInformation)
72 | {
73 | var mustHitSection:Bool = Reflect.field(notes, "mustHitSection");
74 | chartData.gameplayEvents.push({type: ChangeCamera(mustHitSection ? 1 : 0), tick: totalTicks});
75 |
76 | var altAnim:Bool = Reflect.field(notes, "altAnim");
77 | chartData.gameplayEvents.push({type: SetCharacterSingSuffix(0, altAnim ? "-alt" : ""), tick: totalTicks});
78 |
79 | totalTicks += Conductor.ticksPerBeat * 4;
80 |
81 | var sectionNotes:Array> = Reflect.field(notes, "sectionNotes");
82 | for (sectionNote in sectionNotes)
83 | {
84 | // True means player, false means enemy (following mustHitSection)
85 | var whoseStrum:Bool = mustHitSection;
86 | var strumIndex:Int = sectionNote[1];
87 | var noteTime:Float = sectionNote[0] / 1000;
88 | var holdTime:Float = sectionNote[2] / 1000;
89 | var tick:Int = Math.round(Conductor.getTick(noteTime));
90 |
91 | if (strumIndex > 3)
92 | {
93 | strumIndex -= 4;
94 | whoseStrum = !whoseStrum;
95 | }
96 |
97 | if (strumIndex < 4)
98 | {
99 | var whoseStrumIndex:Int = whoseStrum ? 1 : 0;
100 | var noteData:NoteData = {
101 | time: noteTime,
102 | tick: tick,
103 | holdTime: holdTime,
104 | whoseStrum: whoseStrumIndex,
105 | strumIndex: strumIndex
106 | };
107 |
108 | if (whoseStrumIndex == 0)
109 | chartData.enemyNotes.push(noteData);
110 | else
111 | chartData.playerNotes.push(noteData);
112 | }
113 | }
114 | }
115 |
116 | return chartData;
117 | }
118 | }
119 |
--------------------------------------------------------------------------------
/source/izzy/core/Conductor.hx:
--------------------------------------------------------------------------------
1 | package izzy.core;
2 |
3 | import flixel.FlxBasic;
4 | import flixel.FlxG;
5 |
6 | typedef EventStruct =
7 | {
8 | var type:ET;
9 | var tick:Int;
10 | }
11 |
12 | enum TimeEvents
13 | {
14 | BPMChange(bpm:Int);
15 | Stop(ticks:Int);
16 | }
17 |
18 | class Conductor extends FlxBasic
19 | {
20 | public static final ticksPerBeat:Int = 48;
21 |
22 | // Music information
23 | public static var bpm:Int = 100;
24 | public static var bars:Int = 4;
25 |
26 | // Store timing and gameplay events separately
27 | public static var timeEvents:Array> = [];
28 |
29 | // Tracking variables
30 | public static var time:Float = 0;
31 | public static var interpTime:Float = 0;
32 | static var prevTime:Float = 0;
33 |
34 | public static var beat:Int = 0;
35 | static var prevBeat:Int = -1;
36 |
37 | public static var tick:Int = 0;
38 | static var prevTick:Int = 0;
39 |
40 | // Offset settings
41 | public static var globalOffset:Float = 0;
42 | public static var songOffset:Float = 0;
43 |
44 | // Settings
45 | public static var metronome:Bool = false;
46 |
47 | // Callback to call when a beat changes
48 | public var onBeat:Int -> Void;
49 | public var onTick:Int->Void;
50 |
51 | public function new()
52 | {
53 | super();
54 | }
55 |
56 | override public function update(elapsed:Float)
57 | {
58 | super.update(elapsed);
59 |
60 | // Update time
61 | if (FlxG.sound.music != null && FlxG.sound.music.playing == true)
62 | {
63 | time = (FlxG.sound.music.time / 1000) + globalOffset;
64 |
65 | // Interpolated time used for smooth visuals (like note rendering)
66 | interpTime += elapsed;
67 | var delta:Float = interpTime - time;
68 | if (Math.abs(delta) >= 0.05)
69 | {
70 | interpTime = time;
71 | }
72 | }
73 | else
74 | {
75 | // Always match with actual time when music stopped
76 | interpTime = time;
77 | }
78 |
79 | // Update beat
80 | beat = Math.floor(getBeat(time));
81 |
82 | if (prevBeat != beat)
83 | {
84 | // Play a metronome sound when enabled
85 | if (metronome)
86 | FlxG.sound.play(AssetHelper.getAsset("metronome.ogg", SOUND));
87 |
88 | if (onBeat != null)
89 | {
90 | // In case of beat skipping, execute callback more than once
91 | if (prevBeat < beat)
92 | {
93 | for (x in 0...(beat - prevBeat))
94 | {
95 | onBeat(beat);
96 | }
97 | }
98 | else
99 | {
100 | onBeat(beat);
101 | }
102 | }
103 |
104 | prevBeat = beat;
105 | }
106 |
107 | // Update tick
108 | tick = Math.floor(getTick(time));
109 |
110 | if (prevTick != tick)
111 | {
112 | if (onTick != null)
113 | {
114 | // In case of tick skipping, execute callback more than once
115 | if (prevTick < tick)
116 | {
117 | for (x in 0...(tick - prevTick))
118 | {
119 | onTick(tick);
120 | }
121 | }
122 | else
123 | {
124 | onTick(tick);
125 | }
126 | }
127 |
128 | prevTick = tick;
129 | }
130 | }
131 |
132 | public static function getBeat(time:Float):Float
133 | {
134 | return time * bpm / 60.0;
135 | }
136 |
137 | public static function getTick(time:Float):Float
138 | {
139 | return getBeat(time) * ticksPerBeat;
140 | }
141 |
142 | public static function beatToTime(beat:Float):Float
143 | {
144 | return (beat * 60) / bpm;
145 | }
146 |
147 | public static function tickToTime(tick:Float):Float
148 | {
149 | return beatToTime(tick / ticksPerBeat);
150 | }
151 | }
152 |
--------------------------------------------------------------------------------
/source/izzy/core/Overlay.hx:
--------------------------------------------------------------------------------
1 | package izzy.core;
2 |
3 | import haxe.Timer;
4 | import openfl.events.Event;
5 | import openfl.system.System;
6 | import openfl.text.TextField;
7 | import openfl.text.TextFormat;
8 |
9 | /*
10 | Based on this tutorial:
11 | https://keyreal-code.github.io/haxecoder-tutorials/17_displaying_fps_and_memory_usage_using_openfl.html
12 | */
13 | class Overlay extends TextField
14 | {
15 | var times:Array = [];
16 | var memPeak:Float = 0;
17 |
18 | public function new(xPos:Float, yPos:Float)
19 | {
20 | super();
21 |
22 | x = xPos;
23 | y = yPos;
24 | width = 200;
25 | height = 70;
26 |
27 | selectable = false;
28 |
29 | defaultTextFormat = new TextFormat("_sans", 12, 0xFFFFFF);
30 | text = "";
31 |
32 | addEventListener(Event.ENTER_FRAME, onEnterFrame);
33 | }
34 |
35 | function onEnterFrame(_)
36 | {
37 | var now:Float = Timer.stamp();
38 | times.push(now);
39 | while (times[0] < now - 1)
40 | {
41 | times.shift();
42 | }
43 |
44 | var mem:Float = Math.round(System.totalMemory / 1024 / 1024 * 100) / 100;
45 | if (mem > memPeak)
46 | memPeak = mem;
47 |
48 | // Update the text
49 | if (visible)
50 | {
51 | text = "FPS: " + times.length + "\nMemory: " + mem + " MB\nPeak Memory: " + memPeak + " MB";
52 | }
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/source/izzy/core/RichPresence.hx:
--------------------------------------------------------------------------------
1 | package izzy.core;
2 |
3 | import discord_rpc.DiscordRpc;
4 | import lime.app.Application;
5 |
6 | @:enum abstract IdleType(String) to String
7 | {
8 | var TITLE = "Title Screen";
9 | var MAIN_MENU = "Main Menu";
10 | var STORY_MENU = "Story Menu";
11 | var FREEPLAY_MENU = "Freeplay Menu";
12 | var OPTIONS_MENU = "Options Menu";
13 | }
14 |
15 | class RichPresence
16 | {
17 | static final largeImageKey:String = "icon";
18 | static final largeImageText:String = "Izzy Engine";
19 |
20 | public static function startRichPresence()
21 | {
22 | trace("Starting Rich Presence...");
23 | DiscordRpc.start({
24 | clientID: "856390600818163753",
25 | onReady: onReady,
26 | onError: onError,
27 | onDisconnected: onDisconnected
28 | });
29 |
30 | Application.current.window.onClose.add(shutdownRichPresence);
31 | }
32 |
33 | static function onReady()
34 | {
35 | trace("Rich Presence is ready!");
36 | }
37 |
38 | static function onError(_code:Int, _message:String)
39 | {
40 | trace("Error code " + _code + " : " + _message);
41 | }
42 |
43 | static function onDisconnected(_code:Int, _message:String)
44 | {
45 | trace("Disconnected code " + _code + " : " + _message);
46 | }
47 |
48 | public static function setIdling(type:IdleType)
49 | {
50 | DiscordRpc.presence({
51 | details: type,
52 | state: "Idling",
53 | largeImageKey: largeImageKey,
54 | largeImageText: largeImageText
55 | });
56 | }
57 |
58 | public static function shutdownRichPresence()
59 | {
60 | trace("Shutting down Rich Presence...");
61 | DiscordRpc.shutdown();
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/source/izzy/core/SongDatabase.hx:
--------------------------------------------------------------------------------
1 | package izzy.core;
2 |
3 | import haxe.Json;
4 | import sys.FileSystem;
5 | import sys.io.File;
6 |
7 | @:enum abstract Difficulty(String) to String
8 | {
9 | var EASY = "easy";
10 | var NORMAL = "normal";
11 | var HARD = "hard";
12 | }
13 |
14 | typedef Week =
15 | {
16 | var weekName:String;
17 |
18 | var storyMenuCharacters:Array;
19 | var weekTagline:String;
20 | var songs:Array;
21 | }
22 |
23 | typedef SongMetadata =
24 | {
25 | var songName:String;
26 | var bpm:Int;
27 | var characters:Array;
28 | var stage:String;
29 | var noteStyle:String;
30 | }
31 |
32 | typedef SongPaths =
33 | {
34 | var inst:String;
35 | var voices:String;
36 | var chart:String;
37 | var modchart:String;
38 | }
39 |
40 | class SongDatabase
41 | {
42 | public static var weeks:Array;
43 | public static var songs:Array = [];
44 |
45 | public static function updateWeekList():Bool
46 | {
47 | if (FileSystem.exists(AssetHelper.getDataPath("weeks.json", ROOT)))
48 | {
49 | weeks = Json.parse(File.getContent(AssetHelper.getDataPath("weeks.json", ROOT)));
50 | trace(weeks);
51 | }
52 | else
53 | {
54 | trace("weeks.json is missing!");
55 | return false;
56 | }
57 |
58 | trace("Week list updated");
59 |
60 | return true;
61 | }
62 |
63 | public static function updateSongList()
64 | {
65 | for (week in weeks)
66 | {
67 | for (song in week.songs)
68 | {
69 | var songMetadata:SongMetadata = getSongMetadata(song);
70 | songs.push(songMetadata);
71 | }
72 | }
73 |
74 | trace("Song list updated");
75 | }
76 |
77 | public static function getSongMetadata(song:String):SongMetadata
78 | {
79 | var dir:String = "songs/" + song + "/";
80 | var path:String = dir + "songMetadata.json";
81 | var songMetadata:SongMetadata = {
82 | songName: "",
83 | bpm: 100,
84 | characters: ["dad", "bf", "gf"],
85 | stage: "stage",
86 | noteStyle: "default"
87 | };
88 |
89 | if (FileSystem.exists(path))
90 | songMetadata = Json.parse(File.getContent(path));
91 | else
92 | {
93 | trace("Song metadata file for \"" + song + "\" is missing. Creating one");
94 | songMetadata.songName = song;
95 |
96 | if (!FileSystem.exists(dir))
97 | FileSystem.createDirectory(dir);
98 |
99 | File.saveContent(path, Json.stringify(songMetadata, "\t"));
100 | }
101 |
102 | return songMetadata;
103 | }
104 |
105 | public static function getSongPaths(song:String, difficulty:Difficulty = NORMAL):SongPaths
106 | {
107 | var dir:String = "songs/" + song + "/";
108 |
109 | var songPaths:SongPaths = {
110 | inst: "",
111 | voices: "",
112 | chart: "",
113 | modchart: ""
114 | }
115 |
116 | songPaths.inst = dir + "Inst.ogg";
117 | if (!FileSystem.exists(songPaths.inst))
118 | songPaths.inst = "";
119 |
120 | songPaths.voices = dir + "Voices.ogg";
121 | if (!FileSystem.exists(songPaths.voices))
122 | songPaths.voices = "";
123 |
124 | songPaths.chart = dir + "songChart.json";
125 | if (!FileSystem.exists("./" + songPaths.chart))
126 | {
127 | songPaths.chart = dir + difficulty + ".json";
128 | if (!FileSystem.exists("./" + songPaths.chart))
129 | songPaths.chart = "";
130 | }
131 |
132 | songPaths.modchart = dir + "modchart.hscript";
133 | if (!FileSystem.exists(songPaths.modchart))
134 | songPaths.modchart = "";
135 |
136 | trace(songPaths);
137 | return songPaths;
138 | }
139 | }
140 |
--------------------------------------------------------------------------------
/source/izzy/core/Util.hx:
--------------------------------------------------------------------------------
1 | package izzy.core;
2 |
3 | import flixel.FlxG;
4 |
5 | /**
6 | * Class that holds common functions used throughout the game.
7 | */
8 | class Util
9 | {
10 | /**
11 | * Opens a URL, platform dependent.
12 | * @param url The URL to open.
13 | */
14 | public static function openUrl(url:String)
15 | {
16 | #if linux
17 | Sys.command("/usr/bin/xdg-open " + url + " &");
18 | #else
19 | FlxG.openURL(url);
20 | #end
21 | }
22 |
23 | /**
24 | * Returns ordinal numbers (1st, 2nd, 3rd, etc)
25 | * @param number The number to ordinalize.
26 | * @return String
27 | */
28 | public static function ordinalizeNumber(number:Int):String
29 | {
30 | // TODO: please finish
31 | return "";
32 | }
33 |
34 | }
35 |
--------------------------------------------------------------------------------
/source/izzy/gameplay/Character.hx:
--------------------------------------------------------------------------------
1 | package izzy.gameplay;
2 |
3 | import flixel.FlxSprite;
4 | import flixel.animation.FlxAnimation;
5 | import flixel.graphics.frames.FlxFrame;
6 | import flixel.math.FlxPoint;
7 | import haxe.Json;
8 | import haxe.ds.StringMap;
9 | import haxe.macro.Type.AnonType;
10 | import izzy.core.AssetHelper;
11 | import sys.FileSystem;
12 | import sys.io.File;
13 |
14 | typedef CharacterData =
15 | {
16 | var name:String;
17 | var atlasPath:Array;
18 | var flipX:Bool;
19 | var height:Int;
20 | var cameraOffset:Array;
21 | var idleSequence:Array;
22 | var animations:AnonType;
23 | }
24 |
25 | typedef CharacterAnimation =
26 | {
27 | var fromPrefix:String;
28 | var indices:Array;
29 | var fps:Int;
30 | var loop:Bool;
31 | var offset:Array;
32 | }
33 |
34 | class Character extends FlxSprite
35 | {
36 | public var idleSuffix:String = "";
37 | public var singSuffix:String = "";
38 |
39 | public var canIdle:Bool = true;
40 |
41 | var data:CharacterData;
42 | var currentSupress:Int = 0;
43 |
44 | public function new(x:Int, y:Int, character:String)
45 | {
46 | super(x, y);
47 |
48 | trace("Spawning " + character);
49 |
50 | var path:String = AssetHelper.getDataPath(character + ".json", CHARACTERS);
51 | if (!FileSystem.exists(path))
52 | {
53 | trace("Error: Character doesn't exist, defaulting to dad.");
54 | character = "dad";
55 | path = AssetHelper.getDataPath(character + ".json", CHARACTERS);
56 | }
57 |
58 | data = Json.parse(File.getContent(path));
59 |
60 | trace(data.idleSequence);
61 |
62 | frames = AssetHelper.getSparrowAtlas(data.atlasPath[0], data.atlasPath[1]);
63 | antialiasing = true;
64 |
65 | for (animationName in Reflect.fields(data.animations))
66 | {
67 | var anim:CharacterAnimation = Reflect.field(data.animations, animationName);
68 |
69 | if (anim.fromPrefix != null && anim.fromPrefix != "")
70 | {
71 | if (anim.indices != null)
72 | animation.addByIndices(animationName, anim.fromPrefix, anim.indices, "", anim.fps, anim.loop, data.flipX);
73 | else
74 | animation.addByPrefix(animationName, anim.fromPrefix, anim.fps, anim.loop, data.flipX);
75 |
76 | if (anim.offset != null)
77 | {
78 | for (i in animation.getByName(animationName).frames)
79 | {
80 | var frame:FlxFrame = frames.frames[i];
81 | frame.offset.x += anim.offset[0];
82 | frame.offset.y += anim.offset[1];
83 | }
84 | }
85 | }
86 | }
87 |
88 | this.y -= data.height;
89 | }
90 |
91 | override public function update(elapsed:Float):Void
92 | {
93 | super.update(elapsed);
94 | }
95 |
96 | public function getCameraMidpoint():FlxPoint
97 | {
98 | var midpoint:FlxPoint = super.getMidpoint();
99 |
100 | if (data.cameraOffset != null)
101 | {
102 | midpoint.x += data.cameraOffset[0];
103 | midpoint.y += data.cameraOffset[1];
104 | }
105 |
106 | return midpoint;
107 | }
108 |
109 | public function playAnim(anim:String, force:Bool = false, supressDuration:Int = 0)
110 | {
111 | if (animation.getByName(anim) != null)
112 | {
113 | animation.play(anim, force);
114 | currentSupress = supressDuration;
115 | }
116 | }
117 |
118 | inline public function getCurrentAnim():FlxAnimation
119 | return animation.curAnim;
120 |
121 | public function playIdle(beat:Int)
122 | {
123 | if (currentSupress > 0)
124 | currentSupress -= 1;
125 |
126 | if (currentSupress == 0 && canIdle)
127 | {
128 | if (data.idleSequence != null)
129 | {
130 | if (data.idleSequence.length > 1)
131 | {
132 | var index:Int = Std.int(Math.abs(beat)) % data.idleSequence.length;
133 | playAnim(data.idleSequence[index] + idleSuffix, true);
134 | }
135 | else
136 | {
137 | playAnim(data.idleSequence[0] + idleSuffix, true);
138 | }
139 | }
140 | else
141 | playAnim("idle" + singSuffix, true);
142 | }
143 | }
144 |
145 | public function playSingAnim(strumIndex:Int, suffix:String = "", force:Bool = true)
146 | {
147 | var animName:String = "";
148 | switch (strumIndex)
149 | {
150 | case 0:
151 | animName = "singLeft";
152 | case 1:
153 | animName = "singDown";
154 | case 2:
155 | animName = "singUp";
156 | case 3:
157 | animName = "singRight";
158 | }
159 |
160 | playAnim(animName + suffix + singSuffix, force, 2);
161 | }
162 |
163 | public function playMissAnim(strumIndex:Int)
164 | {
165 | playSingAnim(strumIndex, "Miss");
166 | }
167 | }
168 |
--------------------------------------------------------------------------------
/source/izzy/gameplay/ModchartHelper.hx:
--------------------------------------------------------------------------------
1 | package izzy.gameplay;
2 |
3 | import flixel.FlxBasic;
4 | import flixel.FlxCamera;
5 | import flixel.group.FlxGroup.FlxTypedGroup;
6 | import izzy.core.AssetHelper;
7 | import izzy.scripting.ScriptHelper;
8 | import izzy.state.PlayState;
9 |
10 | @:access(izzy.state.PlayState)
11 | class ModchartHelper extends FlxTypedGroup
12 | {
13 | var scriptHelper:ScriptHelper;
14 | var playState:PlayState;
15 |
16 | public function new(path:String, state:PlayState)
17 | {
18 | super();
19 |
20 | this.playState = state;
21 |
22 | if (scriptHelper == null)
23 | scriptHelper = new ScriptHelper();
24 |
25 | if (!scriptHelper.expose.exists("stage"))
26 | scriptHelper.expose.set("stage", playState.stage);
27 |
28 | if (!scriptHelper.expose.exists("gf") && playState.stage.gf != null)
29 | scriptHelper.expose.set("gf", playState.stage.gf);
30 | if (!scriptHelper.expose.exists("enemy") && playState.stage.enemy != null)
31 | scriptHelper.expose.set("enemy", playState.stage.enemy);
32 | if (!scriptHelper.expose.exists("player") && playState.stage.player != null)
33 | scriptHelper.expose.set("player", playState.stage.player);
34 |
35 | scriptHelper.expose.set("stageCamera", playState.stageCamera);
36 | scriptHelper.expose.set("uiCamera", playState.uiCamera);
37 | scriptHelper.expose.set("enemyStrumLine", playState.enemyStrumLine);
38 | scriptHelper.expose.set("playerStrumLine", playState.playerStrumLine);
39 |
40 | scriptHelper.loadScript(path);
41 |
42 | if (scriptHelper.get("onCreate") != null)
43 | scriptHelper.get("onCreate")();
44 | }
45 |
46 | override public function update(elapsed:Float)
47 | {
48 | super.update(elapsed);
49 |
50 | if (scriptHelper.get("onUpdate") != null)
51 | scriptHelper.get("onUpdate")(elapsed);
52 | }
53 |
54 | public function onBeat(beat:Int)
55 | {
56 | if (scriptHelper.get("onBeat") != null)
57 | scriptHelper.get("onBeat")(beat);
58 | }
59 |
60 | public function onTick(tick:Int)
61 | {
62 | if (scriptHelper.get("onTick") != null)
63 | scriptHelper.get("onTick")(tick);
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/source/izzy/gameplay/Stage.hx:
--------------------------------------------------------------------------------
1 | package izzy.gameplay;
2 |
3 | import flixel.FlxBasic;
4 | import flixel.FlxCamera;
5 | import flixel.group.FlxGroup.FlxTypedGroup;
6 | import izzy.core.AssetHelper;
7 | import izzy.scripting.ScriptHelper;
8 | import izzy.state.PlayState;
9 |
10 | class Stage extends ModchartHelper
11 | {
12 | public var gf:Character;
13 | public var enemy:Character;
14 | public var player:Character;
15 |
16 | var characters:Array;
17 |
18 | public function new(stage:String, characters:Array, state:PlayState)
19 | {
20 | this.characters = characters;
21 |
22 | scriptHelper = new ScriptHelper();
23 |
24 | scriptHelper.expose.set("stage", this);
25 | scriptHelper.expose.set("gf", null);
26 | scriptHelper.expose.set("enemy", null);
27 | scriptHelper.expose.set("player", null);
28 | scriptHelper.expose.set("addGf", addGf);
29 | scriptHelper.expose.set("addEnemy", addEnemy);
30 | scriptHelper.expose.set("addPlayer", addPlayer);
31 |
32 | super(AssetHelper.getDataPath(stage + ".hscript", STAGES), state);
33 | }
34 |
35 | override public function update(elapsed:Float)
36 | {
37 | super.update(elapsed);
38 | }
39 |
40 | override public function onBeat(beat:Int)
41 | {
42 | if (gf != null)
43 | gf.playIdle(beat);
44 | if (enemy != null)
45 | enemy.playIdle(beat);
46 |
47 | player.playIdle(beat);
48 |
49 | super.onBeat(beat);
50 | }
51 |
52 | function addKeyCharacter(whoId:Int, x:Int, y:Int, scrollX:Float = 1.0, scrollY:Float = 1.0):Bool
53 | {
54 | var who:String = "";
55 |
56 | switch (whoId)
57 | {
58 | case 0:
59 | who = "enemy";
60 | case 1:
61 | who = "player";
62 | case 2:
63 | who = "gf";
64 | default:
65 | trace("Character index out of range");
66 | return false;
67 | }
68 |
69 | if (characters[whoId] != "")
70 | {
71 | var character:Character = new Character(x, y, characters[whoId]);
72 | character.scrollFactor.set(scrollX, scrollY);
73 | add(character);
74 | character.playIdle(0);
75 | scriptHelper.set(who, character);
76 | Reflect.setField(this, who, character);
77 | return true;
78 | }
79 |
80 | return false;
81 | }
82 |
83 | function addEnemy(x:Int, y:Int, scrollX:Float = 1.0, scrollY:Float = 1.0):Bool
84 | return addKeyCharacter(0, x, y, scrollX, scrollY);
85 |
86 | function addPlayer(x:Int, y:Int, scrollX:Float = 1.0, scrollY:Float = 1.0):Bool
87 | return addKeyCharacter(1, x, y, scrollX, scrollY);
88 |
89 | function addGf(x:Int, y:Int, scrollX:Float = 1.0, scrollY:Float = 1.0):Bool
90 | return addKeyCharacter(2, x, y, scrollX, scrollY);
91 |
92 | public function getCharacterByIndex(whose:Int):Character
93 | {
94 | switch (whose)
95 | {
96 | case 0:
97 | return enemy != null ? enemy : gf;
98 | case 1:
99 | return player;
100 | case 2:
101 | return gf;
102 | default:
103 | return null;
104 | }
105 |
106 | return null;
107 | }
108 | }
109 |
--------------------------------------------------------------------------------
/source/izzy/state/InitState.hx:
--------------------------------------------------------------------------------
1 | package izzy.state;
2 |
3 | import flixel.FlxG;
4 | import flixel.FlxSprite;
5 | import flixel.FlxState;
6 | import flixel.addons.transition.FlxTransitionSprite.GraphicTransTileDiamond;
7 | import flixel.addons.transition.FlxTransitionableState;
8 | import flixel.addons.transition.TransitionData;
9 | import flixel.graphics.FlxGraphic;
10 | import flixel.math.FlxPoint;
11 | import flixel.math.FlxRect;
12 | import flixel.text.FlxText;
13 | import flixel.tweens.FlxTween;
14 | import flixel.ui.FlxBar;
15 | import flixel.util.FlxColor;
16 | import flixel.util.FlxTimer;
17 | import izzy.core.AssetHelper;
18 | import izzy.core.SongDatabase;
19 | import lime.system.ThreadPool;
20 |
21 | class InitState extends FlxState
22 | {
23 | var splash:FlxSprite;
24 | var text:FlxText;
25 |
26 | var framePostDraw:Bool = false;
27 |
28 | override public function create():Void
29 | {
30 | super.create();
31 |
32 | splash = new FlxSprite().loadGraphic(AssetHelper.getAsset("splash.png", IMAGE));
33 | splash.screenCenter();
34 | splash.y -= 30;
35 | splash.antialiasing = true;
36 | add(splash);
37 |
38 | text = new FlxText(0, 0, 0, "Loading...");
39 | text.setFormat("_sans", 24, FlxColor.WHITE, CENTER);
40 | text.updateHitbox();
41 | text.screenCenter(X);
42 | text.x = Math.ffloor(text.x);
43 | text.y = Math.ffloor(splash.y + splash.height + 45);
44 | text.antialiasing = true;
45 | add(text);
46 | }
47 |
48 | override public function update(elapsed:Float):Void
49 | {
50 | super.update(elapsed);
51 |
52 | if (framePostDraw)
53 | {
54 | if (SongDatabase.updateWeekList())
55 | {
56 | var diamond:FlxGraphic = FlxGraphic.fromClass(GraphicTransTileDiamond);
57 | diamond.persist = true;
58 | diamond.destroyOnNoUse = false;
59 |
60 | FlxTransitionableState.defaultTransIn = new TransitionData(FADE, FlxColor.BLACK, 1, new FlxPoint(0, -1),
61 | {asset: diamond, width: 32, height: 32}, new FlxRect(-200, -200, FlxG.width * 1.4, FlxG.height * 1.4));
62 | FlxTransitionableState.defaultTransOut = new TransitionData(FADE, FlxColor.BLACK, 0.7, new FlxPoint(0, 1),
63 | {asset: diamond, width: 32, height: 32}, new FlxRect(-200, -200, FlxG.width * 1.4, FlxG.height * 1.4));
64 |
65 | SongDatabase.updateSongList();
66 | startGame();
67 | }
68 | else
69 | {
70 | text.text = "Uh oh! weeks.json is missing or corrupt.\nPlease check the 'data' folder.\nIf in doubt, re-extract the zip archive of this game.\n";
71 | }
72 | }
73 | else
74 | framePostDraw = true;
75 | }
76 |
77 | function startGame()
78 | {
79 | FlxG.switchState(new TitleState());
80 | }
81 | }
82 |
--------------------------------------------------------------------------------
/source/izzy/state/TestState.hx:
--------------------------------------------------------------------------------
1 | package izzy.state;
2 |
3 | import flixel.FlxG;
4 | import flixel.FlxSprite;
5 | import flixel.FlxState;
6 | import izzy.ui.GameplayUI.StrumLine;
7 |
8 | class TestState extends FlxState
9 | {
10 | override public function create():Void
11 | {
12 | super.create();
13 |
14 | add(new FlxSprite().makeGraphic(FlxG.width, FlxG.height));
15 | var sl:StrumLine = new StrumLine(0, 0, 0.5);
16 | add(sl);
17 | }
18 |
19 | override public function update(elapsed:Float):Void
20 | {
21 | super.update(elapsed);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/source/izzy/state/base/MusicBeatState.hx:
--------------------------------------------------------------------------------
1 | package izzy.state.base;
2 |
3 | import flixel.FlxG;
4 | import flixel.addons.ui.FlxUIState.FlxUIState;
5 | import izzy.core.Conductor;
6 |
7 | class MusicBeatState extends FlxUIState
8 | {
9 | var conductor:Conductor;
10 |
11 | public function new()
12 | {
13 | super();
14 | }
15 |
16 | override public function create()
17 | {
18 | super.create();
19 |
20 | conductor = new Conductor();
21 | conductor.onBeat = this.onBeat;
22 | conductor.onTick = this.onTick;
23 | add(conductor);
24 |
25 | FlxG.watch.add(Conductor, "time");
26 | FlxG.watch.add(Conductor, "interpTime");
27 | FlxG.watch.add(Conductor, "beat");
28 | FlxG.watch.add(Conductor, "tick");
29 | }
30 |
31 | override public function update(elapsed:Float)
32 | {
33 | super.update(elapsed);
34 | }
35 |
36 | public function onBeat(beat:Int):Void {}
37 | public function onTick(tick:Int):Void {}
38 | }
39 |
--------------------------------------------------------------------------------
/source/izzy/ui/Alphabet.hx:
--------------------------------------------------------------------------------
1 | package izzy.ui;
2 |
3 | import flixel.FlxSprite;
4 | import flixel.graphics.FlxGraphic;
5 | import flixel.graphics.frames.FlxAtlasFrames;
6 | import flixel.group.FlxSpriteGroup.FlxTypedSpriteGroup;
7 | import izzy.core.AssetHelper;
8 | import lime.utils.Assets;
9 | import sys.io.File;
10 |
11 | class Alphabet extends FlxTypedSpriteGroup
12 | {
13 | static var alphabetAsset:FlxAtlasFrames;
14 |
15 | public function new(x:Float, y:Float, text:String = "")
16 | {
17 | super(x, y);
18 |
19 | if (alphabetAsset == null)
20 | loadAlphabetAsset();
21 |
22 | text = text.toUpperCase();
23 |
24 | var sumWidth:Float = 0;
25 |
26 | for (x in 0...text.length)
27 | {
28 | var letter:String = text.charAt(x);
29 |
30 | if (letter != " ")
31 | {
32 | var letterSprite:FlxSprite = new FlxSprite(sumWidth, 0);
33 | letterSprite.frames = alphabetAsset;
34 | letterSprite.antialiasing = true;
35 | letterSprite.animation.addByPrefix(letter, letter + " bold", 24, true);
36 | letterSprite.animation.play(letter);
37 | add(letterSprite);
38 |
39 | sumWidth += letterSprite.frameWidth;
40 | }
41 | else
42 | sumWidth += 54;
43 | }
44 | }
45 |
46 | public function loadAlphabetAsset()
47 | {
48 | // var atlasTexture:FlxGraphic = FlxGraphic.fromAssetKey("assets/default/images/alphabet.png");
49 | var atlasTexture:FlxGraphic = AssetHelper.getAsset("alphabet.png", IMAGE);
50 | atlasTexture.persist = true;
51 | atlasTexture.destroyOnNoUse = false;
52 | alphabetAsset = FlxAtlasFrames.fromSparrow(atlasTexture, File.getContent(AssetHelper.getAssetPath("alphabet.xml", IMAGE)));
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/source/izzy/ui/TiledSprite.hx:
--------------------------------------------------------------------------------
1 | package izzy.ui;
2 |
3 | import flixel.addons.display.FlxTiledSprite;
4 | import flixel.graphics.frames.FlxFrame;
5 | import flixel.math.FlxMath;
6 |
7 | class TiledSprite extends FlxTiledSprite
8 | {
9 | override function updateVerticesData():Void
10 | {
11 | if (graphic == null)
12 | return;
13 |
14 | var frame:FlxFrame = graphic.imageFrame.frame;
15 | graphicVisible = true;
16 |
17 | if (repeatX)
18 | {
19 | vertices[0] = vertices[6] = 0.0;
20 | vertices[2] = vertices[4] = width;
21 |
22 | uvtData[0] = uvtData[6] = -scrollX / frame.sourceSize.x;
23 | uvtData[2] = uvtData[4] = (uvtData[0] + width / frame.sourceSize.x) * (1 / scale.x);
24 | }
25 | else
26 | {
27 | vertices[0] = vertices[6] = FlxMath.bound(scrollX, 0, width);
28 | vertices[2] = vertices[4] = FlxMath.bound(scrollX + frame.sourceSize.x, 0, width);
29 |
30 | if (vertices[2] - vertices[0] <= 0)
31 | {
32 | graphicVisible = false;
33 | return;
34 | }
35 |
36 | uvtData[0] = uvtData[6] = (vertices[0] - scrollX) / frame.sourceSize.x;
37 | uvtData[2] = uvtData[4] = uvtData[0] + (vertices[2] - vertices[0]) / frame.sourceSize.x;
38 | }
39 |
40 | if (repeatY)
41 | {
42 | vertices[1] = vertices[3] = 0.0;
43 | vertices[5] = vertices[7] = height;
44 |
45 | uvtData[1] = uvtData[3] = -scrollY / frame.sourceSize.y;
46 | uvtData[5] = uvtData[7] = (uvtData[1] + height / frame.sourceSize.y) * (1 / scale.y);
47 | }
48 | else
49 | {
50 | vertices[1] = vertices[3] = FlxMath.bound(scrollY, 0, height);
51 | vertices[5] = vertices[7] = FlxMath.bound(scrollY + frame.sourceSize.y, 0, height);
52 |
53 | if (vertices[5] - vertices[1] <= 0)
54 | {
55 | graphicVisible = false;
56 | return;
57 | }
58 |
59 | uvtData[1] = uvtData[3] = (vertices[1] - scrollY) / frame.sourceSize.y;
60 | uvtData[5] = uvtData[7] = uvtData[1] + (vertices[5] - vertices[1]) / frame.sourceSize.y;
61 | }
62 | }
63 | }
--------------------------------------------------------------------------------
/source/openfl/display/GraphicsShader.hx:
--------------------------------------------------------------------------------
1 | package openfl.display;
2 |
3 | import openfl.utils.ByteArray;
4 |
5 | #if !openfl_debug
6 | @:fileXml('tags="haxe,release"')
7 | @:noDebug
8 | #end
9 | class GraphicsShader extends Shader
10 | {
11 | public var bitmap:ShaderInput;
12 |
13 | var glVertexHeader:String = "attribute float openfl_Alpha;
14 | attribute vec4 openfl_ColorMultiplier;
15 | attribute vec4 openfl_ColorOffset;
16 | attribute vec4 openfl_Position;
17 | attribute vec2 openfl_TextureCoord;
18 |
19 | varying float openfl_Alphav;
20 | varying vec4 openfl_ColorMultiplierv;
21 | varying vec4 openfl_ColorOffsetv;
22 | varying vec2 openfl_TextureCoordv;
23 |
24 | uniform mat4 openfl_Matrix;
25 | uniform bool openfl_HasColorTransform;
26 | uniform vec2 openfl_TextureSize;";
27 |
28 | var glVertexBody:String = "openfl_Alphav = openfl_Alpha;
29 | openfl_TextureCoordv = openfl_TextureCoord;
30 |
31 | if (openfl_HasColorTransform) {
32 |
33 | openfl_ColorMultiplierv = openfl_ColorMultiplier;
34 | openfl_ColorOffsetv = openfl_ColorOffset / 255.0;
35 |
36 | }
37 |
38 | gl_Position = openfl_Matrix * openfl_Position;";
39 |
40 | var glFragmentHeader:String = "varying float openfl_Alphav;
41 | varying vec4 openfl_ColorMultiplierv;
42 | varying vec4 openfl_ColorOffsetv;
43 | varying vec2 openfl_TextureCoordv;
44 |
45 | uniform bool openfl_HasColorTransform;
46 | uniform vec2 openfl_TextureSize;
47 | uniform sampler2D bitmap;";
48 |
49 | var glFragmentBody:String = "vec4 color = texture2D (bitmap, openfl_TextureCoordv);
50 |
51 | if (color.a == 0.0) {
52 |
53 | gl_FragColor = vec4 (0.0, 0.0, 0.0, 0.0);
54 |
55 | } else if (openfl_HasColorTransform) {
56 |
57 | color = vec4 (color.rgb / color.a, color.a);
58 |
59 | mat4 colorMultiplier = mat4 (0);
60 | colorMultiplier[0][0] = openfl_ColorMultiplierv.x;
61 | colorMultiplier[1][1] = openfl_ColorMultiplierv.y;
62 | colorMultiplier[2][2] = openfl_ColorMultiplierv.z;
63 | colorMultiplier[3][3] = 1.0; // openfl_ColorMultiplierv.w;
64 |
65 | color = clamp (openfl_ColorOffsetv + (color * colorMultiplier), 0.0, 1.0);
66 |
67 | if (color.a > 0.0) {
68 |
69 | gl_FragColor = vec4 (color.rgb * color.a * openfl_Alphav, color.a * openfl_Alphav);
70 |
71 | } else {
72 |
73 | gl_FragColor = vec4 (0.0, 0.0, 0.0, 0.0);
74 |
75 | }
76 |
77 | } else {
78 |
79 | gl_FragColor = color * openfl_Alphav;
80 |
81 | }";
82 |
83 | public function new(glVertexSource:String = "", glFragmentSource:String = "", initNow:Bool = true)
84 | {
85 | super(null);
86 |
87 | if (glVertexSource != "")
88 | this.glVertexSource = glVertexSource;
89 | else
90 | this.glVertexSource = "#pragma header
91 | void main(void) {
92 | #pragma body
93 | }";
94 |
95 | if (glFragmentSource != "")
96 | this.glFragmentSource = glFragmentSource;
97 | else
98 | this.glFragmentSource = "#pragma header
99 | void main(void) {
100 | #pragma body
101 | }";
102 |
103 | if (initNow)
104 | __initGL();
105 | }
106 |
107 | override public function __initGL()
108 | {
109 | processSource();
110 |
111 | __isGenerated = true;
112 | super.__initGL();
113 |
114 | bitmap = data.bitmap;
115 | }
116 |
117 | function processSource()
118 | {
119 | if (glVertexSource != null || glFragmentSource != null)
120 | {
121 | if (glFragmentSource != null && glFragmentHeader != null && glFragmentBody != null)
122 | {
123 | glFragmentSource = StringTools.replace(glFragmentSource, "#pragma header", glFragmentHeader);
124 | glFragmentSource = StringTools.replace(glFragmentSource, "#pragma body", glFragmentBody);
125 | }
126 |
127 | if (glVertexSource != null && glVertexHeader != null && glVertexBody != null)
128 | {
129 | glVertexSource = StringTools.replace(glVertexSource, "#pragma header", glVertexHeader);
130 | glVertexSource = StringTools.replace(glVertexSource, "#pragma body", glVertexBody);
131 | }
132 | }
133 | }
134 | }
135 |
--------------------------------------------------------------------------------