diff --git a/.gitignore b/.gitignore
index ed72419d..83a2ed47 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,6 +17,8 @@ resources/win64/love/*
# Tools
tools/funkin-json/*
tools/funkin-xml/*
+tools/funkin-xna/*
!tools/funkin-json/funkin-json.py
!tools/funkin-xml/funkin-xml.py
+!tools/funkin-xna/funkin-xna.py
diff --git a/README.md b/README.md
index 8dec8bd7..7d45d015 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
# ![Logo](images/logo.png)
-![GitHub release (latest by date)](https://img.shields.io/github/v/release/HTV04/funkin-rewritten?style=flat-square) ![GitHub all releases](https://img.shields.io/github/downloads/HTV04/funkin-rewritten/total?style=flat-square) ![GitHub issues](https://img.shields.io/github/issues/HTV04/funkin-rewritten?style=flat-square) ![GitHub](https://img.shields.io/github/license/HTV04/funkin-rewritten?style=flat-square) ![Discord](https://img.shields.io/discord/852658576577003550?style=flat-square)
+[![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/HTV04/funkin-rewritten?style=flat-square)](https://github.com/HTV04/funkin-rewritten/releases/latest) [![GitHub release (latest SemVer including pre-releases)](https://img.shields.io/github/v/release/HTV04/funkin-rewritten?include_prereleases&style=flat-square)](https://github.com/HTV04/funkin-rewritten/releases) [![GitHub all releases](https://img.shields.io/github/downloads/HTV04/funkin-rewritten/total?style=flat-square)](https://github.com/HTV04/funkin-rewritten/releases) [![GitHub issues](https://img.shields.io/github/issues/HTV04/funkin-rewritten?style=flat-square)](https://github.com/HTV04/funkin-rewritten/issues) [![GitHub](https://img.shields.io/github/license/HTV04/funkin-rewritten?style=flat-square)](https://github.com/HTV04/funkin-rewritten/blob/main/LICENSE) [![Discord](https://img.shields.io/discord/852658576577003550?style=flat-square)](https://discord.gg/tQGzN2Wu48)
Friday Night Funkin' Rewritten is a rewrite of [Friday Night Funkin'](https://ninja-muffin24.itch.io/funkin) built on [LÖVE](https://love2d.org/) and [LÖVE Potion](https://github.com/lovebrew/LovePotion) for Windows, macOS, and Linux, as well as previously unsupported platforms, like the Nintendo Switch!
diff --git a/src/love/debug-menu.lua b/src/love/debug-menu.lua
index ab2e4905..2a8c5ca0 100644
--- a/src/love/debug-menu.lua
+++ b/src/love/debug-menu.lua
@@ -34,7 +34,7 @@ return {
dirTable = love.filesystem.getDirectoryItems(curDir)
end,
- enter = function(self)
+ enter = function(self, previous)
menuID = 1
selection = 3
@@ -54,8 +54,7 @@ return {
{2}
}
- graphics.cancelTimer()
- graphics.fade[1] = 0
+ graphics.setFade(0)
graphics.fadeIn(0.5)
end,
@@ -84,7 +83,7 @@ return {
overlaySprite = spriteData()
spriteAnims = {}
- for i, _ in pairs(sprite.anims) do
+ for i, _ in pairs(sprite.getAnims()) do
table.insert(spriteAnims, i)
end
diff --git a/src/love/fonts/pixel.fnt b/src/love/fonts/pixel.fnt
new file mode 100644
index 00000000..be42af53
--- /dev/null
+++ b/src/love/fonts/pixel.fnt
@@ -0,0 +1,267 @@
+info face="Pixel Arial 11" size=12 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=0 aa=1 padding=0,0,0,0 spacing=1,1 outline=0
+common lineHeight=12 base=10 scaleW=256 scaleH=256 pages=1 packed=0 alphaChnl=0 redChnl=4 greenChnl=4 blueChnl=4
+page id=0 file="pixel_0.png"
+chars count=263
+char id=32 x=246 y=42 width=3 height=1 xoffset=-1 yoffset=11 xadvance=4 page=0 chnl=15
+char id=33 x=47 y=29 width=2 height=8 xoffset=0 yoffset=2 xadvance=3 page=0 chnl=15
+char id=34 x=89 y=44 width=4 height=3 xoffset=0 yoffset=2 xadvance=5 page=0 chnl=15
+char id=35 x=220 y=10 width=6 height=8 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=36 x=210 y=0 width=6 height=9 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=37 x=33 y=11 width=10 height=8 xoffset=0 yoffset=2 xadvance=11 page=0 chnl=15
+char id=38 x=124 y=11 width=7 height=8 xoffset=0 yoffset=2 xadvance=8 page=0 chnl=15
+char id=39 x=130 y=44 width=2 height=3 xoffset=0 yoffset=2 xadvance=3 page=0 chnl=15
+char id=40 x=153 y=0 width=4 height=10 xoffset=0 yoffset=2 xadvance=5 page=0 chnl=15
+char id=41 x=158 y=0 width=4 height=10 xoffset=0 yoffset=2 xadvance=5 page=0 chnl=15
+char id=42 x=5 y=47 width=4 height=4 xoffset=0 yoffset=2 xadvance=5 page=0 chnl=15
+char id=43 x=165 y=37 width=6 height=5 xoffset=0 yoffset=4 xadvance=7 page=0 chnl=15
+char id=44 x=142 y=44 width=2 height=3 xoffset=0 yoffset=9 xadvance=3 page=0 chnl=15
+char id=45 x=203 y=43 width=4 height=1 xoffset=0 yoffset=7 xadvance=5 page=0 chnl=15
+char id=46 x=62 y=48 width=2 height=1 xoffset=0 yoffset=9 xadvance=3 page=0 chnl=15
+char id=47 x=15 y=29 width=4 height=8 xoffset=0 yoffset=2 xadvance=5 page=0 chnl=15
+char id=48 x=241 y=10 width=6 height=8 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=49 x=25 y=29 width=4 height=8 xoffset=1 yoffset=2 xadvance=6 page=0 chnl=15
+char id=50 x=248 y=10 width=6 height=8 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=51 x=0 y=21 width=6 height=8 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=52 x=105 y=20 width=6 height=8 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=53 x=98 y=20 width=6 height=8 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=54 x=14 y=20 width=6 height=8 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=55 x=56 y=20 width=6 height=8 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=56 x=49 y=20 width=6 height=8 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=57 x=35 y=20 width=6 height=8 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=58 x=142 y=37 width=2 height=6 xoffset=0 yoffset=4 xadvance=3 page=0 chnl=15
+char id=59 x=44 y=29 width=2 height=8 xoffset=0 yoffset=4 xadvance=3 page=0 chnl=15
+char id=60 x=179 y=37 width=6 height=5 xoffset=0 yoffset=4 xadvance=7 page=0 chnl=15
+char id=61 x=43 y=45 width=6 height=3 xoffset=0 yoffset=5 xadvance=7 page=0 chnl=15
+char id=62 x=172 y=37 width=6 height=5 xoffset=0 yoffset=4 xadvance=7 page=0 chnl=15
+char id=63 x=84 y=20 width=6 height=8 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=64 x=0 y=0 width=11 height=10 xoffset=0 yoffset=2 xadvance=12 page=0 chnl=15
+char id=65 x=73 y=11 width=8 height=8 xoffset=0 yoffset=2 xadvance=9 page=0 chnl=15
+char id=66 x=156 y=11 width=7 height=8 xoffset=0 yoffset=2 xadvance=8 page=0 chnl=15
+char id=67 x=172 y=11 width=7 height=8 xoffset=0 yoffset=2 xadvance=8 page=0 chnl=15
+char id=68 x=188 y=11 width=7 height=8 xoffset=0 yoffset=2 xadvance=8 page=0 chnl=15
+char id=69 x=21 y=20 width=6 height=8 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=70 x=28 y=20 width=6 height=8 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=71 x=64 y=11 width=8 height=8 xoffset=0 yoffset=2 xadvance=9 page=0 chnl=15
+char id=72 x=196 y=11 width=7 height=8 xoffset=0 yoffset=2 xadvance=8 page=0 chnl=15
+char id=73 x=53 y=29 width=2 height=8 xoffset=0 yoffset=2 xadvance=3 page=0 chnl=15
+char id=74 x=198 y=20 width=5 height=8 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=75 x=108 y=11 width=7 height=8 xoffset=0 yoffset=2 xadvance=8 page=0 chnl=15
+char id=76 x=234 y=10 width=6 height=8 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=77 x=132 y=11 width=7 height=8 xoffset=1 yoffset=2 xadvance=9 page=0 chnl=15
+char id=78 x=140 y=11 width=7 height=8 xoffset=0 yoffset=2 xadvance=8 page=0 chnl=15
+char id=79 x=91 y=11 width=8 height=8 xoffset=0 yoffset=2 xadvance=9 page=0 chnl=15
+char id=80 x=42 y=20 width=6 height=8 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=81 x=82 y=11 width=8 height=8 xoffset=0 yoffset=2 xadvance=9 page=0 chnl=15
+char id=82 x=164 y=11 width=7 height=8 xoffset=0 yoffset=2 xadvance=8 page=0 chnl=15
+char id=83 x=212 y=10 width=7 height=8 xoffset=0 yoffset=2 xadvance=8 page=0 chnl=15
+char id=84 x=7 y=21 width=6 height=8 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=85 x=148 y=11 width=7 height=8 xoffset=0 yoffset=2 xadvance=8 page=0 chnl=15
+char id=86 x=116 y=11 width=7 height=8 xoffset=1 yoffset=2 xadvance=9 page=0 chnl=15
+char id=87 x=10 y=11 width=11 height=8 xoffset=0 yoffset=2 xadvance=11 page=0 chnl=15
+char id=88 x=204 y=10 width=7 height=8 xoffset=0 yoffset=2 xadvance=8 page=0 chnl=15
+char id=89 x=180 y=11 width=7 height=8 xoffset=1 yoffset=2 xadvance=9 page=0 chnl=15
+char id=90 x=100 y=11 width=7 height=8 xoffset=0 yoffset=2 xadvance=8 page=0 chnl=15
+char id=91 x=177 y=0 width=3 height=10 xoffset=0 yoffset=2 xadvance=4 page=0 chnl=15
+char id=92 x=5 y=30 width=4 height=8 xoffset=0 yoffset=2 xadvance=5 page=0 chnl=15
+char id=93 x=181 y=0 width=3 height=10 xoffset=0 yoffset=2 xadvance=4 page=0 chnl=15
+char id=94 x=248 y=36 width=6 height=4 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=95 x=184 y=43 width=7 height=1 xoffset=0 yoffset=11 xadvance=8 page=0 chnl=15
+char id=96 x=173 y=43 width=3 height=2 xoffset=1 yoffset=2 xadvance=5 page=0 chnl=15
+char id=97 x=58 y=37 width=6 height=6 xoffset=0 yoffset=4 xadvance=7 page=0 chnl=15
+char id=98 x=227 y=10 width=6 height=8 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=99 x=65 y=37 width=6 height=6 xoffset=0 yoffset=4 xadvance=7 page=0 chnl=15
+char id=100 x=63 y=20 width=6 height=8 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=101 x=72 y=37 width=6 height=6 xoffset=0 yoffset=4 xadvance=7 page=0 chnl=15
+char id=102 x=30 y=29 width=4 height=8 xoffset=0 yoffset=2 xadvance=5 page=0 chnl=15
+char id=103 x=70 y=20 width=6 height=8 xoffset=0 yoffset=4 xadvance=7 page=0 chnl=15
+char id=104 x=77 y=20 width=6 height=8 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=105 x=50 y=29 width=2 height=8 xoffset=0 yoffset=2 xadvance=3 page=0 chnl=15
+char id=106 x=189 y=0 width=3 height=10 xoffset=0 yoffset=2 xadvance=3 page=0 chnl=15
+char id=107 x=174 y=20 width=5 height=8 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=108 x=35 y=29 width=2 height=8 xoffset=0 yoffset=2 xadvance=3 page=0 chnl=15
+char id=109 x=36 y=38 width=7 height=6 xoffset=1 yoffset=4 xadvance=9 page=0 chnl=15
+char id=110 x=44 y=38 width=6 height=6 xoffset=0 yoffset=4 xadvance=7 page=0 chnl=15
+char id=111 x=51 y=38 width=6 height=6 xoffset=0 yoffset=4 xadvance=7 page=0 chnl=15
+char id=112 x=119 y=20 width=6 height=8 xoffset=0 yoffset=4 xadvance=7 page=0 chnl=15
+char id=113 x=91 y=20 width=6 height=8 xoffset=0 yoffset=4 xadvance=7 page=0 chnl=15
+char id=114 x=137 y=37 width=4 height=6 xoffset=0 yoffset=4 xadvance=5 page=0 chnl=15
+char id=115 x=93 y=37 width=6 height=6 xoffset=0 yoffset=4 xadvance=7 page=0 chnl=15
+char id=116 x=10 y=30 width=4 height=8 xoffset=0 yoffset=2 xadvance=4 page=0 chnl=15
+char id=117 x=100 y=37 width=6 height=6 xoffset=0 yoffset=4 xadvance=7 page=0 chnl=15
+char id=118 x=107 y=37 width=6 height=6 xoffset=0 yoffset=4 xadvance=7 page=0 chnl=15
+char id=119 x=26 y=38 width=9 height=6 xoffset=1 yoffset=4 xadvance=11 page=0 chnl=15
+char id=120 x=79 y=37 width=6 height=6 xoffset=0 yoffset=4 xadvance=7 page=0 chnl=15
+char id=121 x=112 y=20 width=6 height=8 xoffset=0 yoffset=4 xadvance=7 page=0 chnl=15
+char id=122 x=86 y=37 width=6 height=6 xoffset=0 yoffset=4 xadvance=7 page=0 chnl=15
+char id=123 x=163 y=0 width=4 height=10 xoffset=0 yoffset=2 xadvance=5 page=0 chnl=15
+char id=124 x=196 y=0 width=2 height=10 xoffset=0 yoffset=2 xadvance=3 page=0 chnl=15
+char id=125 x=168 y=0 width=4 height=10 xoffset=0 yoffset=2 xadvance=5 page=0 chnl=15
+char id=126 x=147 y=43 width=6 height=2 xoffset=0 yoffset=5 xadvance=7 page=0 chnl=15
+char id=160 x=0 y=11 width=5 height=9 xoffset=0 yoffset=3 xadvance=6 page=0 chnl=15
+char id=161 x=76 y=29 width=9 height=7 xoffset=0 yoffset=3 xadvance=10 page=0 chnl=15
+char id=162 x=132 y=37 width=4 height=6 xoffset=0 yoffset=4 xadvance=5 page=0 chnl=15
+char id=163 x=219 y=28 width=5 height=7 xoffset=0 yoffset=3 xadvance=6 page=0 chnl=15
+char id=164 x=252 y=0 width=3 height=9 xoffset=-1 yoffset=1 xadvance=2 page=0 chnl=15
+char id=165 x=145 y=37 width=9 height=5 xoffset=0 yoffset=5 xadvance=10 page=0 chnl=15
+char id=166 x=238 y=42 width=3 height=1 xoffset=-1 yoffset=11 xadvance=3 page=0 chnl=15
+char id=167 x=8 y=39 width=3 height=7 xoffset=0 yoffset=3 xadvance=4 page=0 chnl=15
+char id=168 x=58 y=49 width=3 height=1 xoffset=1 yoffset=3 xadvance=5 page=0 chnl=15
+char id=169 x=86 y=29 width=7 height=7 xoffset=0 yoffset=3 xadvance=8 page=0 chnl=15
+char id=170 x=50 y=45 width=5 height=3 xoffset=0 yoffset=5 xadvance=6 page=0 chnl=15
+char id=171 x=139 y=44 width=2 height=3 xoffset=0 yoffset=4 xadvance=3 page=0 chnl=15
+char id=172 x=155 y=37 width=9 height=5 xoffset=0 yoffset=5 xadvance=10 page=0 chnl=15
+char id=173 x=183 y=29 width=5 height=7 xoffset=0 yoffset=3 xadvance=6 page=0 chnl=15
+char id=174 x=94 y=29 width=7 height=7 xoffset=0 yoffset=3 xadvance=8 page=0 chnl=15
+char id=175 x=34 y=49 width=3 height=1 xoffset=-1 yoffset=11 xadvance=3 page=0 chnl=15
+char id=176 x=120 y=44 width=3 height=3 xoffset=0 yoffset=3 xadvance=4 page=0 chnl=15
+char id=177 x=177 y=29 width=5 height=7 xoffset=0 yoffset=5 xadvance=6 page=0 chnl=15
+char id=178 x=237 y=28 width=5 height=7 xoffset=0 yoffset=3 xadvance=6 page=0 chnl=15
+char id=179 x=114 y=37 width=5 height=6 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15
+char id=180 x=181 y=43 width=2 height=2 xoffset=1 yoffset=2 xadvance=4 page=0 chnl=15
+char id=181 x=222 y=36 width=4 height=5 xoffset=0 yoffset=5 xadvance=5 page=0 chnl=15
+char id=182 x=147 y=29 width=5 height=7 xoffset=0 yoffset=3 xadvance=6 page=0 chnl=15
+char id=183 x=98 y=0 width=6 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=15
+char id=184 x=42 y=49 width=3 height=1 xoffset=-1 yoffset=11 xadvance=3 page=0 chnl=15
+char id=185 x=173 y=0 width=3 height=10 xoffset=0 yoffset=2 xadvance=4 page=0 chnl=15
+char id=186 x=192 y=43 width=5 height=1 xoffset=0 yoffset=9 xadvance=6 page=0 chnl=15
+char id=187 x=136 y=44 width=2 height=3 xoffset=0 yoffset=4 xadvance=3 page=0 chnl=15
+char id=188 x=126 y=37 width=5 height=6 xoffset=0 yoffset=3 xadvance=6 page=0 chnl=15
+char id=189 x=204 y=37 width=5 height=5 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15
+char id=190 x=210 y=36 width=5 height=5 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15
+char id=191 x=180 y=20 width=5 height=8 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=192 x=202 y=0 width=7 height=9 xoffset=0 yoffset=1 xadvance=8 page=0 chnl=15
+char id=193 x=70 y=0 width=6 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=15
+char id=194 x=26 y=45 width=3 height=1 xoffset=0 yoffset=4 xadvance=4 page=0 chnl=15
+char id=195 x=0 y=47 width=4 height=4 xoffset=0 yoffset=6 xadvance=5 page=0 chnl=15
+char id=196 x=231 y=0 width=6 height=9 xoffset=0 yoffset=1 xadvance=7 page=0 chnl=15
+char id=197 x=77 y=0 width=6 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=15
+char id=198 x=225 y=28 width=5 height=7 xoffset=0 yoffset=3 xadvance=6 page=0 chnl=15
+char id=199 x=238 y=0 width=6 height=9 xoffset=0 yoffset=3 xadvance=7 page=0 chnl=15
+char id=200 x=24 y=38 width=1 height=7 xoffset=1 yoffset=3 xadvance=4 page=0 chnl=15
+char id=201 x=49 y=0 width=6 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=15
+char id=202 x=108 y=44 width=3 height=3 xoffset=0 yoffset=9 xadvance=4 page=0 chnl=15
+char id=203 x=20 y=29 width=4 height=8 xoffset=0 yoffset=2 xadvance=5 page=0 chnl=15
+char id=204 x=147 y=0 width=5 height=10 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=205 x=102 y=29 width=7 height=7 xoffset=0 yoffset=3 xadvance=8 page=0 chnl=15
+char id=206 x=231 y=28 width=5 height=7 xoffset=0 yoffset=3 xadvance=6 page=0 chnl=15
+char id=207 x=20 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=8 page=0 chnl=15
+char id=208 x=198 y=37 width=5 height=5 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15
+char id=209 x=133 y=0 width=6 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=15
+char id=210 x=186 y=37 width=5 height=5 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15
+char id=211 x=243 y=28 width=4 height=7 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=212 x=248 y=28 width=4 height=7 xoffset=0 yoffset=4 xadvance=5 page=0 chnl=15
+char id=213 x=133 y=44 width=2 height=3 xoffset=0 yoffset=5 xadvance=3 page=0 chnl=15
+char id=214 x=224 y=0 width=6 height=9 xoffset=0 yoffset=1 xadvance=7 page=0 chnl=15
+char id=215 x=216 y=36 width=5 height=5 xoffset=0 yoffset=5 xadvance=6 page=0 chnl=15
+char id=216 x=120 y=37 width=5 height=6 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15
+char id=217 x=241 y=36 width=3 height=5 xoffset=0 yoffset=3 xadvance=4 page=0 chnl=15
+char id=218 x=245 y=36 width=2 height=5 xoffset=0 yoffset=3 xadvance=3 page=0 chnl=15
+char id=219 x=232 y=36 width=4 height=5 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=220 x=217 y=0 width=6 height=9 xoffset=0 yoffset=1 xadvance=7 page=0 chnl=15
+char id=221 x=12 y=39 width=3 height=7 xoffset=0 yoffset=3 xadvance=4 page=0 chnl=15
+char id=222 x=117 y=29 width=5 height=7 xoffset=0 yoffset=3 xadvance=6 page=0 chnl=15
+char id=223 x=192 y=20 width=5 height=8 xoffset=0 yoffset=3 xadvance=6 page=0 chnl=15
+char id=224 x=150 y=20 width=5 height=8 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=225 x=228 y=19 width=5 height=8 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=226 x=156 y=20 width=5 height=8 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=227 x=144 y=20 width=5 height=8 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=228 x=123 y=29 width=5 height=7 xoffset=0 yoffset=3 xadvance=6 page=0 chnl=15
+char id=229 x=138 y=20 width=5 height=8 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=230 x=105 y=0 width=6 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=15
+char id=231 x=129 y=29 width=5 height=7 xoffset=0 yoffset=5 xadvance=6 page=0 chnl=15
+char id=232 x=132 y=20 width=5 height=8 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=233 x=126 y=20 width=5 height=8 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=234 x=210 y=19 width=5 height=8 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=235 x=135 y=29 width=5 height=7 xoffset=0 yoffset=3 xadvance=6 page=0 chnl=15
+char id=236 x=38 y=29 width=2 height=8 xoffset=0 yoffset=2 xadvance=2 page=0 chnl=15
+char id=237 x=41 y=29 width=2 height=8 xoffset=0 yoffset=2 xadvance=2 page=0 chnl=15
+char id=238 x=252 y=19 width=3 height=8 xoffset=-1 yoffset=2 xadvance=2 page=0 chnl=15
+char id=239 x=16 y=38 width=3 height=7 xoffset=-1 yoffset=3 xadvance=2 page=0 chnl=15
+char id=240 x=56 y=45 width=5 height=3 xoffset=0 yoffset=6 xadvance=6 page=0 chnl=15
+char id=241 x=186 y=20 width=5 height=8 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=242 x=168 y=20 width=5 height=8 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=243 x=162 y=20 width=5 height=8 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=244 x=246 y=19 width=5 height=8 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=245 x=216 y=19 width=5 height=8 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=246 x=141 y=29 width=5 height=7 xoffset=0 yoffset=3 xadvance=6 page=0 chnl=15
+char id=247 x=91 y=0 width=6 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=15
+char id=248 x=84 y=0 width=6 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=15
+char id=249 x=240 y=19 width=5 height=8 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=250 x=234 y=19 width=5 height=8 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=251 x=222 y=19 width=5 height=8 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=252 x=153 y=29 width=5 height=7 xoffset=0 yoffset=3 xadvance=6 page=0 chnl=15
+char id=253 x=20 y=38 width=3 height=7 xoffset=0 yoffset=3 xadvance=4 page=0 chnl=15
+char id=254 x=159 y=29 width=5 height=7 xoffset=0 yoffset=3 xadvance=6 page=0 chnl=15
+char id=255 x=63 y=0 width=6 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=15
+char id=262 x=65 y=48 width=1 height=1 xoffset=1 yoffset=6 xadvance=3 page=0 chnl=15
+char id=263 x=116 y=44 width=3 height=3 xoffset=0 yoffset=6 xadvance=4 page=0 chnl=15
+char id=268 x=164 y=43 width=4 height=2 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=269 x=112 y=44 width=3 height=3 xoffset=0 yoffset=8 xadvance=4 page=0 chnl=15
+char id=273 x=177 y=43 width=3 height=2 xoffset=1 yoffset=3 xadvance=5 page=0 chnl=15
+char id=286 x=165 y=29 width=5 height=7 xoffset=0 yoffset=3 xadvance=6 page=0 chnl=15
+char id=287 x=171 y=29 width=5 height=7 xoffset=0 yoffset=3 xadvance=6 page=0 chnl=15
+char id=304 x=10 y=47 width=23 height=3 xoffset=0 yoffset=7 xadvance=24 page=0 chnl=15
+char id=305 x=54 y=11 width=9 height=8 xoffset=0 yoffset=2 xadvance=10 page=0 chnl=15
+char id=321 x=234 y=42 width=3 height=1 xoffset=-1 yoffset=11 xadvance=6 page=0 chnl=15
+char id=322 x=222 y=42 width=3 height=1 xoffset=-1 yoffset=11 xadvance=6 page=0 chnl=15
+char id=338 x=127 y=44 width=2 height=3 xoffset=0 yoffset=5 xadvance=3 page=0 chnl=15
+char id=339 x=4 y=39 width=3 height=7 xoffset=0 yoffset=3 xadvance=4 page=0 chnl=15
+char id=350 x=145 y=43 width=1 height=3 xoffset=0 yoffset=7 xadvance=2 page=0 chnl=15
+char id=351 x=159 y=43 width=4 height=2 xoffset=1 yoffset=3 xadvance=6 page=0 chnl=15
+char id=352 x=50 y=49 width=3 height=1 xoffset=-1 yoffset=11 xadvance=5 page=0 chnl=15
+char id=353 x=46 y=49 width=3 height=1 xoffset=-1 yoffset=11 xadvance=5 page=0 chnl=15
+char id=376 x=193 y=0 width=2 height=10 xoffset=0 yoffset=0 xadvance=2 page=0 chnl=15
+char id=381 x=30 y=45 width=3 height=1 xoffset=-1 yoffset=11 xadvance=3 page=0 chnl=15
+char id=382 x=250 y=41 width=3 height=1 xoffset=-1 yoffset=11 xadvance=3 page=0 chnl=15
+char id=402 x=208 y=43 width=4 height=1 xoffset=0 yoffset=6 xadvance=5 page=0 chnl=15
+char id=710 x=44 y=11 width=9 height=8 xoffset=0 yoffset=2 xadvance=10 page=0 chnl=15
+char id=711 x=204 y=19 width=5 height=8 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=713 x=54 y=49 width=3 height=1 xoffset=-1 yoffset=11 xadvance=3 page=0 chnl=15
+char id=728 x=110 y=29 width=6 height=7 xoffset=0 yoffset=3 xadvance=7 page=0 chnl=15
+char id=729 x=0 y=39 width=3 height=7 xoffset=0 yoffset=3 xadvance=4 page=0 chnl=15
+char id=730 x=218 y=42 width=3 height=1 xoffset=-1 yoffset=11 xadvance=3 page=0 chnl=15
+char id=731 x=12 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=8 page=0 chnl=15
+char id=732 x=22 y=11 width=10 height=8 xoffset=0 yoffset=2 xadvance=11 page=0 chnl=15
+char id=733 x=226 y=42 width=3 height=1 xoffset=-1 yoffset=11 xadvance=3 page=0 chnl=15
+char id=916 x=99 y=44 width=4 height=3 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=937 x=230 y=42 width=3 height=1 xoffset=-1 yoffset=11 xadvance=3 page=0 chnl=15
+char id=956 x=227 y=36 width=4 height=5 xoffset=0 yoffset=5 xadvance=5 page=0 chnl=15
+char id=960 x=6 y=11 width=3 height=9 xoffset=1 yoffset=2 xadvance=6 page=0 chnl=15
+char id=8208 x=198 y=43 width=4 height=1 xoffset=0 yoffset=7 xadvance=5 page=0 chnl=15
+char id=8211 x=254 y=41 width=1 height=1 xoffset=1 yoffset=6 xadvance=4 page=0 chnl=15
+char id=8212 x=124 y=44 width=2 height=3 xoffset=0 yoffset=9 xadvance=3 page=0 chnl=15
+char id=8216 x=35 y=0 width=6 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=15
+char id=8217 x=28 y=0 width=6 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=15
+char id=8218 x=56 y=0 width=6 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=15
+char id=8220 x=74 y=44 width=4 height=3 xoffset=0 yoffset=9 xadvance=4 page=0 chnl=15
+char id=8221 x=66 y=29 width=9 height=7 xoffset=0 yoffset=3 xadvance=10 page=0 chnl=15
+char id=8222 x=169 y=43 width=3 height=2 xoffset=1 yoffset=3 xadvance=5 page=0 chnl=15
+char id=8224 x=237 y=36 width=3 height=5 xoffset=0 yoffset=4 xadvance=4 page=0 chnl=15
+char id=8225 x=42 y=0 width=6 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=15
+char id=8226 x=104 y=44 width=3 height=3 xoffset=0 yoffset=5 xadvance=4 page=0 chnl=15
+char id=8230 x=192 y=37 width=5 height=5 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15
+char id=8240 x=154 y=43 width=4 height=2 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=8249 x=199 y=0 width=2 height=10 xoffset=0 yoffset=0 xadvance=2 page=0 chnl=15
+char id=8250 x=140 y=0 width=6 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=15
+char id=8260 x=185 y=0 width=3 height=10 xoffset=-1 yoffset=0 xadvance=2 page=0 chnl=15
+char id=8355 x=0 y=30 width=4 height=8 xoffset=0 yoffset=2 xadvance=5 page=0 chnl=15
+char id=8482 x=34 y=45 width=8 height=3 xoffset=0 yoffset=3 xadvance=9 page=0 chnl=15
+char id=8486 x=242 y=42 width=3 height=1 xoffset=-1 yoffset=11 xadvance=3 page=0 chnl=15
+char id=8706 x=189 y=29 width=5 height=7 xoffset=0 yoffset=3 xadvance=6 page=0 chnl=15
+char id=8710 x=79 y=44 width=4 height=3 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=8719 x=68 y=44 width=5 height=3 xoffset=0 yoffset=6 xadvance=6 page=0 chnl=15
+char id=8721 x=253 y=28 width=1 height=7 xoffset=1 yoffset=3 xadvance=4 page=0 chnl=15
+char id=8722 x=195 y=29 width=5 height=7 xoffset=0 yoffset=3 xadvance=6 page=0 chnl=15
+char id=8729 x=126 y=0 width=6 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=15
+char id=8730 x=38 y=49 width=3 height=1 xoffset=0 yoffset=6 xadvance=4 page=0 chnl=15
+char id=8734 x=201 y=29 width=5 height=7 xoffset=0 yoffset=3 xadvance=6 page=0 chnl=15
+char id=8747 x=62 y=44 width=5 height=3 xoffset=0 yoffset=5 xadvance=6 page=0 chnl=15
+char id=8776 x=84 y=44 width=4 height=3 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=8800 x=56 y=29 width=9 height=7 xoffset=0 yoffset=3 xadvance=10 page=0 chnl=15
+char id=8804 x=207 y=28 width=5 height=7 xoffset=0 yoffset=3 xadvance=6 page=0 chnl=15
+char id=8805 x=213 y=28 width=5 height=7 xoffset=0 yoffset=3 xadvance=6 page=0 chnl=15
+char id=8946 x=94 y=44 width=4 height=3 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=9674 x=245 y=0 width=6 height=9 xoffset=0 yoffset=1 xadvance=7 page=0 chnl=15
+char id=61440 x=213 y=42 width=4 height=1 xoffset=0 yoffset=6 xadvance=5 page=0 chnl=15
+char id=61441 x=119 y=0 width=6 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=15
+char id=61442 x=112 y=0 width=6 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=15
diff --git a/src/love/fonts/pixel_0.png b/src/love/fonts/pixel_0.png
new file mode 100644
index 00000000..034f26f5
Binary files /dev/null and b/src/love/fonts/pixel_0.png differ
diff --git a/src/love/fonts/pixel_small.fnt b/src/love/fonts/pixel_small.fnt
new file mode 100644
index 00000000..060d2d2d
--- /dev/null
+++ b/src/love/fonts/pixel_small.fnt
@@ -0,0 +1,267 @@
+info face="Pixel Arial 11" size=10 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=0 aa=1 padding=0,0,0,0 spacing=1,1 outline=0
+common lineHeight=11 base=9 scaleW=256 scaleH=256 pages=1 packed=0 alphaChnl=0 redChnl=4 greenChnl=4 blueChnl=4
+page id=0 file="pixel_small_0.png"
+chars count=263
+char id=32 x=115 y=38 width=3 height=1 xoffset=-1 yoffset=10 xadvance=4 page=0 chnl=15
+char id=33 x=193 y=17 width=2 height=7 xoffset=0 yoffset=2 xadvance=3 page=0 chnl=15
+char id=34 x=168 y=33 width=4 height=3 xoffset=0 yoffset=2 xadvance=4 page=0 chnl=15
+char id=35 x=192 y=9 width=5 height=7 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=36 x=185 y=0 width=5 height=8 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=37 x=0 y=10 width=9 height=7 xoffset=0 yoffset=2 xadvance=10 page=0 chnl=15
+char id=38 x=115 y=10 width=6 height=7 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=39 x=194 y=31 width=2 height=3 xoffset=0 yoffset=2 xadvance=3 page=0 chnl=15
+char id=40 x=128 y=0 width=4 height=9 xoffset=0 yoffset=2 xadvance=4 page=0 chnl=15
+char id=41 x=133 y=0 width=4 height=9 xoffset=0 yoffset=2 xadvance=4 page=0 chnl=15
+char id=42 x=158 y=33 width=4 height=3 xoffset=0 yoffset=2 xadvance=4 page=0 chnl=15
+char id=43 x=52 y=33 width=5 height=4 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15
+char id=44 x=197 y=31 width=2 height=3 xoffset=0 yoffset=8 xadvance=3 page=0 chnl=15
+char id=45 x=55 y=38 width=4 height=1 xoffset=0 yoffset=6 xadvance=4 page=0 chnl=15
+char id=46 x=147 y=37 width=2 height=1 xoffset=0 yoffset=8 xadvance=3 page=0 chnl=15
+char id=47 x=135 y=18 width=4 height=7 xoffset=0 yoffset=2 xadvance=4 page=0 chnl=15
+char id=48 x=228 y=9 width=5 height=7 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=49 x=165 y=18 width=4 height=7 xoffset=0 yoffset=2 xadvance=5 page=0 chnl=15
+char id=50 x=129 y=10 width=6 height=7 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=51 x=240 y=8 width=5 height=7 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=52 x=96 y=18 width=5 height=7 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=53 x=90 y=18 width=5 height=7 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=54 x=30 y=18 width=5 height=7 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=55 x=24 y=18 width=5 height=7 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=56 x=12 y=18 width=5 height=7 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=57 x=72 y=18 width=5 height=7 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=58 x=25 y=33 width=2 height=5 xoffset=0 yoffset=4 xadvance=3 page=0 chnl=15
+char id=59 x=190 y=17 width=2 height=7 xoffset=0 yoffset=4 xadvance=3 page=0 chnl=15
+char id=60 x=58 y=33 width=5 height=4 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15
+char id=61 x=211 y=31 width=5 height=2 xoffset=0 yoffset=5 xadvance=6 page=0 chnl=15
+char id=62 x=99 y=33 width=4 height=4 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15
+char id=63 x=94 y=10 width=6 height=7 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=64 x=0 y=0 width=10 height=9 xoffset=0 yoffset=2 xadvance=11 page=0 chnl=15
+char id=65 x=86 y=10 width=7 height=7 xoffset=0 yoffset=2 xadvance=8 page=0 chnl=15
+char id=66 x=136 y=10 width=6 height=7 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=67 x=143 y=10 width=6 height=7 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=68 x=150 y=10 width=6 height=7 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=69 x=246 y=8 width=5 height=7 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=70 x=222 y=9 width=5 height=7 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=71 x=62 y=10 width=7 height=7 xoffset=0 yoffset=2 xadvance=8 page=0 chnl=15
+char id=72 x=122 y=10 width=6 height=7 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=73 x=205 y=17 width=2 height=7 xoffset=0 yoffset=2 xadvance=3 page=0 chnl=15
+char id=74 x=120 y=18 width=4 height=7 xoffset=0 yoffset=2 xadvance=5 page=0 chnl=15
+char id=75 x=164 y=10 width=6 height=7 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=76 x=216 y=9 width=5 height=7 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=77 x=46 y=10 width=7 height=7 xoffset=0 yoffset=2 xadvance=8 page=0 chnl=15
+char id=78 x=185 y=9 width=6 height=7 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=79 x=38 y=10 width=7 height=7 xoffset=0 yoffset=2 xadvance=8 page=0 chnl=15
+char id=80 x=0 y=18 width=5 height=7 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=81 x=54 y=10 width=7 height=7 xoffset=0 yoffset=2 xadvance=8 page=0 chnl=15
+char id=82 x=157 y=10 width=6 height=7 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=83 x=108 y=10 width=6 height=7 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=84 x=18 y=18 width=5 height=7 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=85 x=101 y=10 width=6 height=7 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=86 x=70 y=10 width=7 height=7 xoffset=0 yoffset=2 xadvance=8 page=0 chnl=15
+char id=87 x=10 y=10 width=9 height=7 xoffset=0 yoffset=2 xadvance=10 page=0 chnl=15
+char id=88 x=171 y=10 width=6 height=7 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=89 x=78 y=10 width=7 height=7 xoffset=0 yoffset=2 xadvance=8 page=0 chnl=15
+char id=90 x=178 y=9 width=6 height=7 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=15
+char id=91 x=152 y=0 width=3 height=9 xoffset=0 yoffset=2 xadvance=4 page=0 chnl=15
+char id=92 x=180 y=17 width=4 height=7 xoffset=0 yoffset=2 xadvance=4 page=0 chnl=15
+char id=93 x=156 y=0 width=3 height=9 xoffset=0 yoffset=2 xadvance=4 page=0 chnl=15
+char id=94 x=146 y=33 width=6 height=3 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=95 x=36 y=38 width=6 height=1 xoffset=0 yoffset=10 xadvance=7 page=0 chnl=15
+char id=96 x=21 y=39 width=3 height=2 xoffset=0 yoffset=2 xadvance=4 page=0 chnl=15
+char id=97 x=218 y=24 width=5 height=5 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15
+char id=98 x=48 y=18 width=5 height=7 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=99 x=224 y=24 width=5 height=5 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15
+char id=100 x=54 y=18 width=5 height=7 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=101 x=230 y=24 width=5 height=5 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15
+char id=102 x=175 y=18 width=4 height=7 xoffset=0 yoffset=2 xadvance=4 page=0 chnl=15
+char id=103 x=66 y=18 width=5 height=7 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15
+char id=104 x=114 y=18 width=5 height=7 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=15
+char id=105 x=202 y=17 width=2 height=7 xoffset=0 yoffset=2 xadvance=3 page=0 chnl=15
+char id=106 x=164 y=0 width=3 height=9 xoffset=0 yoffset=2 xadvance=3 page=0 chnl=15
+char id=107 x=125 y=18 width=4 height=7 xoffset=0 yoffset=2 xadvance=5 page=0 chnl=15
+char id=108 x=208 y=17 width=2 height=7 xoffset=0 yoffset=2 xadvance=3 page=0 chnl=15
+char id=109 x=179 y=26 width=7 height=5 xoffset=0 yoffset=4 xadvance=8 page=0 chnl=15
+char id=110 x=206 y=25 width=5 height=5 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15
+char id=111 x=212 y=24 width=5 height=5 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15
+char id=112 x=78 y=18 width=5 height=7 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15
+char id=113 x=84 y=18 width=5 height=7 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15
+char id=114 x=10 y=33 width=4 height=5 xoffset=0 yoffset=4 xadvance=4 page=0 chnl=15
+char id=115 x=242 y=24 width=5 height=5 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15
+char id=116 x=150 y=18 width=4 height=7 xoffset=0 yoffset=2 xadvance=4 page=0 chnl=15
+char id=117 x=236 y=24 width=5 height=5 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15
+char id=118 x=194 y=25 width=5 height=5 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15
+char id=119 x=169 y=26 width=9 height=5 xoffset=0 yoffset=4 xadvance=10 page=0 chnl=15
+char id=120 x=187 y=25 width=6 height=5 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15
+char id=121 x=102 y=18 width=5 height=7 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15
+char id=122 x=200 y=25 width=5 height=5 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=15
+char id=123 x=138 y=0 width=4 height=9 xoffset=0 yoffset=2 xadvance=4 page=0 chnl=15
+char id=124 x=171 y=0 width=2 height=9 xoffset=0 yoffset=2 xadvance=3 page=0 chnl=15
+char id=125 x=143 y=0 width=4 height=9 xoffset=0 yoffset=2 xadvance=4 page=0 chnl=15
+char id=126 x=43 y=38 width=5 height=1 xoffset=0 yoffset=5 xadvance=6 page=0 chnl=15
+char id=160 x=221 y=0 width=4 height=8 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=161 x=229 y=17 width=8 height=6 xoffset=0 yoffset=3 xadvance=9 page=0 chnl=15
+char id=162 x=20 y=33 width=4 height=5 xoffset=0 yoffset=4 xadvance=4 page=0 chnl=15
+char id=163 x=115 y=26 width=4 height=6 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=164 x=231 y=0 width=3 height=8 xoffset=-1 yoffset=1 xadvance=2 page=0 chnl=15
+char id=165 x=37 y=33 width=8 height=4 xoffset=0 yoffset=5 xadvance=9 page=0 chnl=15
+char id=166 x=79 y=38 width=3 height=1 xoffset=-1 yoffset=10 xadvance=3 page=0 chnl=15
+char id=167 x=153 y=26 width=3 height=6 xoffset=0 yoffset=3 xadvance=4 page=0 chnl=15
+char id=168 x=139 y=37 width=3 height=1 xoffset=1 yoffset=3 xadvance=4 page=0 chnl=15
+char id=169 x=0 y=26 width=6 height=6 xoffset=0 yoffset=3 xadvance=7 page=0 chnl=15
+char id=170 x=13 y=39 width=3 height=2 xoffset=0 yoffset=5 xadvance=5 page=0 chnl=15
+char id=171 x=28 y=38 width=2 height=2 xoffset=0 yoffset=4 xadvance=3 page=0 chnl=15
+char id=172 x=28 y=33 width=8 height=4 xoffset=0 yoffset=5 xadvance=9 page=0 chnl=15
+char id=173 x=90 y=26 width=4 height=6 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=174 x=238 y=17 width=6 height=6 xoffset=0 yoffset=3 xadvance=7 page=0 chnl=15
+char id=175 x=75 y=38 width=3 height=1 xoffset=-1 yoffset=10 xadvance=3 page=0 chnl=15
+char id=176 x=182 y=32 width=3 height=3 xoffset=0 yoffset=3 xadvance=4 page=0 chnl=15
+char id=177 x=85 y=26 width=4 height=6 xoffset=0 yoffset=5 xadvance=5 page=0 chnl=15
+char id=178 x=135 y=26 width=4 height=6 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=179 x=248 y=23 width=5 height=5 xoffset=0 yoffset=4 xadvance=5 page=0 chnl=15
+char id=180 x=31 y=38 width=2 height=2 xoffset=1 yoffset=2 xadvance=4 page=0 chnl=15
+char id=181 x=64 y=33 width=4 height=4 xoffset=0 yoffset=5 xadvance=4 page=0 chnl=15
+char id=182 x=60 y=26 width=4 height=6 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=183 x=86 y=0 width=5 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15
+char id=184 x=135 y=37 width=3 height=1 xoffset=-1 yoffset=10 xadvance=3 page=0 chnl=15
+char id=185 x=148 y=0 width=3 height=9 xoffset=0 yoffset=2 xadvance=4 page=0 chnl=15
+char id=186 x=49 y=38 width=5 height=1 xoffset=0 yoffset=8 xadvance=5 page=0 chnl=15
+char id=187 x=253 y=29 width=2 height=2 xoffset=0 yoffset=4 xadvance=3 page=0 chnl=15
+char id=188 x=5 y=33 width=4 height=5 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=189 x=74 y=33 width=4 height=4 xoffset=0 yoffset=4 xadvance=5 page=0 chnl=15
+char id=190 x=69 y=33 width=4 height=4 xoffset=0 yoffset=4 xadvance=5 page=0 chnl=15
+char id=191 x=210 y=9 width=5 height=7 xoffset=0 yoffset=2 xadvance=5 page=0 chnl=15
+char id=192 x=177 y=0 width=7 height=8 xoffset=0 yoffset=1 xadvance=7 page=0 chnl=15
+char id=193 x=62 y=0 width=5 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15
+char id=194 x=143 y=37 width=3 height=1 xoffset=0 yoffset=4 xadvance=4 page=0 chnl=15
+char id=195 x=109 y=33 width=4 height=4 xoffset=0 yoffset=5 xadvance=4 page=0 chnl=15
+char id=196 x=203 y=0 width=5 height=8 xoffset=0 yoffset=1 xadvance=6 page=0 chnl=15
+char id=197 x=68 y=0 width=5 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15
+char id=198 x=13 y=26 width=5 height=6 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=199 x=209 y=0 width=5 height=8 xoffset=0 yoffset=3 xadvance=6 page=0 chnl=15
+char id=200 x=165 y=26 width=1 height=6 xoffset=1 yoffset=3 xadvance=4 page=0 chnl=15
+char id=201 x=44 y=0 width=5 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15
+char id=202 x=190 y=31 width=3 height=3 xoffset=0 yoffset=8 xadvance=4 page=0 chnl=15
+char id=203 x=170 y=18 width=4 height=7 xoffset=0 yoffset=2 xadvance=4 page=0 chnl=15
+char id=204 x=226 y=0 width=4 height=8 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=205 x=245 y=16 width=6 height=6 xoffset=0 yoffset=3 xadvance=7 page=0 chnl=15
+char id=206 x=120 y=26 width=4 height=6 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=207 x=11 y=0 width=7 height=9 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=15
+char id=208 x=79 y=33 width=4 height=4 xoffset=0 yoffset=4 xadvance=5 page=0 chnl=15
+char id=209 x=116 y=0 width=5 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15
+char id=210 x=46 y=33 width=5 height=4 xoffset=0 yoffset=4 xadvance=5 page=0 chnl=15
+char id=211 x=125 y=26 width=4 height=6 xoffset=0 yoffset=3 xadvance=4 page=0 chnl=15
+char id=212 x=130 y=26 width=4 height=6 xoffset=0 yoffset=4 xadvance=4 page=0 chnl=15
+char id=213 x=25 y=39 width=2 height=2 xoffset=0 yoffset=5 xadvance=3 page=0 chnl=15
+char id=214 x=197 y=0 width=5 height=8 xoffset=0 yoffset=1 xadvance=6 page=0 chnl=15
+char id=215 x=94 y=33 width=4 height=4 xoffset=0 yoffset=5 xadvance=5 page=0 chnl=15
+char id=216 x=15 y=33 width=4 height=5 xoffset=0 yoffset=4 xadvance=5 page=0 chnl=15
+char id=217 x=118 y=33 width=3 height=4 xoffset=0 yoffset=3 xadvance=4 page=0 chnl=15
+char id=218 x=122 y=33 width=2 height=4 xoffset=0 yoffset=3 xadvance=3 page=0 chnl=15
+char id=219 x=89 y=33 width=4 height=4 xoffset=0 yoffset=3 xadvance=4 page=0 chnl=15
+char id=220 x=191 y=0 width=5 height=8 xoffset=0 yoffset=1 xadvance=6 page=0 chnl=15
+char id=221 x=157 y=26 width=3 height=6 xoffset=0 yoffset=3 xadvance=4 page=0 chnl=15
+char id=222 x=140 y=26 width=4 height=6 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=223 x=60 y=18 width=5 height=7 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=224 x=155 y=18 width=4 height=7 xoffset=0 yoffset=2 xadvance=5 page=0 chnl=15
+char id=225 x=25 y=26 width=4 height=6 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=226 x=6 y=18 width=5 height=7 xoffset=0 yoffset=2 xadvance=5 page=0 chnl=15
+char id=227 x=185 y=17 width=4 height=7 xoffset=0 yoffset=2 xadvance=5 page=0 chnl=15
+char id=228 x=30 y=26 width=4 height=6 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=229 x=130 y=18 width=4 height=7 xoffset=0 yoffset=2 xadvance=5 page=0 chnl=15
+char id=230 x=92 y=0 width=5 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15
+char id=231 x=35 y=26 width=4 height=6 xoffset=0 yoffset=5 xadvance=5 page=0 chnl=15
+char id=232 x=42 y=18 width=5 height=7 xoffset=0 yoffset=2 xadvance=5 page=0 chnl=15
+char id=233 x=40 y=26 width=4 height=6 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=234 x=36 y=18 width=5 height=7 xoffset=0 yoffset=2 xadvance=5 page=0 chnl=15
+char id=235 x=45 y=26 width=4 height=6 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=236 x=199 y=17 width=2 height=7 xoffset=0 yoffset=2 xadvance=2 page=0 chnl=15
+char id=237 x=196 y=17 width=2 height=7 xoffset=0 yoffset=2 xadvance=2 page=0 chnl=15
+char id=238 x=252 y=8 width=3 height=7 xoffset=-1 yoffset=2 xadvance=2 page=0 chnl=15
+char id=239 x=149 y=26 width=3 height=6 xoffset=-1 yoffset=3 xadvance=2 page=0 chnl=15
+char id=240 x=163 y=33 width=4 height=3 xoffset=0 yoffset=5 xadvance=5 page=0 chnl=15
+char id=241 x=140 y=18 width=4 height=7 xoffset=0 yoffset=2 xadvance=5 page=0 chnl=15
+char id=242 x=204 y=9 width=5 height=7 xoffset=0 yoffset=2 xadvance=5 page=0 chnl=15
+char id=243 x=50 y=26 width=4 height=6 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=244 x=234 y=9 width=5 height=7 xoffset=0 yoffset=2 xadvance=5 page=0 chnl=15
+char id=245 x=108 y=18 width=5 height=7 xoffset=0 yoffset=2 xadvance=5 page=0 chnl=15
+char id=246 x=55 y=26 width=4 height=6 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=247 x=80 y=0 width=5 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15
+char id=248 x=74 y=0 width=5 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15
+char id=249 x=198 y=9 width=5 height=7 xoffset=0 yoffset=2 xadvance=5 page=0 chnl=15
+char id=250 x=65 y=26 width=4 height=6 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=251 x=250 y=0 width=5 height=7 xoffset=0 yoffset=2 xadvance=5 page=0 chnl=15
+char id=252 x=70 y=26 width=4 height=6 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=253 x=161 y=26 width=3 height=6 xoffset=0 yoffset=3 xadvance=4 page=0 chnl=15
+char id=254 x=19 y=26 width=5 height=6 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=255 x=56 y=0 width=5 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15
+char id=262 x=150 y=37 width=1 height=1 xoffset=1 yoffset=5 xadvance=3 page=0 chnl=15
+char id=263 x=178 y=32 width=3 height=3 xoffset=0 yoffset=5 xadvance=4 page=0 chnl=15
+char id=268 x=223 y=30 width=4 height=2 xoffset=0 yoffset=3 xadvance=4 page=0 chnl=15
+char id=269 x=186 y=32 width=3 height=3 xoffset=0 yoffset=7 xadvance=4 page=0 chnl=15
+char id=273 x=5 y=39 width=3 height=2 xoffset=1 yoffset=3 xadvance=4 page=0 chnl=15
+char id=286 x=75 y=26 width=4 height=6 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=287 x=80 y=26 width=4 height=6 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=304 x=125 y=33 width=20 height=3 xoffset=0 yoffset=6 xadvance=21 page=0 chnl=15
+char id=305 x=29 y=10 width=8 height=7 xoffset=0 yoffset=2 xadvance=9 page=0 chnl=15
+char id=321 x=131 y=37 width=3 height=1 xoffset=-1 yoffset=10 xadvance=5 page=0 chnl=15
+char id=322 x=111 y=38 width=3 height=1 xoffset=-1 yoffset=10 xadvance=5 page=0 chnl=15
+char id=338 x=34 y=38 width=1 height=2 xoffset=0 yoffset=5 xadvance=3 page=0 chnl=15
+char id=339 x=252 y=16 width=3 height=6 xoffset=0 yoffset=3 xadvance=4 page=0 chnl=15
+char id=350 x=254 y=23 width=1 height=3 xoffset=0 yoffset=6 xadvance=2 page=0 chnl=15
+char id=351 x=248 y=29 width=4 height=2 xoffset=1 yoffset=3 xadvance=5 page=0 chnl=15
+char id=352 x=95 y=38 width=3 height=1 xoffset=-1 yoffset=10 xadvance=4 page=0 chnl=15
+char id=353 x=87 y=38 width=3 height=1 xoffset=-1 yoffset=10 xadvance=4 page=0 chnl=15
+char id=376 x=168 y=0 width=2 height=9 xoffset=0 yoffset=0 xadvance=2 page=0 chnl=15
+char id=381 x=91 y=38 width=3 height=1 xoffset=-1 yoffset=10 xadvance=3 page=0 chnl=15
+char id=382 x=107 y=38 width=3 height=1 xoffset=-1 yoffset=10 xadvance=3 page=0 chnl=15
+char id=402 x=60 y=38 width=4 height=1 xoffset=0 yoffset=5 xadvance=4 page=0 chnl=15
+char id=710 x=20 y=10 width=8 height=7 xoffset=0 yoffset=2 xadvance=9 page=0 chnl=15
+char id=711 x=160 y=18 width=4 height=7 xoffset=0 yoffset=2 xadvance=5 page=0 chnl=15
+char id=713 x=123 y=38 width=3 height=1 xoffset=-1 yoffset=10 xadvance=3 page=0 chnl=15
+char id=728 x=7 y=26 width=5 height=6 xoffset=0 yoffset=3 xadvance=6 page=0 chnl=15
+char id=729 x=145 y=26 width=3 height=6 xoffset=0 yoffset=3 xadvance=4 page=0 chnl=15
+char id=730 x=103 y=38 width=3 height=1 xoffset=-1 yoffset=10 xadvance=3 page=0 chnl=15
+char id=731 x=19 y=0 width=6 height=9 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=15
+char id=732 x=239 y=0 width=10 height=7 xoffset=0 yoffset=2 xadvance=10 page=0 chnl=15
+char id=733 x=119 y=38 width=3 height=1 xoffset=-1 yoffset=10 xadvance=3 page=0 chnl=15
+char id=916 x=243 y=30 width=4 height=2 xoffset=0 yoffset=3 xadvance=4 page=0 chnl=15
+char id=937 x=127 y=37 width=3 height=1 xoffset=-1 yoffset=10 xadvance=3 page=0 chnl=15
+char id=956 x=104 y=33 width=4 height=4 xoffset=0 yoffset=5 xadvance=4 page=0 chnl=15
+char id=960 x=235 y=0 width=3 height=8 xoffset=1 yoffset=2 xadvance=5 page=0 chnl=15
+char id=8208 x=65 y=38 width=4 height=1 xoffset=0 yoffset=6 xadvance=4 page=0 chnl=15
+char id=8211 x=254 y=27 width=1 height=1 xoffset=1 yoffset=5 xadvance=4 page=0 chnl=15
+char id=8212 x=200 y=31 width=2 height=3 xoffset=0 yoffset=8 xadvance=3 page=0 chnl=15
+char id=8216 x=32 y=0 width=5 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15
+char id=8217 x=26 y=0 width=5 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15
+char id=8218 x=50 y=0 width=5 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15
+char id=8220 x=173 y=32 width=4 height=3 xoffset=0 yoffset=8 xadvance=4 page=0 chnl=15
+char id=8221 x=220 y=17 width=8 height=6 xoffset=0 yoffset=3 xadvance=9 page=0 chnl=15
+char id=8222 x=17 y=39 width=3 height=2 xoffset=1 yoffset=3 xadvance=4 page=0 chnl=15
+char id=8224 x=114 y=33 width=3 height=4 xoffset=0 yoffset=4 xadvance=4 page=0 chnl=15
+char id=8225 x=38 y=0 width=5 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15
+char id=8226 x=9 y=39 width=3 height=2 xoffset=0 yoffset=5 xadvance=4 page=0 chnl=15
+char id=8230 x=84 y=33 width=4 height=4 xoffset=0 yoffset=4 xadvance=5 page=0 chnl=15
+char id=8240 x=228 y=30 width=4 height=2 xoffset=0 yoffset=3 xadvance=4 page=0 chnl=15
+char id=8249 x=174 y=0 width=2 height=9 xoffset=0 yoffset=0 xadvance=2 page=0 chnl=15
+char id=8250 x=122 y=0 width=5 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15
+char id=8260 x=160 y=0 width=3 height=9 xoffset=-1 yoffset=0 xadvance=2 page=0 chnl=15
+char id=8355 x=145 y=18 width=4 height=7 xoffset=0 yoffset=2 xadvance=4 page=0 chnl=15
+char id=8482 x=203 y=31 width=7 height=2 xoffset=0 yoffset=3 xadvance=8 page=0 chnl=15
+char id=8486 x=83 y=38 width=3 height=1 xoffset=-1 yoffset=10 xadvance=3 page=0 chnl=15
+char id=8706 x=95 y=26 width=4 height=6 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=8710 x=233 y=30 width=4 height=2 xoffset=0 yoffset=3 xadvance=4 page=0 chnl=15
+char id=8719 x=153 y=33 width=4 height=3 xoffset=0 yoffset=5 xadvance=5 page=0 chnl=15
+char id=8721 x=167 y=26 width=1 height=6 xoffset=1 yoffset=3 xadvance=4 page=0 chnl=15
+char id=8722 x=100 y=26 width=4 height=6 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=8729 x=110 y=0 width=5 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15
+char id=8730 x=99 y=38 width=3 height=1 xoffset=0 yoffset=5 xadvance=4 page=0 chnl=15
+char id=8734 x=0 y=33 width=4 height=5 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=8747 x=217 y=30 width=5 height=2 xoffset=0 yoffset=5 xadvance=5 page=0 chnl=15
+char id=8776 x=238 y=30 width=4 height=2 xoffset=0 yoffset=3 xadvance=4 page=0 chnl=15
+char id=8800 x=211 y=17 width=8 height=6 xoffset=0 yoffset=3 xadvance=9 page=0 chnl=15
+char id=8804 x=105 y=26 width=4 height=6 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=8805 x=110 y=26 width=4 height=6 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=15
+char id=8946 x=0 y=39 width=4 height=2 xoffset=0 yoffset=3 xadvance=4 page=0 chnl=15
+char id=9674 x=215 y=0 width=5 height=8 xoffset=0 yoffset=1 xadvance=6 page=0 chnl=15
+char id=61440 x=70 y=38 width=4 height=1 xoffset=0 yoffset=5 xadvance=4 page=0 chnl=15
+char id=61441 x=104 y=0 width=5 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15
+char id=61442 x=98 y=0 width=5 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15
diff --git a/src/love/fonts/pixel_small_0.png b/src/love/fonts/pixel_small_0.png
new file mode 100644
index 00000000..35c8d629
Binary files /dev/null and b/src/love/fonts/pixel_small_0.png differ
diff --git a/src/love/images/dds/rating.dds b/src/love/images/dds/rating.dds
index b9546f82..6677a259 100644
Binary files a/src/love/images/dds/rating.dds and b/src/love/images/dds/rating.dds differ
diff --git a/src/love/images/dds/week5/boyfriend.dds b/src/love/images/dds/week5/boyfriend.dds
index 77f68ff1..598385bf 100644
Binary files a/src/love/images/dds/week5/boyfriend.dds and b/src/love/images/dds/week5/boyfriend.dds differ
diff --git a/src/love/images/dds/week5/girlfriend.dds b/src/love/images/dds/week5/girlfriend.dds
index caa9ff70..661da1bd 100644
Binary files a/src/love/images/dds/week5/girlfriend.dds and b/src/love/images/dds/week5/girlfriend.dds differ
diff --git a/src/love/images/dds/week5/monster.dds b/src/love/images/dds/week5/monster.dds
index 121b4363..c8263e75 100644
Binary files a/src/love/images/dds/week5/monster.dds and b/src/love/images/dds/week5/monster.dds differ
diff --git a/src/love/images/png/boyfriend.png b/src/love/images/png/boyfriend.png
index 9e854feb..236975ea 100644
Binary files a/src/love/images/png/boyfriend.png and b/src/love/images/png/boyfriend.png differ
diff --git a/src/love/images/png/girlfriend.png b/src/love/images/png/girlfriend.png
index 5a3c3b3d..e52cb815 100644
Binary files a/src/love/images/png/girlfriend.png and b/src/love/images/png/girlfriend.png differ
diff --git a/src/love/images/png/icons.png b/src/love/images/png/icons.png
index 1821e7c4..870a077a 100644
Binary files a/src/love/images/png/icons.png and b/src/love/images/png/icons.png differ
diff --git a/src/love/images/png/lol.png b/src/love/images/png/lol.png
index 7154ea12..26143651 100644
Binary files a/src/love/images/png/lol.png and b/src/love/images/png/lol.png differ
diff --git a/src/love/images/png/menu/girlfriend-title.png b/src/love/images/png/menu/girlfriend-title.png
index c271e066..8fc0e771 100644
Binary files a/src/love/images/png/menu/girlfriend-title.png and b/src/love/images/png/menu/girlfriend-title.png differ
diff --git a/src/love/images/png/menu/logo.png b/src/love/images/png/menu/logo.png
index 1c1c1a6f..93ec77e8 100644
Binary files a/src/love/images/png/menu/logo.png and b/src/love/images/png/menu/logo.png differ
diff --git a/src/love/images/png/menu/title-bg.png b/src/love/images/png/menu/title-bg.png
index 3a5f4b8b..7ef8b28c 100644
Binary files a/src/love/images/png/menu/title-bg.png and b/src/love/images/png/menu/title-bg.png differ
diff --git a/src/love/images/png/notes.png b/src/love/images/png/notes.png
index 39d44b86..116f3409 100644
Binary files a/src/love/images/png/notes.png and b/src/love/images/png/notes.png differ
diff --git a/src/love/images/png/numbers.png b/src/love/images/png/numbers.png
index c3cb0949..b00885b5 100644
Binary files a/src/love/images/png/numbers.png and b/src/love/images/png/numbers.png differ
diff --git a/src/love/images/png/pico.png b/src/love/images/png/pico.png
index 53f81cd5..f11b361f 100644
Binary files a/src/love/images/png/pico.png and b/src/love/images/png/pico.png differ
diff --git a/src/love/images/png/pixel/boyfriend-dead.png b/src/love/images/png/pixel/boyfriend-dead.png
new file mode 100644
index 00000000..9b442987
Binary files /dev/null and b/src/love/images/png/pixel/boyfriend-dead.png differ
diff --git a/src/love/images/png/pixel/boyfriend.png b/src/love/images/png/pixel/boyfriend.png
index 4c6cb1eb..4df1a13a 100644
Binary files a/src/love/images/png/pixel/boyfriend.png and b/src/love/images/png/pixel/boyfriend.png differ
diff --git a/src/love/images/png/pixel/girlfriend.png b/src/love/images/png/pixel/girlfriend.png
index b43b3f63..d966b5d5 100644
Binary files a/src/love/images/png/pixel/girlfriend.png and b/src/love/images/png/pixel/girlfriend.png differ
diff --git a/src/love/images/png/pixel/icons.png b/src/love/images/png/pixel/icons.png
index fefd8f98..92c9b6ab 100644
Binary files a/src/love/images/png/pixel/icons.png and b/src/love/images/png/pixel/icons.png differ
diff --git a/src/love/images/png/pixel/notes.png b/src/love/images/png/pixel/notes.png
index 59484c7c..46f76dbc 100644
Binary files a/src/love/images/png/pixel/notes.png and b/src/love/images/png/pixel/notes.png differ
diff --git a/src/love/images/png/pixel/numbers.png b/src/love/images/png/pixel/numbers.png
new file mode 100644
index 00000000..574c4353
Binary files /dev/null and b/src/love/images/png/pixel/numbers.png differ
diff --git a/src/love/images/png/pixel/rating.png b/src/love/images/png/pixel/rating.png
new file mode 100644
index 00000000..d4a8e20a
Binary files /dev/null and b/src/love/images/png/pixel/rating.png differ
diff --git a/src/love/images/png/rating.png b/src/love/images/png/rating.png
index fc7e9444..0ad6adda 100644
Binary files a/src/love/images/png/rating.png and b/src/love/images/png/rating.png differ
diff --git a/src/love/images/png/week1/curtains.png b/src/love/images/png/week1/curtains.png
index e077a080..75352b61 100644
Binary files a/src/love/images/png/week1/curtains.png and b/src/love/images/png/week1/curtains.png differ
diff --git a/src/love/images/png/week1/daddy-dearest.png b/src/love/images/png/week1/daddy-dearest.png
index d0073451..c52516ec 100644
Binary files a/src/love/images/png/week1/daddy-dearest.png and b/src/love/images/png/week1/daddy-dearest.png differ
diff --git a/src/love/images/png/week1/stage-back.png b/src/love/images/png/week1/stage-back.png
index 927d2aed..3278777f 100644
Binary files a/src/love/images/png/week1/stage-back.png and b/src/love/images/png/week1/stage-back.png differ
diff --git a/src/love/images/png/week1/stage-front.png b/src/love/images/png/week1/stage-front.png
index 735f6728..c6dc6baa 100644
Binary files a/src/love/images/png/week1/stage-front.png and b/src/love/images/png/week1/stage-front.png differ
diff --git a/src/love/images/png/week2/haunted-house.png b/src/love/images/png/week2/haunted-house.png
index 34fb0713..d2881046 100644
Binary files a/src/love/images/png/week2/haunted-house.png and b/src/love/images/png/week2/haunted-house.png differ
diff --git a/src/love/images/png/week2/skid-and-pump.png b/src/love/images/png/week2/skid-and-pump.png
index 11baf280..ce6df6fc 100644
Binary files a/src/love/images/png/week2/skid-and-pump.png and b/src/love/images/png/week2/skid-and-pump.png differ
diff --git a/src/love/images/png/week3/behind-train.png b/src/love/images/png/week3/behind-train.png
index dc0fb597..e06449ac 100644
Binary files a/src/love/images/png/week3/behind-train.png and b/src/love/images/png/week3/behind-train.png differ
diff --git a/src/love/images/png/week3/city-windows.png b/src/love/images/png/week3/city-windows.png
index c93afcd3..cb63f5c2 100644
Binary files a/src/love/images/png/week3/city-windows.png and b/src/love/images/png/week3/city-windows.png differ
diff --git a/src/love/images/png/week3/city.png b/src/love/images/png/week3/city.png
index b002c7b2..bf9ba802 100644
Binary files a/src/love/images/png/week3/city.png and b/src/love/images/png/week3/city.png differ
diff --git a/src/love/images/png/week3/sky.png b/src/love/images/png/week3/sky.png
index 73655a50..421b40bb 100644
Binary files a/src/love/images/png/week3/sky.png and b/src/love/images/png/week3/sky.png differ
diff --git a/src/love/images/png/week3/street.png b/src/love/images/png/week3/street.png
index 15636546..d8ded2d6 100644
Binary files a/src/love/images/png/week3/street.png and b/src/love/images/png/week3/street.png differ
diff --git a/src/love/images/png/week4/bg-limo.png b/src/love/images/png/week4/bg-limo.png
index 338f4d46..b7a01e77 100644
Binary files a/src/love/images/png/week4/bg-limo.png and b/src/love/images/png/week4/bg-limo.png differ
diff --git a/src/love/images/png/week4/boyfriend.png b/src/love/images/png/week4/boyfriend.png
index 5e2b7088..ecc0b626 100644
Binary files a/src/love/images/png/week4/boyfriend.png and b/src/love/images/png/week4/boyfriend.png differ
diff --git a/src/love/images/png/week4/girlfriend.png b/src/love/images/png/week4/girlfriend.png
index 7a2bb74d..50c57cb9 100644
Binary files a/src/love/images/png/week4/girlfriend.png and b/src/love/images/png/week4/girlfriend.png differ
diff --git a/src/love/images/png/week4/limo-dancer.png b/src/love/images/png/week4/limo-dancer.png
index a4c1f819..92274a74 100644
Binary files a/src/love/images/png/week4/limo-dancer.png and b/src/love/images/png/week4/limo-dancer.png differ
diff --git a/src/love/images/png/week4/limo.png b/src/love/images/png/week4/limo.png
index 2e82009d..6d6a1cb8 100644
Binary files a/src/love/images/png/week4/limo.png and b/src/love/images/png/week4/limo.png differ
diff --git a/src/love/images/png/week4/mommy-mearest.png b/src/love/images/png/week4/mommy-mearest.png
index 8b334f11..d397f247 100644
Binary files a/src/love/images/png/week4/mommy-mearest.png and b/src/love/images/png/week4/mommy-mearest.png differ
diff --git a/src/love/images/png/week4/sunset.png b/src/love/images/png/week4/sunset.png
index 3808ef0c..62f2c14d 100644
Binary files a/src/love/images/png/week4/sunset.png and b/src/love/images/png/week4/sunset.png differ
diff --git a/src/love/images/png/week5/bottom-bop.png b/src/love/images/png/week5/bottom-bop.png
index e2c83b1c..7ea3003b 100644
Binary files a/src/love/images/png/week5/bottom-bop.png and b/src/love/images/png/week5/bottom-bop.png differ
diff --git a/src/love/images/png/week5/boyfriend.png b/src/love/images/png/week5/boyfriend.png
index 90f6f61d..6ee113cf 100644
Binary files a/src/love/images/png/week5/boyfriend.png and b/src/love/images/png/week5/boyfriend.png differ
diff --git a/src/love/images/png/week5/christmas-tree.png b/src/love/images/png/week5/christmas-tree.png
index d71f569c..ffdbeaf4 100644
Binary files a/src/love/images/png/week5/christmas-tree.png and b/src/love/images/png/week5/christmas-tree.png differ
diff --git a/src/love/images/png/week5/christmas-wall.png b/src/love/images/png/week5/christmas-wall.png
index 4c6d4537..6a443c8a 100644
Binary files a/src/love/images/png/week5/christmas-wall.png and b/src/love/images/png/week5/christmas-wall.png differ
diff --git a/src/love/images/png/week5/dearest-duo.png b/src/love/images/png/week5/dearest-duo.png
index b4410664..f26cf3c0 100644
Binary files a/src/love/images/png/week5/dearest-duo.png and b/src/love/images/png/week5/dearest-duo.png differ
diff --git a/src/love/images/png/week5/escalator.png b/src/love/images/png/week5/escalator.png
index 8e1d8806..cb1884ee 100644
Binary files a/src/love/images/png/week5/escalator.png and b/src/love/images/png/week5/escalator.png differ
diff --git a/src/love/images/png/week5/evil-bg.png b/src/love/images/png/week5/evil-bg.png
index 65ba5b1b..6278eeda 100644
Binary files a/src/love/images/png/week5/evil-bg.png and b/src/love/images/png/week5/evil-bg.png differ
diff --git a/src/love/images/png/week5/evil-snow.png b/src/love/images/png/week5/evil-snow.png
index 9b4d96e4..0f96080a 100644
Binary files a/src/love/images/png/week5/evil-snow.png and b/src/love/images/png/week5/evil-snow.png differ
diff --git a/src/love/images/png/week5/evil-tree.png b/src/love/images/png/week5/evil-tree.png
index 58c681ad..470cf046 100644
Binary files a/src/love/images/png/week5/evil-tree.png and b/src/love/images/png/week5/evil-tree.png differ
diff --git a/src/love/images/png/week5/girlfriend.png b/src/love/images/png/week5/girlfriend.png
index 79ff531d..3f3aff7f 100644
Binary files a/src/love/images/png/week5/girlfriend.png and b/src/love/images/png/week5/girlfriend.png differ
diff --git a/src/love/images/png/week5/monster.png b/src/love/images/png/week5/monster.png
index db7c81da..e823e54a 100644
Binary files a/src/love/images/png/week5/monster.png and b/src/love/images/png/week5/monster.png differ
diff --git a/src/love/images/png/week5/santa.png b/src/love/images/png/week5/santa.png
index 472b33e5..b65ea0fc 100644
Binary files a/src/love/images/png/week5/santa.png and b/src/love/images/png/week5/santa.png differ
diff --git a/src/love/images/png/week5/snow.png b/src/love/images/png/week5/snow.png
index baba7d20..5bea2fce 100644
Binary files a/src/love/images/png/week5/snow.png and b/src/love/images/png/week5/snow.png differ
diff --git a/src/love/images/png/week5/top-bop.png b/src/love/images/png/week5/top-bop.png
index a56e9cd3..e043a7ec 100644
Binary files a/src/love/images/png/week5/top-bop.png and b/src/love/images/png/week5/top-bop.png differ
diff --git a/src/love/images/png/week5/walls.png b/src/love/images/png/week5/walls.png
index 87f33472..e66632dc 100644
Binary files a/src/love/images/png/week5/walls.png and b/src/love/images/png/week5/walls.png differ
diff --git a/src/love/images/png/week6/evil-school.png b/src/love/images/png/week6/evil-school.png
index 9a09ca9c..e80d0269 100644
Binary files a/src/love/images/png/week6/evil-school.png and b/src/love/images/png/week6/evil-school.png differ
diff --git a/src/love/images/png/week6/freaks.png b/src/love/images/png/week6/freaks.png
new file mode 100644
index 00000000..1e026220
Binary files /dev/null and b/src/love/images/png/week6/freaks.png differ
diff --git a/src/love/images/png/week6/petals.png b/src/love/images/png/week6/petals.png
new file mode 100644
index 00000000..e00c133c
Binary files /dev/null and b/src/love/images/png/week6/petals.png differ
diff --git a/src/love/images/png/week6/school.png b/src/love/images/png/week6/school.png
index 413eb55d..4c199d38 100644
Binary files a/src/love/images/png/week6/school.png and b/src/love/images/png/week6/school.png differ
diff --git a/src/love/images/png/week6/senpai.png b/src/love/images/png/week6/senpai.png
index 2f14de1d..c0c2100c 100644
Binary files a/src/love/images/png/week6/senpai.png and b/src/love/images/png/week6/senpai.png differ
diff --git a/src/love/images/png/week6/sky.png b/src/love/images/png/week6/sky.png
index f3e2d6ac..b6480717 100644
Binary files a/src/love/images/png/week6/sky.png and b/src/love/images/png/week6/sky.png differ
diff --git a/src/love/images/png/week6/spirit.png b/src/love/images/png/week6/spirit.png
index ced6935d..1f0c4b4e 100644
Binary files a/src/love/images/png/week6/spirit.png and b/src/love/images/png/week6/spirit.png differ
diff --git a/src/love/images/png/week6/street.png b/src/love/images/png/week6/street.png
index 85a84545..0e86e7aa 100644
Binary files a/src/love/images/png/week6/street.png and b/src/love/images/png/week6/street.png differ
diff --git a/src/love/images/png/week6/trees-back.png b/src/love/images/png/week6/trees-back.png
index 1f83b58d..87b74f12 100644
Binary files a/src/love/images/png/week6/trees-back.png and b/src/love/images/png/week6/trees-back.png differ
diff --git a/src/love/images/png/week6/trees.png b/src/love/images/png/week6/trees.png
index 169bc51b..8b631f51 100644
Binary files a/src/love/images/png/week6/trees.png and b/src/love/images/png/week6/trees.png differ
diff --git a/src/love/main.lua b/src/love/main.lua
index 5f4e486e..59464c90 100644
--- a/src/love/main.lua
+++ b/src/love/main.lua
@@ -182,6 +182,9 @@ settingsVer=3
0 -- Boyfriend
}
+ gameOver = false
+ storyMode = false
+
cam = {x = 0, y = 0, sizeX = 0.9, sizeY = 0.9}
camScale = {x = 0.9, y = 0.9}
uiScale = {x = 0.7, y = 0.7}
@@ -216,9 +219,13 @@ function love.update(dt)
if status.getNoResize() then
Gamestate.update(dt)
else
+ love.graphics.setFont(font)
graphics.screenBase(lovesize.getWidth(), lovesize.getHeight())
+ graphics.setColor(1, 1, 1) -- Fade effect on
Gamestate.update(dt)
+ love.graphics.setColor(1, 1, 1) -- Fade effect off
graphics.screenBase(love.graphics.getWidth(), love.graphics.getHeight())
+ love.graphics.setFont(font)
end
Timer.update(dt)
@@ -226,11 +233,11 @@ end
function love.draw()
love.graphics.setFont(font)
-
if status.getNoResize() then
graphics.setColor(1, 1, 1) -- Fade effect on
Gamestate.draw()
love.graphics.setColor(1, 1, 1) -- Fade effect off
+ love.graphics.setFont(font)
if status.getLoading() then
love.graphics.print("Loading...", graphics.getWidth() - 175, graphics.getHeight() - 50)
@@ -241,6 +248,7 @@ function love.draw()
graphics.setColor(1, 1, 1) -- Fade effect on
Gamestate.draw()
love.graphics.setColor(1, 1, 1) -- Fade effect off
+ love.graphics.setFont(font)
if status.getLoading() then
love.graphics.print("Loading...", lovesize.getWidth() - 175, lovesize.getHeight() - 50)
diff --git a/src/love/menu.lua b/src/love/menu.lua
index 2e39d99d..18d46746 100644
--- a/src/love/menu.lua
+++ b/src/love/menu.lua
@@ -17,6 +17,8 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
------------------------------------------------------------------------------]]
+local menuState, songNum, songAppend
+
local titleBG = graphics.newImage(love.graphics.newImage(graphics.imagePath("menu/title-bg")))
local logo = graphics.newImage(love.graphics.newImage(graphics.imagePath("menu/logo")))
@@ -83,7 +85,7 @@ girlfriendTitle.x, girlfriendTitle.y = 300, -75
music:setLooping(true)
return {
- enter = function(self)
+ enter = function(self, previous)
gameOver = false
storyMode = false
@@ -169,7 +171,7 @@ return {
storyMode = true
end
- Gamestate.switch(weekData[weekNum])
+ Gamestate.switch(weekData[weekNum], songNum, songAppend)
status.setLoading(false)
end
diff --git a/src/love/modules/graphics.lua b/src/love/modules/graphics.lua
index 7d8b6871..65cc26a5 100644
--- a/src/love/modules/graphics.lua
+++ b/src/love/modules/graphics.lua
@@ -52,9 +52,11 @@ return {
return imageType
end,
- newImage = function(imageData)
+ newImage = function(imageData, optionsTable)
local image, width, height
+ local options
+
local object = {
x = 0,
y = 0,
@@ -77,6 +79,14 @@ return {
end,
draw = function(self)
+ local x = self.x
+ local y = self.y
+
+ if options and options.floored then
+ x = math.floor(x)
+ y = math.floor(y)
+ end
+
love.graphics.draw(
image,
self.x,
@@ -84,8 +94,8 @@ return {
self.orientation,
self.sizeX,
self.sizeY,
- width / 2 + self.offsetX,
- height / 2 + self.offsetY,
+ math.floor(width / 2) + self.offsetX,
+ math.floor(height / 2) + self.offsetY,
self.shearX,
self.shearY
)
@@ -94,10 +104,12 @@ return {
object:setImage(imageData)
+ options = optionsTable
+
return object
end,
- newSprite = function(imageData, frameData, animData, animName, loopAnim)
+ newSprite = function(imageData, frameData, animData, animName, loopAnim, optionsTable)
local sheet, sheetWidth, sheetHeight
local frames = {}
@@ -115,6 +127,8 @@ return {
local isAnimated
local isLooped
+ local options
+
local object = {
x = 0,
y = 0,
@@ -149,6 +163,9 @@ return {
isAnimated = true
end,
+ getAnims = function(self)
+ return anims
+ end,
getAnimName = function(self)
return anim.name
end,
@@ -162,182 +179,11 @@ return {
return isLooped
end,
- update = function(self, dt)
- if isAnimated then
- frame = frame + anim.speed * dt
- end
-
- if isAnimated and frame > anim.stop then
- if isLooped then
- frame = anim.start
- else
- isAnimated = false
- end
- end
- end,
- draw = function(self)
- local flooredFrame = math.floor(frame)
-
- if flooredFrame <= anim.stop then
- local width, height
-
- if frameData[flooredFrame].offsetWidth == 0 then
- width = frameData[flooredFrame].width / 2
- else
- width = frameData[flooredFrame].offsetWidth / 2 + frameData[flooredFrame].offsetX
- end
- if frameData[flooredFrame].offsetHeight == 0 then
- height = frameData[flooredFrame].height / 2
- else
- height = frameData[flooredFrame].offsetHeight / 2 + frameData[flooredFrame].offsetY
- end
-
- love.graphics.draw(
- sheet,
- frames[flooredFrame],
- self.x,
- self.y,
- self.orientation,
- self.sizeX,
- self.sizeY,
- width + anim.offsetX + self.offsetX,
- height + anim.offsetY + self.offsetY,
- self.shearX,
- self.shearY
- )
- end
- end
- }
-
- object:setSheet(imageData)
-
- for i = 1, #frameData do
- table.insert(
- frames,
- love.graphics.newQuad(
- frameData[i].x,
- frameData[i].y,
- frameData[i].width,
- frameData[i].height,
- sheetWidth,
- sheetHeight
- )
- )
- end
-
- object:animate(animName, loopAnim)
-
- return object
- end,
-
- newPixelImage = function(imageData)
- local image, width, height
-
- local object = {
- x = 0,
- y = 0,
- orientation = 0,
- sizeX = 1,
- sizeY = 1,
- offsetX = 0,
- offsetY = 0,
- shearX = 0,
- shearY = 0,
-
- setImage = function(self, imageData)
- image = imageData
- width = image:getWidth()
- height = image:getHeight()
+ setOptions = function(self, optionsTable)
+ options = optionsTable
end,
-
- getImage = function(self)
- return image
- end,
-
- draw = function(self)
- love.graphics.draw(
- image,
- self.x + 0.5,
- self.y + 0.5,
- self.orientation,
- self.sizeX,
- self.sizeY,
- width / 2 + self.offsetX,
- height / 2 + self.offsetY,
- self.shearX,
- self.shearY
- )
- end
- }
-
- object:setImage(imageData)
-
- return object
- end,
-
- newPixelSprite = function(imageData, frameData, animData, animName, loopAnim)
- local sheet, sheetWidth, sheetHeight
-
- local frames = {}
- local frame
- local anims = animData
- local anim = {
- name = nil,
- start = nil,
- stop = nil,
- speed = nil,
- offsetX = nil,
- offsetY = nil
- }
-
- local isAnimated
- local isLooped
-
- local object = {
- x = 0,
- y = 0,
- orientation = 0,
- sizeX = 1,
- sizeY = 1,
- offsetX = 0,
- offsetY = 0,
- shearX = 0,
- shearY = 0,
-
- setSheet = function(self, imageData)
- sheet = imageData
- sheetWidth = sheet:getWidth()
- sheetHeight = sheet:getHeight()
- end,
-
- getSheet = function(self)
- return sheet
- end,
-
- animate = function(self, animName, loopAnim)
- anim.name = animName
- anim.start = anims[animName].start
- anim.stop = anims[animName].stop
- anim.speed = anims[animName].speed
- anim.offsetX = anims[animName].offsetX
- anim.offsetY = anims[animName].offsetY
-
- frame = anim.start
- isLooped = loopAnim
-
- isAnimated = true
- end,
- getAnimName = function(self)
- return anim.name
- end,
- setAnimSpeed = function(self, speed)
- anim.speed = speed
- end,
- isAnimated = function(self)
- return isAnimated
- end,
- isLooped = function(self)
- return isLooped
+ getOptions = function(self)
+ return options
end,
update = function(self, dt)
@@ -357,24 +203,41 @@ return {
local flooredFrame = math.floor(frame)
if flooredFrame <= anim.stop then
- local width, height
-
- if frameData[flooredFrame].offsetWidth == 0 then
- width = frameData[flooredFrame].width / 2
- else
- width = frameData[flooredFrame].offsetWidth / 2 + frameData[flooredFrame].offsetX
+ local x = self.x
+ local y = self.y
+ local width
+ local height
+
+ if options and options.floored then
+ x = math.floor(x)
+ y = math.floor(y)
end
- if frameData[flooredFrame].offsetHeight == 0 then
- height = frameData[flooredFrame].height / 2
+
+ if options and options.noOffset then
+ if frameData[flooredFrame].offsetWidth ~= 0 then
+ width = frameData[flooredFrame].offsetX
+ end
+ if frameData[flooredFrame].offsetHeight ~= 0 then
+ height = frameData[flooredFrame].offsetY
+ end
else
- height = frameData[flooredFrame].offsetHeight / 2 + frameData[flooredFrame].offsetY
+ if frameData[flooredFrame].offsetWidth == 0 then
+ width = math.floor(frameData[flooredFrame].width / 2)
+ else
+ width = math.floor(frameData[flooredFrame].offsetWidth / 2) + frameData[flooredFrame].offsetX
+ end
+ if frameData[flooredFrame].offsetHeight == 0 then
+ height = math.floor(frameData[flooredFrame].height / 2)
+ else
+ height = math.floor(frameData[flooredFrame].offsetHeight / 2) + frameData[flooredFrame].offsetY
+ end
end
love.graphics.draw(
sheet,
frames[flooredFrame],
- self.x + 0.5,
- self.y + 0.5,
+ x,
+ y,
self.orientation,
self.sizeX,
self.sizeY,
@@ -405,6 +268,8 @@ return {
object:animate(animName, loopAnim)
+ options = optionsTable
+
return object
end,
diff --git a/src/love/sounds/miss1.ogg b/src/love/sounds/miss1.ogg
index b8bfc8ea..b91c1cf2 100644
Binary files a/src/love/sounds/miss1.ogg and b/src/love/sounds/miss1.ogg differ
diff --git a/src/love/sounds/miss2.ogg b/src/love/sounds/miss2.ogg
index c38c4849..b6224361 100644
Binary files a/src/love/sounds/miss2.ogg and b/src/love/sounds/miss2.ogg differ
diff --git a/src/love/sounds/miss3.ogg b/src/love/sounds/miss3.ogg
index 59506db6..0a91a212 100644
Binary files a/src/love/sounds/miss3.ogg and b/src/love/sounds/miss3.ogg differ
diff --git a/src/love/sounds/pixel/death.ogg b/src/love/sounds/pixel/death.ogg
new file mode 100644
index 00000000..f07a2719
Binary files /dev/null and b/src/love/sounds/pixel/death.ogg differ
diff --git a/src/love/sounds/pixel/miss1.ogg b/src/love/sounds/pixel/miss1.ogg
new file mode 100644
index 00000000..2171e90b
Binary files /dev/null and b/src/love/sounds/pixel/miss1.ogg differ
diff --git a/src/love/sounds/pixel/miss2.ogg b/src/love/sounds/pixel/miss2.ogg
new file mode 100644
index 00000000..df387958
Binary files /dev/null and b/src/love/sounds/pixel/miss2.ogg differ
diff --git a/src/love/sounds/pixel/miss3.ogg b/src/love/sounds/pixel/miss3.ogg
new file mode 100644
index 00000000..39778f74
Binary files /dev/null and b/src/love/sounds/pixel/miss3.ogg differ
diff --git a/src/love/sprites/pixel/boyfriend-dead.lua b/src/love/sprites/pixel/boyfriend-dead.lua
new file mode 100644
index 00000000..17fa7bf6
--- /dev/null
+++ b/src/love/sprites/pixel/boyfriend-dead.lua
@@ -0,0 +1,158 @@
+--[[----------------------------------------------------------------------------
+This file is part of Friday Night Funkin' Rewritten
+
+Copyright (C) 2021 HTV04
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+------------------------------------------------------------------------------]]
+
+return graphics.newSprite(
+ love.graphics.newImage(graphics.imagePath("pixel/boyfriend-dead")),
+ -- Automatically generated from bfPixelsDEAD.xml
+ {
+ {x = 0, y = 0, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 1: BF Dies pixel0000
+ {x = 100, y = 0, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 2: BF Dies pixel0001
+ {x = 200, y = 0, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 3: BF Dies pixel0002
+ {x = 300, y = 0, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 4: BF Dies pixel0003
+ {x = 300, y = 0, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 5: BF Dies pixel0004
+ {x = 400, y = 0, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 6: BF Dies pixel0005
+ {x = 400, y = 0, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 7: BF Dies pixel0006
+ {x = 500, y = 0, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 8: BF Dies pixel0007
+ {x = 500, y = 0, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 9: BF Dies pixel0008
+ {x = 500, y = 0, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 10: BF Dies pixel0009
+ {x = 500, y = 0, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 11: BF Dies pixel0010
+ {x = 500, y = 0, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 12: BF Dies pixel0011
+ {x = 500, y = 0, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 13: BF Dies pixel0012
+ {x = 500, y = 0, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 14: BF Dies pixel0013
+ {x = 500, y = 0, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 15: BF Dies pixel0014
+ {x = 500, y = 0, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 16: BF Dies pixel0015
+ {x = 600, y = 0, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 17: BF Dies pixel0016
+ {x = 600, y = 0, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 18: BF Dies pixel0017
+ {x = 600, y = 0, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 19: BF Dies pixel0018
+ {x = 700, y = 0, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 20: BF Dies pixel0019
+ {x = 700, y = 0, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 21: BF Dies pixel0020
+ {x = 700, y = 0, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 22: BF Dies pixel0021
+ {x = 800, y = 0, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 23: BF Dies pixel0022
+ {x = 800, y = 0, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 24: BF Dies pixel0023
+ {x = 900, y = 0, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 25: BF Dies pixel0024
+ {x = 0, y = 91, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 26: BF Dies pixel0025
+ {x = 0, y = 91, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 27: BF Dies pixel0026
+ {x = 100, y = 91, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 28: BF Dies pixel0027
+ {x = 100, y = 91, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 29: BF Dies pixel0028
+ {x = 200, y = 91, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 30: BF Dies pixel0029
+ {x = 200, y = 91, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 31: BF Dies pixel0030
+ {x = 300, y = 91, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 32: BF Dies pixel0031
+ {x = 300, y = 91, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 33: BF Dies pixel0032
+ {x = 300, y = 91, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 34: BF Dies pixel0033
+ {x = 400, y = 91, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 35: BF Dies pixel0034
+ {x = 500, y = 91, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 36: BF Dies pixel0035
+ {x = 600, y = 91, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 37: BF Dies pixel0036
+ {x = 700, y = 91, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 38: BF Dies pixel0037
+ {x = 800, y = 91, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 39: BF Dies pixel0038
+ {x = 900, y = 91, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 40: BF Dies pixel0039
+ {x = 0, y = 182, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 41: BF Dies pixel0040
+ {x = 100, y = 182, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 42: BF Dies pixel0041
+ {x = 200, y = 182, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 43: BF Dies pixel0042
+ {x = 300, y = 182, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 44: BF Dies pixel0043
+ {x = 400, y = 182, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 45: BF Dies pixel0044
+ {x = 500, y = 182, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 46: BF Dies pixel0045
+ {x = 600, y = 182, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 47: BF Dies pixel0046
+ {x = 700, y = 182, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 48: BF Dies pixel0047
+ {x = 800, y = 182, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 49: BF Dies pixel0048
+ {x = 900, y = 182, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 50: BF Dies pixel0049
+ {x = 0, y = 273, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 51: BF Dies pixel0050
+ {x = 100, y = 273, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 52: BF Dies pixel0051
+ {x = 200, y = 273, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 53: BF Dies pixel0052
+ {x = 300, y = 273, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 54: BF Dies pixel0053
+ {x = 400, y = 273, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 55: BF Dies pixel0054
+ {x = 500, y = 273, width = 90, height = 81, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 56: BF Dies pixel0055
+ {x = 696, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 57: BF Dies pixel0056
+ {x = 696, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 58: BF Dies pixel0057
+ {x = 600, y = 273, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 59: RETRY CONFIRM0000
+ {x = 687, y = 273, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 60: RETRY CONFIRM0001
+ {x = 687, y = 273, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 61: RETRY CONFIRM0002
+ {x = 774, y = 273, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 62: RETRY CONFIRM0003
+ {x = 774, y = 273, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 63: RETRY CONFIRM0004
+ {x = 861, y = 273, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 64: RETRY CONFIRM0005
+ {x = 861, y = 273, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 65: RETRY CONFIRM0006
+ {x = 0, y = 364, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 66: RETRY CONFIRM0007
+ {x = 87, y = 364, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 67: RETRY CONFIRM0008
+ {x = 174, y = 364, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 68: RETRY CONFIRM0009
+ {x = 261, y = 364, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 69: RETRY CONFIRM0010
+ {x = 348, y = 364, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 70: RETRY CONFIRM0011
+ {x = 435, y = 364, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 71: RETRY CONFIRM0012
+ {x = 522, y = 364, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 72: RETRY CONFIRM0013
+ {x = 609, y = 364, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 73: RETRY CONFIRM0014
+ {x = 696, y = 364, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 74: RETRY CONFIRM0015
+ {x = 783, y = 364, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 75: RETRY CONFIRM0016
+ {x = 870, y = 364, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 76: RETRY CONFIRM0017
+ {x = 0, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 77: RETRY CONFIRM0018
+ {x = 87, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 78: RETRY CONFIRM0019
+ {x = 174, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 79: RETRY CONFIRM0020
+ {x = 261, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 80: RETRY CONFIRM0021
+ {x = 348, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 81: RETRY CONFIRM0022
+ {x = 435, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 82: RETRY CONFIRM0023
+ {x = 522, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 83: RETRY CONFIRM0024
+ {x = 609, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 84: RETRY CONFIRM0025
+ {x = 696, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 85: RETRY CONFIRM0026
+ {x = 696, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 86: RETRY CONFIRM0027
+ {x = 696, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 87: RETRY CONFIRM0028
+ {x = 696, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 88: RETRY CONFIRM0029
+ {x = 696, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 89: RETRY CONFIRM0030
+ {x = 696, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 90: RETRY CONFIRM0031
+ {x = 696, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 91: RETRY CONFIRM0032
+ {x = 696, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 92: RETRY CONFIRM0033
+ {x = 783, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 93: Retry Loop0000
+ {x = 870, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 94: Retry Loop0001
+ {x = 870, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 95: Retry Loop0002
+ {x = 0, y = 536, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 96: Retry Loop0003
+ {x = 0, y = 536, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 97: Retry Loop0004
+ {x = 696, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 98: Retry Loop0005
+ {x = 696, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 99: Retry Loop0006
+ {x = 87, y = 536, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 100: Retry Loop0007
+ {x = 696, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 101: Retry Loop0008
+ {x = 696, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 102: Retry Loop0009
+ {x = 696, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 103: Retry Loop0010
+ {x = 696, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 104: Retry Loop0011
+ {x = 696, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 105: Retry Loop0012
+ {x = 696, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 106: Retry Loop0013
+ {x = 696, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 107: Retry Loop0014
+ {x = 696, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 108: Retry Loop0015
+ {x = 696, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 109: Retry Loop0016
+ {x = 783, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 110: Retry Loop0017
+ {x = 870, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 111: Retry Loop0018
+ {x = 870, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 112: Retry Loop0019
+ {x = 0, y = 536, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 113: Retry Loop0020
+ {x = 0, y = 536, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 114: Retry Loop0021
+ {x = 696, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 115: Retry Loop0022
+ {x = 696, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 116: Retry Loop0023
+ {x = 696, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 117: Retry Loop0024
+ {x = 696, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 118: Retry Loop0025
+ {x = 696, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 119: Retry Loop0026
+ {x = 696, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 120: Retry Loop0027
+ {x = 696, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 121: Retry Loop0028
+ {x = 696, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 122: Retry Loop0029
+ {x = 87, y = 536, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 123: Retry Loop0030
+ {x = 696, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 124: Retry Loop0031
+ {x = 696, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 125: Retry Loop0032
+ {x = 696, y = 450, width = 77, height = 76, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0} -- 126: Retry Loop0033
+ },
+ {
+ ["dies"] = {start = 1, stop = 58, speed = 24, offsetX = -2, offsetY = 0},
+ ["dead confirm"] = {start = 59, stop = 92, speed = 24, offsetX = 0, offsetY = 0},
+ ["dead"] = {start = 93, stop = 126, speed = 24, offsetX = 0, offsetY = 0}
+ },
+ "dies",
+ false
+)
diff --git a/src/love/sprites/pixel/boyfriend.lua b/src/love/sprites/pixel/boyfriend.lua
index 8d4c1a69..daf4822f 100644
--- a/src/love/sprites/pixel/boyfriend.lua
+++ b/src/love/sprites/pixel/boyfriend.lua
@@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
------------------------------------------------------------------------------]]
-return graphics.newPixelSprite(
+return graphics.newSprite(
love.graphics.newImage(graphics.imagePath("pixel/boyfriend")),
-- Automatically generated from bfPixel.xml
{
diff --git a/src/love/sprites/pixel/down-arrow.lua b/src/love/sprites/pixel/down-arrow.lua
index f3173c31..5eb9e397 100644
--- a/src/love/sprites/pixel/down-arrow.lua
+++ b/src/love/sprites/pixel/down-arrow.lua
@@ -17,16 +17,16 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
------------------------------------------------------------------------------]]
-return graphics.newPixelSprite(
+return graphics.newSprite(
images["notes"],
{
- {x = 19, y = 1, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 1: Down Arrow
- {x = 19, y = 19, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 2: Down Arrow On
- {x = 19, y = 37, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 3: Down Arrow Press
- {x = 19, y = 55, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 4: Down Arrow Confirm 1
- {x = 19, y = 73, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 5: Down Arrow Confirm 2
- {x = 9, y = 90, width = 7, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 6: Down Hold
- {x = 9, y = 97, width = 7, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0} -- 7: Down End
+ {x = 18, y = 0, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 1: Down Arrow
+ {x = 18, y = 18, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 2: Down Arrow On
+ {x = 18, y = 36, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 3: Down Arrow Press
+ {x = 18, y = 54, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 4: Down Arrow Confirm 1
+ {x = 18, y = 72, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 5: Down Arrow Confirm 2
+ {x = 8, y = 89, width = 7, height = 6, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 6: Down Hold
+ {x = 8, y = 97, width = 7, height = 6, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0} -- 7: Down End
},
{
["off"] = {start = 1, stop = 1, speed = 0, offsetX = 0, offsetY = 0},
@@ -37,5 +37,8 @@ return graphics.newPixelSprite(
["end"] = {start = 7, stop = 7, speed = 0, offsetX = 0, offsetY = 0}
},
"off",
- false
+ false,
+ {
+ floored = true
+ }
)
diff --git a/src/love/sprites/pixel/girlfriend.lua b/src/love/sprites/pixel/girlfriend.lua
index b385def0..5deafa0a 100644
--- a/src/love/sprites/pixel/girlfriend.lua
+++ b/src/love/sprites/pixel/girlfriend.lua
@@ -2,7 +2,7 @@
This file is part of Friday Night Funkin' DOS by HTV04
------------------------------------------------------------------------------]]
-return graphics.newPixelSprite(
+return graphics.newSprite(
love.graphics.newImage(graphics.imagePath("pixel/girlfriend")),
-- Automatically generated from gfPixel.xml
{
diff --git a/src/love/sprites/pixel/icons.lua b/src/love/sprites/pixel/icons.lua
index 195f9cd8..8bce111f 100644
--- a/src/love/sprites/pixel/icons.lua
+++ b/src/love/sprites/pixel/icons.lua
@@ -2,7 +2,7 @@
This file is part of Friday Night Funkin' Rewritten by HTV04
------------------------------------------------------------------------------]]
-return graphics.newPixelSprite(
+return graphics.newSprite(
images["icons"],
{
{x = 0, y = 0, width = 30, height = 30, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 1: Boyfriend
@@ -15,5 +15,8 @@ return graphics.newPixelSprite(
["spirit"] = {start = 3, stop = 3, speed = 0, offsetX = 0, offsetY = 0}
},
"boyfriend",
- false
+ false,
+ {
+ floored = true
+ }
)
diff --git a/src/love/sprites/pixel/left-arrow.lua b/src/love/sprites/pixel/left-arrow.lua
index 248ac729..7afc63f0 100644
--- a/src/love/sprites/pixel/left-arrow.lua
+++ b/src/love/sprites/pixel/left-arrow.lua
@@ -17,16 +17,16 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
------------------------------------------------------------------------------]]
-return graphics.newPixelSprite(
+return graphics.newSprite(
images["notes"],
{
- {x = 1, y = 1, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 1: Left Arrow
- {x = 1, y = 19, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 2: Left Arrow On
- {x = 1, y = 37, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 3: Left Arrow Press
- {x = 1, y = 55, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 4: Left Arrow Confirm 1
- {x = 1, y = 73, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 5: Left Arrow Confirm 2
- {x = 1, y = 90, width = 7, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 6: Left Hold
- {x = 1, y = 97, width = 7, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0} -- 7: Left End
+ {x = 0, y = 0, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 1: Left Arrow
+ {x = 0, y = 18, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 2: Left Arrow On
+ {x = 0, y = 36, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 3: Left Arrow Press
+ {x = 0, y = 54, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 4: Left Arrow Confirm 1
+ {x = 0, y = 72, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 5: Left Arrow Confirm 2
+ {x = 0, y = 89, width = 7, height = 6, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 6: Left Hold
+ {x = 0, y = 97, width = 7, height = 6, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0} -- 7: Left End
},
{
["off"] = {start = 1, stop = 1, speed = 0, offsetX = 0, offsetY = 0},
@@ -37,5 +37,8 @@ return graphics.newPixelSprite(
["end"] = {start = 7, stop = 7, speed = 0, offsetX = 0, offsetY = 0}
},
"off",
- false
+ false,
+ {
+ floored = true
+ }
)
diff --git a/src/love/sprites/pixel/numbers.lua b/src/love/sprites/pixel/numbers.lua
new file mode 100644
index 00000000..c726ce5a
--- /dev/null
+++ b/src/love/sprites/pixel/numbers.lua
@@ -0,0 +1,51 @@
+--[[----------------------------------------------------------------------------
+This file is part of Friday Night Funkin' Rewritten
+
+Copyright (C) 2021 HTV04
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+------------------------------------------------------------------------------]]
+
+return graphics.newSprite(
+ images["numbers"],
+ {
+ {x = 0, y = 0, width = 9, height = 12, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 1: 0
+ {x = 10, y = 0, width = 9, height = 12, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 2: 1
+ {x = 20, y = 0, width = 10, height = 12, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 3: 2
+ {x = 31, y = 0, width = 10, height = 12, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 4: 3
+ {x = 42, y = 0, width = 10, height = 12, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 5: 4
+ {x = 53, y = 0, width = 10, height = 12, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 6: 5
+ {x = 64, y = 0, width = 10, height = 12, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 7: 6
+ {x = 75, y = 0, width = 9, height = 12, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 8: 7
+ {x = 85, y = 0, width = 9, height = 12, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 9: 8
+ {x = 95, y = 0, width = 9, height = 12, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 10: 9
+ },
+ {
+ ["0"] = {start = 1, stop = 1, speed = 0, offsetX = 0, offsetY = 0},
+ ["1"] = {start = 2, stop = 2, speed = 0, offsetX = 0, offsetY = 0},
+ ["2"] = {start = 3, stop = 3, speed = 0, offsetX = 0, offsetY = 0},
+ ["3"] = {start = 4, stop = 4, speed = 0, offsetX = 0, offsetY = 0},
+ ["4"] = {start = 5, stop = 5, speed = 0, offsetX = 0, offsetY = 0},
+ ["5"] = {start = 6, stop = 6, speed = 0, offsetX = 0, offsetY = 0},
+ ["6"] = {start = 7, stop = 7, speed = 0, offsetX = 0, offsetY = 0},
+ ["7"] = {start = 8, stop = 8, speed = 0, offsetX = 0, offsetY = 0},
+ ["8"] = {start = 9, stop = 9, speed = 0, offsetX = 0, offsetY = 0},
+ ["9"] = {start = 10, stop = 10, speed = 0, offsetX = 0, offsetY = 0}
+ },
+ "0",
+ false,
+ {
+ floored = true
+ }
+)
diff --git a/src/love/sprites/pixel/rating.lua b/src/love/sprites/pixel/rating.lua
new file mode 100644
index 00000000..287e4eeb
--- /dev/null
+++ b/src/love/sprites/pixel/rating.lua
@@ -0,0 +1,39 @@
+--[[----------------------------------------------------------------------------
+This file is part of Friday Night Funkin' Rewritten
+
+Copyright (C) 2021 HTV04
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+------------------------------------------------------------------------------]]
+
+return graphics.newSprite(
+ love.graphics.newImage(graphics.imagePath("pixel/rating")),
+ {
+ {x = 0, y = 0, width = 51, height = 20, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 1: Sick
+ {x = 52, y = 0, width = 39, height = 16, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 2: Good
+ {x = 92, y = 0, width = 28, height = 19, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 3: Bad
+ {x = 121, y = 0, width = 35, height = 20, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 4: Shit
+ },
+ {
+ ["sick"] = {start = 1, stop = 1, speed = 0, offsetX = 0, offsetY = 0},
+ ["good"] = {start = 2, stop = 2, speed = 0, offsetX = 0, offsetY = 0},
+ ["bad"] = {start = 3, stop = 3, speed = 0, offsetX = 0, offsetY = 0},
+ ["shit"] = {start = 4, stop = 4, speed = 0, offsetX = 0, offsetY = 0}
+ },
+ "sick",
+ false,
+ {
+ floored = true
+ }
+)
diff --git a/src/love/sprites/pixel/right-arrow.lua b/src/love/sprites/pixel/right-arrow.lua
index b0f8518b..0cfec159 100644
--- a/src/love/sprites/pixel/right-arrow.lua
+++ b/src/love/sprites/pixel/right-arrow.lua
@@ -17,16 +17,16 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
------------------------------------------------------------------------------]]
-return graphics.newPixelSprite(
+return graphics.newSprite(
images["notes"],
{
- {x = 55, y = 1, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 1: Right Arrow
- {x = 55, y = 19, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 2: Right Arrow On
- {x = 55, y = 37, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 3: Right Arrow Press
- {x = 55, y = 55, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 4: Right Arrow Confirm 1
- {x = 55, y = 73, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 5: Right Arrow Confirm 2
- {x = 26, y = 90, width = 7, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 6: Right Hold
- {x = 26, y = 97, width = 7, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0} -- 7: Right End
+ {x = 54, y = 0, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 1: Right Arrow
+ {x = 54, y = 18, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 2: Right Arrow On
+ {x = 54, y = 36, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 3: Right Arrow Press
+ {x = 54, y = 54, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 4: Right Arrow Confirm 1
+ {x = 54, y = 72, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 5: Right Arrow Confirm 2
+ {x = 24, y = 89, width = 7, height = 6, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 6: Right Hold
+ {x = 24, y = 97, width = 7, height = 6, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0} -- 7: Right End
},
{
["off"] = {start = 1, stop = 1, speed = 0, offsetX = 0, offsetY = 0},
@@ -37,5 +37,8 @@ return graphics.newPixelSprite(
["end"] = {start = 7, stop = 7, speed = 0, offsetX = 0, offsetY = 0}
},
"off",
- false
+ false,
+ {
+ floored = true
+ }
)
diff --git a/src/love/sprites/pixel/up-arrow.lua b/src/love/sprites/pixel/up-arrow.lua
index 7bbb6984..aa331106 100644
--- a/src/love/sprites/pixel/up-arrow.lua
+++ b/src/love/sprites/pixel/up-arrow.lua
@@ -17,16 +17,16 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
------------------------------------------------------------------------------]]
-return graphics.newPixelSprite(
+return graphics.newSprite(
images["notes"],
{
- {x = 37, y = 1, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 1: Up Arrow
- {x = 37, y = 19, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 2: Up Arrow On
- {x = 37, y = 37, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 3: Up Arrow Press
- {x = 37, y = 55, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 4: Up Arrow Confirm 1
- {x = 37, y = 73, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 5: Up Arrow Confirm 2
- {x = 17, y = 90, width = 7, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 6: Up Hold
- {x = 17, y = 97, width = 7, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0} -- 7: Up End
+ {x = 36, y = 0, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 1: Up Arrow
+ {x = 36, y = 18, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 2: Up Arrow On
+ {x = 36, y = 36, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 3: Up Arrow Press
+ {x = 36, y = 54, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 4: Up Arrow Confirm 1
+ {x = 36, y = 72, width = 17, height = 17, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 5: Up Arrow Confirm 2
+ {x = 16, y = 89, width = 7, height = 6, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 6: Up Hold
+ {x = 16, y = 97, width = 7, height = 6, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0} -- 7: Up End
},
{
["off"] = {start = 1, stop = 1, speed = 0, offsetX = 0, offsetY = 0},
@@ -37,5 +37,8 @@ return graphics.newPixelSprite(
["end"] = {start = 7, stop = 7, speed = 0, offsetX = 0, offsetY = 0}
},
"off",
- false
+ false,
+ {
+ floored = true
+ }
)
diff --git a/src/love/sprites/week4/boyfriend.lua b/src/love/sprites/week4/boyfriend.lua
index ac2a5cfe..df82355d 100644
--- a/src/love/sprites/week4/boyfriend.lua
+++ b/src/love/sprites/week4/boyfriend.lua
@@ -304,5 +304,5 @@ return graphics.newSprite(
["idle"] = {start = 257, stop = 270, speed = 24, offsetX = 0, offsetY = 0}
},
"idle",
- true
+ false
)
diff --git a/src/love/sprites/week4/girlfriend.lua b/src/love/sprites/week4/girlfriend.lua
index 7119d302..8da83b9b 100644
--- a/src/love/sprites/week4/girlfriend.lua
+++ b/src/love/sprites/week4/girlfriend.lua
@@ -57,5 +57,5 @@ return graphics.newSprite(
["sad"] = {start = 1, stop = 30, speed = 24, offsetX = 0, offsetY = 0} -- Temporary workaround
},
"idle",
- true
+ false
)
diff --git a/src/love/sprites/week5/boyfriend.lua b/src/love/sprites/week5/boyfriend.lua
index f85747ff..f9e8a494 100644
--- a/src/love/sprites/week5/boyfriend.lua
+++ b/src/love/sprites/week5/boyfriend.lua
@@ -330,5 +330,5 @@ return graphics.newSprite(
["idle"] = {start = 282, stop = 295, speed = 24, offsetX = 0, offsetY = 0}
},
"idle",
- true
+ false
)
diff --git a/src/love/sprites/week6/evil-school.lua b/src/love/sprites/week6/evil-school.lua
new file mode 100644
index 00000000..4a24abd0
--- /dev/null
+++ b/src/love/sprites/week6/evil-school.lua
@@ -0,0 +1,70 @@
+--[[----------------------------------------------------------------------------
+This file is part of Friday Night Funkin' Rewritten
+
+Copyright (C) 2021 HTV04
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+------------------------------------------------------------------------------]]
+
+return graphics.newSprite(
+ love.graphics.newImage(graphics.imagePath("week6/evil-school")),
+ -- Automatically generated from animatedEvilSchool.xml
+ {
+ {x = 0, y = 0, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 1: background 2 instance 10000
+ {x = 523, y = 0, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 2: background 2 instance 10001
+ {x = 1046, y = 0, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 3: background 2 instance 10002
+ {x = 1569, y = 0, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 4: background 2 instance 10003
+ {x = 2092, y = 0, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 5: background 2 instance 10004
+ {x = 2615, y = 0, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 6: background 2 instance 10005
+ {x = 3138, y = 0, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 7: background 2 instance 10006
+ {x = 0, y = 522, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 8: background 2 instance 10007
+ {x = 523, y = 522, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 9: background 2 instance 10008
+ {x = 1046, y = 522, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 10: background 2 instance 10009
+ {x = 1569, y = 522, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 11: background 2 instance 10010
+ {x = 2092, y = 522, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 12: background 2 instance 10011
+ {x = 2615, y = 522, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 13: background 2 instance 10012
+ {x = 3138, y = 522, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 14: background 2 instance 10013
+ {x = 0, y = 1044, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 15: background 2 instance 10014
+ {x = 523, y = 1044, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 16: background 2 instance 10015
+ {x = 1046, y = 1044, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 17: background 2 instance 10016
+ {x = 1569, y = 1044, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 18: background 2 instance 10017
+ {x = 2092, y = 1044, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 19: background 2 instance 10018
+ {x = 2615, y = 1044, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 20: background 2 instance 10019
+ {x = 3138, y = 1044, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 21: background 2 instance 10020
+ {x = 0, y = 1566, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 22: background 2 instance 10021
+ {x = 523, y = 1566, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 23: background 2 instance 10022
+ {x = 1046, y = 1566, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 24: background 2 instance 10023
+ {x = 1569, y = 1566, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 25: background 2 instance 10024
+ {x = 2092, y = 1566, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 26: background 2 instance 10025
+ {x = 2615, y = 1566, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 27: background 2 instance 10026
+ {x = 3138, y = 1566, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 28: background 2 instance 10027
+ {x = 0, y = 2088, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 29: background 2 instance 10028
+ {x = 523, y = 2088, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 30: background 2 instance 10029
+ {x = 1046, y = 2088, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 31: background 2 instance 10030
+ {x = 1569, y = 2088, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 32: background 2 instance 10031
+ {x = 2092, y = 2088, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 33: background 2 instance 10032
+ {x = 2615, y = 2088, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 34: background 2 instance 10033
+ {x = 3138, y = 2088, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 35: background 2 instance 10034
+ {x = 0, y = 2610, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 36: background 2 instance 10035
+ {x = 523, y = 2610, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 37: background 2 instance 10036
+ {x = 1046, y = 2610, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 38: background 2 instance 10037
+ {x = 1569, y = 2610, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 39: background 2 instance 10038
+ {x = 2092, y = 2610, width = 513, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0} -- 40: background 2 instance 10039
+ },
+ {
+ ["anim"] = {start = 1, stop = 40, speed = 24, offsetX = 0, offsetY = 0}
+ },
+ "anim",
+ true
+)
diff --git a/src/love/sprites/week6/freaks.lua b/src/love/sprites/week6/freaks.lua
new file mode 100644
index 00000000..e0ca8fb4
--- /dev/null
+++ b/src/love/sprites/week6/freaks.lua
@@ -0,0 +1,92 @@
+--[[----------------------------------------------------------------------------
+This file is part of Friday Night Funkin' Rewritten
+
+Copyright (C) 2021 HTV04
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+------------------------------------------------------------------------------]]
+
+return graphics.newSprite(
+ love.graphics.newImage(graphics.imagePath("week6/freaks")),
+
+ -- Automatically generated from bgFreaks.xml
+ {
+ {x = 0, y = 0, width = 451, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 1: BG fangirls dissuaded0000
+ {x = 0, y = 0, width = 451, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 2: BG fangirls dissuaded0001
+ {x = 461, y = 0, width = 451, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 3: BG fangirls dissuaded0002
+ {x = 461, y = 0, width = 451, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 4: BG fangirls dissuaded0003
+ {x = 461, y = 0, width = 451, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 5: BG fangirls dissuaded0004
+ {x = 461, y = 0, width = 451, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 6: BG fangirls dissuaded0005
+ {x = 0, y = 106, width = 451, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 7: BG fangirls dissuaded0006
+ {x = 0, y = 106, width = 451, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 8: BG fangirls dissuaded0007
+ {x = 0, y = 106, width = 451, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 9: BG fangirls dissuaded0008
+ {x = 0, y = 106, width = 451, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 10: BG fangirls dissuaded0009
+ {x = 0, y = 106, width = 451, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 11: BG fangirls dissuaded0010
+ {x = 0, y = 106, width = 451, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 12: BG fangirls dissuaded0011
+ {x = 0, y = 106, width = 451, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 13: BG fangirls dissuaded0012
+ {x = 0, y = 106, width = 451, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 14: BG fangirls dissuaded0013
+ {x = 461, y = 106, width = 451, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 15: BG fangirls dissuaded0014
+ {x = 461, y = 106, width = 451, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 16: BG fangirls dissuaded0015
+ {x = 0, y = 212, width = 451, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 17: BG fangirls dissuaded0016
+ {x = 0, y = 212, width = 451, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 18: BG fangirls dissuaded0017
+ {x = 461, y = 212, width = 451, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 19: BG fangirls dissuaded0018
+ {x = 461, y = 212, width = 451, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 20: BG fangirls dissuaded0019
+ {x = 0, y = 318, width = 451, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 21: BG fangirls dissuaded0020
+ {x = 0, y = 318, width = 451, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 22: BG fangirls dissuaded0021
+ {x = 461, y = 318, width = 451, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 23: BG fangirls dissuaded0022
+ {x = 461, y = 318, width = 451, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 24: BG fangirls dissuaded0023
+ {x = 461, y = 318, width = 451, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 25: BG fangirls dissuaded0024
+ {x = 461, y = 318, width = 451, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 26: BG fangirls dissuaded0025
+ {x = 461, y = 318, width = 451, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 27: BG fangirls dissuaded0026
+ {x = 461, y = 318, width = 451, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 28: BG fangirls dissuaded0027
+ {x = 461, y = 318, width = 451, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 29: BG fangirls dissuaded0028
+ {x = 461, y = 318, width = 451, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 30: BG fangirls dissuaded0029
+ {x = 0, y = 424, width = 450, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 31: BG girls group0000
+ {x = 0, y = 424, width = 450, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 32: BG girls group0001
+ {x = 460, y = 424, width = 450, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 33: BG girls group0002
+ {x = 460, y = 424, width = 450, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 34: BG girls group0003
+ {x = 460, y = 424, width = 450, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 35: BG girls group0004
+ {x = 460, y = 424, width = 450, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 36: BG girls group0005
+ {x = 0, y = 530, width = 450, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 37: BG girls group0006
+ {x = 0, y = 530, width = 450, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 38: BG girls group0007
+ {x = 0, y = 530, width = 450, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 39: BG girls group0008
+ {x = 0, y = 530, width = 450, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 40: BG girls group0009
+ {x = 0, y = 530, width = 450, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 41: BG girls group0010
+ {x = 0, y = 530, width = 450, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 42: BG girls group0011
+ {x = 0, y = 530, width = 450, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 43: BG girls group0012
+ {x = 0, y = 530, width = 450, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 44: BG girls group0013
+ {x = 460, y = 530, width = 450, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 45: BG girls group0014
+ {x = 460, y = 530, width = 450, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 46: BG girls group0015
+ {x = 0, y = 636, width = 450, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 47: BG girls group0016
+ {x = 0, y = 636, width = 450, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 48: BG girls group0017
+ {x = 0, y = 530, width = 450, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 49: BG girls group0018
+ {x = 0, y = 530, width = 450, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 50: BG girls group0019
+ {x = 460, y = 636, width = 450, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 51: BG girls group0020
+ {x = 460, y = 636, width = 450, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 52: BG girls group0021
+ {x = 460, y = 424, width = 450, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 53: BG girls group0022
+ {x = 460, y = 424, width = 450, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 54: BG girls group0023
+ {x = 460, y = 424, width = 450, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 55: BG girls group0024
+ {x = 460, y = 424, width = 450, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 56: BG girls group0025
+ {x = 460, y = 424, width = 450, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 57: BG girls group0026
+ {x = 460, y = 424, width = 450, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 58: BG girls group0027
+ {x = 460, y = 424, width = 450, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 59: BG girls group0028
+ {x = 460, y = 424, width = 450, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0} -- 60: BG girls group0029
+ },
+ {
+ ["dissuaded"] = {start = 1, stop = 30, speed = 24, offsetX = 0, offsetY = 0},
+ ["in love"] = {start = 31, stop = 60, speed = 24, offsetX = 0, offsetY = 0}
+ },
+ "in love",
+ true
+)
diff --git a/src/love/sprites/week6/petals.lua b/src/love/sprites/week6/petals.lua
new file mode 100644
index 00000000..274d108f
--- /dev/null
+++ b/src/love/sprites/week6/petals.lua
@@ -0,0 +1,86 @@
+--[[----------------------------------------------------------------------------
+This file is part of Friday Night Funkin' Rewritten
+
+Copyright (C) 2021 HTV04
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+------------------------------------------------------------------------------]]
+
+return graphics.newSprite(
+ love.graphics.newImage(graphics.imagePath("week6/petals")),
+ -- Automatically generated from petals.xml
+ {
+ {x = 0, y = 0, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 1: PETALS ALL0000
+ {x = 0, y = 0, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 2: PETALS ALL0001
+ {x = 313, y = 0, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 3: PETALS ALL0002
+ {x = 313, y = 0, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 4: PETALS ALL0003
+ {x = 626, y = 0, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 5: PETALS ALL0004
+ {x = 939, y = 0, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 6: PETALS ALL0005
+ {x = 1252, y = 0, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 7: PETALS ALL0006
+ {x = 1252, y = 0, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 8: PETALS ALL0007
+ {x = 1565, y = 0, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 9: PETALS ALL0008
+ {x = 0, y = 163, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 10: PETALS ALL0009
+ {x = 313, y = 163, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 11: PETALS ALL0010
+ {x = 626, y = 163, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 12: PETALS ALL0011
+ {x = 939, y = 163, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 13: PETALS ALL0012
+ {x = 1252, y = 163, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 14: PETALS ALL0013
+ {x = 1252, y = 163, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 15: PETALS ALL0014
+ {x = 1565, y = 163, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 16: PETALS ALL0015
+ {x = 0, y = 326, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 17: PETALS ALL0016
+ {x = 313, y = 326, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 18: PETALS ALL0017
+ {x = 313, y = 326, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 19: PETALS ALL0018
+ {x = 626, y = 326, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 20: PETALS ALL0019
+ {x = 939, y = 326, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 21: PETALS ALL0020
+ {x = 1252, y = 326, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 22: PETALS ALL0021
+ {x = 1252, y = 326, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 23: PETALS ALL0022
+ {x = 1565, y = 326, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 24: PETALS ALL0023
+ {x = 0, y = 489, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 25: PETALS ALL0024
+ {x = 313, y = 489, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 26: PETALS ALL0025
+ {x = 626, y = 489, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 27: PETALS ALL0026
+ {x = 939, y = 489, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 28: PETALS ALL0027
+ {x = 1252, y = 489, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 29: PETALS ALL0028
+ {x = 1565, y = 489, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 30: PETALS ALL0029
+ {x = 0, y = 652, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 31: PETALS ALL0030
+ {x = 313, y = 652, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 32: PETALS ALL0031
+ {x = 626, y = 652, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 33: PETALS ALL0032
+ {x = 939, y = 652, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 34: PETALS ALL0033
+ {x = 1252, y = 652, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 35: PETALS ALL0034
+ {x = 1252, y = 652, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 36: PETALS ALL0035
+ {x = 1565, y = 652, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 37: PETALS ALL0036
+ {x = 0, y = 815, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 38: PETALS ALL0037
+ {x = 313, y = 815, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 39: PETALS ALL0038
+ {x = 313, y = 815, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 40: PETALS ALL0039
+ {x = 626, y = 815, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 41: PETALS ALL0040
+ {x = 939, y = 815, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 42: PETALS ALL0041
+ {x = 939, y = 815, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 43: PETALS ALL0042
+ {x = 1252, y = 815, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 44: PETALS ALL0043
+ {x = 1565, y = 815, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 45: PETALS ALL0044
+ {x = 0, y = 978, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 46: PETALS ALL0045
+ {x = 313, y = 978, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 47: PETALS ALL0046
+ {x = 626, y = 978, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 48: PETALS ALL0047
+ {x = 939, y = 978, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 49: PETALS ALL0048
+ {x = 1252, y = 978, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 50: PETALS ALL0049
+ {x = 1565, y = 978, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 51: PETALS ALL0050
+ {x = 0, y = 1141, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 52: PETALS ALL0051
+ {x = 313, y = 1141, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 53: PETALS ALL0052
+ {x = 313, y = 1141, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 54: PETALS ALL0053
+ {x = 626, y = 1141, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 55: PETALS ALL0054
+ {x = 0, y = 0, width = 311, height = 161, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0} -- 56: PETALS ALL0055
+ },
+ {
+ ["anim"] = {start = 1, stop = 56, speed = 24, offsetX = 0, offsetY = 0}
+ },
+ "anim",
+ true
+)
diff --git a/src/love/sprites/week6/senpai-angry.lua b/src/love/sprites/week6/senpai-angry.lua
index 674dadfa..7fab81d6 100644
--- a/src/love/sprites/week6/senpai-angry.lua
+++ b/src/love/sprites/week6/senpai-angry.lua
@@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
------------------------------------------------------------------------------]]
-return graphics.newSprite( -- Angry Senpai looks better as a normal sprite for some reason???
+return graphics.newSprite(
love.graphics.newImage(graphics.imagePath("week6/senpai")),
{
{x = 0, y = 0, width = 125, height = 164, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 1: Angry Senpai DOWN NOTE instance 10000
@@ -99,5 +99,5 @@ return graphics.newSprite( -- Angry Senpai looks better as a normal sprite for s
["up"] = {start = 57, stop = 70, speed = 24, offsetX = 0, offsetY = 6}
},
"idle",
- true
+ false
)
diff --git a/src/love/sprites/week6/senpai.lua b/src/love/sprites/week6/senpai.lua
index dceb415c..d67e32d0 100644
--- a/src/love/sprites/week6/senpai.lua
+++ b/src/love/sprites/week6/senpai.lua
@@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
------------------------------------------------------------------------------]]
-return graphics.newPixelSprite(
+return graphics.newSprite(
love.graphics.newImage(graphics.imagePath("week6/senpai")),
-- Automatically generated from senpai.xml
{
@@ -114,5 +114,5 @@ return graphics.newPixelSprite(
["idle"] = {start = 57, stop = 84, speed = 24, offsetX = 0, offsetY = 0}
},
"idle",
- true
+ false
)
diff --git a/src/love/sprites/week6/spirit.lua b/src/love/sprites/week6/spirit.lua
new file mode 100644
index 00000000..82ecc514
--- /dev/null
+++ b/src/love/sprites/week6/spirit.lua
@@ -0,0 +1,135 @@
+--[[----------------------------------------------------------------------------
+This file is part of Friday Night Funkin' Rewritten
+
+Copyright (C) 2021 HTV04
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+------------------------------------------------------------------------------]]
+
+return graphics.newSprite(
+ love.graphics.newImage(graphics.imagePath("week6/spirit")),
+ -- Automatically generated from spirit.txt
+ {
+ {x = 0, y = 1028, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 1: idle spirit_0
+ {x = 0, y = 1157, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 2: idle spirit_1
+ {x = 1542, y = 0, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 3: idle spirit_2
+ {x = 643, y = 900, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 4: idle spirit_3
+ {x = 387, y = 1029, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 5: idle spirit_4
+ {x = 772, y = 771, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 6: idle spirit_5
+ {x = 129, y = 1415, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 7: idle spirit_6
+ {x = 258, y = 1286, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 8: idle spirit_7
+ {x = 0, y = 1544, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 9: idle spirit_8
+ {x = 387, y = 1158, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 10: idle spirit_9
+ {x = 129, y = 1028, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 11: idle spirit_10
+ {x = 514, y = 771, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 12: idle spirit_11
+ {x = 129, y = 1157, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 13: idle spirit_12
+ {x = 258, y = 1028, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 14: idle spirit_13
+ {x = 0, y = 1286, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 15: idle spirit_14
+ {x = 514, y = 900, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 16: idle spirit_15
+ {x = 643, y = 771, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 17: idle spirit_16
+ {x = 0, y = 1415, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 18: idle spirit_17
+ {x = 129, y = 1286, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 19: idle spirit_18
+ {x = 258, y = 1157, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 20: idle spirit_19
+ {x = 0, y = 0, width = 256, height = 256, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 21: spirit down_0
+ {x = 257, y = 0, width = 256, height = 256, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 22: spirit down_1
+ {x = 771, y = 514, width = 256, height = 256, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 23: spirit down_2
+ {x = 1028, y = 257, width = 256, height = 256, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 24: spirit down_3
+ {x = 1285, y = 0, width = 256, height = 256, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 25: spirit down_4
+ {x = 1285, y = 257, width = 256, height = 256, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 26: spirit down_5
+ {x = 1028, y = 514, width = 256, height = 256, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 27: spirit down_6
+ {x = 1285, y = 514, width = 256, height = 256, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 28: spirit down_7
+ {x = 0, y = 771, width = 256, height = 256, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 29: spirit down_8
+ {x = 257, y = 771, width = 256, height = 256, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 30: spirit down_9
+ {x = 514, y = 0, width = 256, height = 256, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 31: spirit down_10
+ {x = 0, y = 257, width = 256, height = 256, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 32: spirit down_11
+ {x = 257, y = 257, width = 256, height = 256, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 33: spirit down_12
+ {x = 0, y = 514, width = 256, height = 256, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 34: spirit down_13
+ {x = 257, y = 514, width = 256, height = 256, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 35: spirit down_14
+ {x = 514, y = 257, width = 256, height = 256, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 36: spirit down_15
+ {x = 514, y = 514, width = 256, height = 256, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 37: spirit down_16
+ {x = 771, y = 0, width = 256, height = 256, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 38: spirit down_17
+ {x = 771, y = 257, width = 256, height = 256, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 39: spirit down_18
+ {x = 1028, y = 0, width = 256, height = 256, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 40: spirit down_19
+ -- Rearranged left frames because they were out of order
+ {x = 516, y = 1029, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 41: left_0
+ {x = 1542, y = 129, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 42: left_1
+ {x = 258, y = 1544, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 43: left_2
+ {x = 516, y = 1287, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 44: left_3
+ {x = 387, y = 1416, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 45: left_4
+ {x = 645, y = 1158, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 46: left_5
+ {x = 774, y = 1029, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 47: left_6
+ {x = 1542, y = 387, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 48: left_7
+ {x = 1030, y = 900, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 49: left_8
+ {x = 1159, y = 771, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 50: left_9
+ {x = 772, y = 900, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 51: left_10
+ {x = 901, y = 771, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 52: left_11
+ {x = 258, y = 1415, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 53: left_12
+ {x = 129, y = 1544, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 54: left_13
+ {x = 387, y = 1287, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 55: left_14
+ {x = 645, y = 1029, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 56: left_15
+ {x = 516, y = 1158, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 57: left_16
+ {x = 1542, y = 258, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 58: left_17
+ {x = 1030, y = 771, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 59: left_18
+ {x = 901, y = 900, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 60: left_19
+ {x = 903, y = 1029, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 61: right_0
+ {x = 774, y = 1158, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 62: right_1
+ {x = 1032, y = 1029, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 63: right_2
+ {x = 1542, y = 645, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 64: right_3
+ {x = 1288, y = 900, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 65: right_4
+ {x = 774, y = 1416, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 66: right_5
+ {x = 1032, y = 1158, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 67: right_6
+ {x = 903, y = 1287, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 68: right_7
+ {x = 1161, y = 1029, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 69: right_8
+ {x = 645, y = 1545, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 70: right_9
+ {x = 516, y = 1416, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 71: right_10
+ {x = 387, y = 1545, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 72: right_11
+ {x = 645, y = 1287, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 73: right_12
+ {x = 1542, y = 516, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 74: right_13
+ {x = 1288, y = 771, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 75: right_14
+ {x = 1159, y = 900, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 76: right_15
+ {x = 645, y = 1416, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 77: right_16
+ {x = 516, y = 1545, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 78: right_17
+ {x = 774, y = 1287, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 79: right_18
+ {x = 903, y = 1158, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 80: right_19
+ {x = 1417, y = 774, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 81: up_0
+ {x = 903, y = 1416, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 82: up_1
+ {x = 1419, y = 1032, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 83: up_2
+ {x = 1548, y = 903, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 84: up_3
+ {x = 1290, y = 1287, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 85: up_4
+ {x = 1161, y = 1416, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 86: up_5
+ {x = 1032, y = 1545, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 87: up_6
+ {x = 1548, y = 1032, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 88: up_7
+ {x = 1419, y = 1161, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 89: up_8
+ {x = 1161, y = 1545, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 90: up_9
+ {x = 1290, y = 1029, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 91: up_10
+ {x = 1161, y = 1158, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 92: up_11
+ {x = 774, y = 1545, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 93: up_12
+ {x = 1032, y = 1287, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 94: up_13
+ {x = 1546, y = 774, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 95: up_14
+ {x = 903, y = 1545, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 96: up_15
+ {x = 1161, y = 1287, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 97: up_16
+ {x = 1032, y = 1416, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 98: up_17
+ {x = 1290, y = 1158, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 99: up_18
+ {x = 1419, y = 903, width = 128, height = 128, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0} -- 100: up_19
+ },
+ {
+ ["idle"] = {start = 1, stop = 20, speed = 24, offsetX = 2, offsetY = 0},
+ ["down"] = {start = 21, stop = 40, speed = 24, offsetX = 2, offsetY = 0},
+ ["left"] = {start = 41, stop = 60, speed = 24, offsetX = 2, offsetY = 0},
+ ["right"] = {start = 61, stop = 80, speed = 24, offsetX = 2, offsetY = 0},
+ ["up"] = {start = 81, stop = 100, speed = 24, offsetX = 2, offsetY = 0},
+ },
+ "idle",
+ false
+)
diff --git a/src/love/sprites/week6/trees.lua b/src/love/sprites/week6/trees.lua
new file mode 100644
index 00000000..7bf07e50
--- /dev/null
+++ b/src/love/sprites/week6/trees.lua
@@ -0,0 +1,50 @@
+--[[----------------------------------------------------------------------------
+This file is part of Friday Night Funkin' Rewritten
+
+Copyright (C) 2021 HTV04
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+------------------------------------------------------------------------------]]
+
+return graphics.newSprite(
+ love.graphics.newImage(graphics.imagePath("week6/trees")),
+ -- Automatically generated from weebTrees.txt
+ {
+ {x = 0, y = 0, width = 512, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 1: trees_0
+ {x = 513, y = 0, width = 512, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 2: trees_1
+ {x = 1539, y = 1026, width = 512, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 3: trees_2
+ {x = 2052, y = 513, width = 512, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 4: trees_3
+ {x = 2565, y = 0, width = 512, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 5: trees_4
+ {x = 3078, y = 0, width = 512, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 6: trees_5
+ {x = 2565, y = 513, width = 512, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 7: trees_6
+ {x = 2052, y = 1026, width = 512, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 8: trees_7
+ {x = 2565, y = 1026, width = 512, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 9: trees_8
+ {x = 3078, y = 513, width = 512, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 10: trees_9
+ {x = 1026, y = 0, width = 512, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 11: trees_10
+ {x = 0, y = 513, width = 512, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 12: trees_11
+ {x = 513, y = 513, width = 512, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 13: trees_12
+ {x = 0, y = 1026, width = 512, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 14: trees_13
+ {x = 513, y = 1026, width = 512, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 15: trees_14
+ {x = 1026, y = 513, width = 512, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 16: trees_15
+ {x = 1026, y = 1026, width = 512, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 17: trees_16
+ {x = 1539, y = 0, width = 512, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 18: trees_17
+ {x = 1539, y = 513, width = 512, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 19: trees_18
+ {x = 2052, y = 0, width = 512, height = 512, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0} -- 20: trees_19
+ },
+ {
+ ["anim"] = {start = 1, stop = 20, speed = 24, offsetX = 0, offsetY = 0}
+ },
+ "anim",
+ true
+)
diff --git a/src/love/weeks-pixel.lua b/src/love/weeks-pixel.lua
index 77197c74..659f74f3 100644
--- a/src/love/weeks-pixel.lua
+++ b/src/love/weeks-pixel.lua
@@ -32,7 +32,7 @@ local inputList = {
"gameRight"
}
---local ratingTimers = {}
+local ratingTimers = {}
return {
enter = function(self)
@@ -40,55 +40,45 @@ return {
sounds = {
["miss"] = {
- love.audio.newSource("sounds/miss1.ogg", "static"),
- love.audio.newSource("sounds/miss2.ogg", "static"),
- love.audio.newSource("sounds/miss3.ogg", "static")
+ love.audio.newSource("sounds/pixel/miss1.ogg", "static"),
+ love.audio.newSource("sounds/pixel/miss2.ogg", "static"),
+ love.audio.newSource("sounds/pixel/miss3.ogg", "static")
},
- ["death"] = love.audio.newSource("sounds/death.ogg", "static")
+ ["death"] = love.audio.newSource("sounds/pixel/death.ogg", "static")
}
images = {
["icons"] = love.graphics.newImage(graphics.imagePath("pixel/icons")),
- ["notes"] = love.graphics.newImage(graphics.imagePath("pixel/notes"))
- --["numbers"] = love.graphics.newImage(graphics.imagePath("pixel/numbers"))
+ ["notes"] = love.graphics.newImage(graphics.imagePath("pixel/notes")),
+ ["numbers"] = love.graphics.newImage(graphics.imagePath("pixel/numbers"))
}
sprites = {
- ["icons"] = love.filesystem.load("sprites/pixel/icons.lua")
- --["numbers"] = love.filesystem.load("sprites/pixelnumbers.lua")
+ ["icons"] = love.filesystem.load("sprites/pixel/icons.lua"),
+ ["numbers"] = love.filesystem.load("sprites/pixel/numbers.lua")
}
girlfriend = love.filesystem.load("sprites/pixel/girlfriend.lua")()
boyfriend = love.filesystem.load("sprites/pixel/boyfriend.lua")()
- --fakeBoyfriend = love.filesystem.load("sprites/pixel/boyfriend-dead.lua")()
+ fakeBoyfriend = love.filesystem.load("sprites/pixel/boyfriend-dead.lua")()
- --[[
- rating = love.filesystem.load("sprites/rating.lua")()
-
- rating.sizeX, rating.sizeY = 0.75, 0.75
+ rating = love.filesystem.load("sprites/pixel/rating.lua")()
numbers = {}
for i = 1, 3 do
numbers[i] = sprites["numbers"]()
-
- numbers[i].sizeX, numbers[i].sizeY = 0.5, 0.5
end
- --]]
enemyIcon = sprites["icons"]()
boyfriendIcon = sprites["icons"]()
if settings.downscroll then
- enemyIcon.y = -400
- boyfriendIcon.y = -400
+ enemyIcon.y = -55
+ boyfriendIcon.y = -55
else
- enemyIcon.y = 350
- boyfriendIcon.y = 350
+ enemyIcon.y = 45
+ boyfriendIcon.y = 45
end
boyfriendIcon.sizeX = -1
-
- for i = 1, 3 do
- sounds["miss"][i]:setVolume(0.25)
- end
end,
load = function(self)
@@ -96,14 +86,12 @@ return {
cam.x, cam.y = -boyfriend.x + 30, -boyfriend.y + 25
- --[[
rating.x = girlfriend.x
for i = 1, 3 do
- numbers[i].x = girlfriend.x - 100 + 50 * i
+ numbers[i].x = girlfriend.x - 20 + 10 * i
end
- --]]
- --ratingVisibility = {0}
+ ratingVisibility = {0}
combo = 0
enemy:animate("idle")
@@ -138,14 +126,14 @@ return {
}
for i = 1, 4 do
- enemyArrows[i].x = -60 + 20 * i
- boyfriendArrows[i].x = 84 + 20 * i
+ enemyArrows[i].x = -125 + 20 * i
+ boyfriendArrows[i].x = 25 + 20 * i
if settings.downscroll then
- enemyArrows[i].y = 90
- boyfriendArrows[i].y = 90
+ enemyArrows[i].y = 55
+ boyfriendArrows[i].y = 55
else
- enemyArrows[i].y = -90
- boyfriendArrows[i].y = -90
+ enemyArrows[i].y = -55
+ boyfriendArrows[i].y = -55
end
enemyNotes[i] = {}
@@ -203,24 +191,28 @@ return {
table.insert(enemyNotes[id], sprite())
enemyNotes[id][c].x = x
- enemyNotes[id][c].y = 90 - noteTime * 0.12 * speed
+ enemyNotes[id][c].y = 55 - noteTime * 0.12 * speed
+
enemyNotes[id][c]:animate("on", false)
+
if chart[i].sectionNotes[j].noteLength > 0 then
- for k = 71 / speed, chart[i].sectionNotes[j].noteLength, 71 / speed do
+ local c
+
+ for k = 42 / speed, chart[i].sectionNotes[j].noteLength, 42 / speed do
local c = #enemyNotes[id] + 1
table.insert(enemyNotes[id], sprite())
enemyNotes[id][c].x = x
- enemyNotes[id][c].y = 90 - (noteTime + k) * 0.12 * speed
- if k > chart[i].sectionNotes[j].noteLength - 71 / speed then
- enemyNotes[id][c].y = enemyNotes[id][c].y - 11
- enemyNotes[id][c].orientation = math.pi
+ enemyNotes[id][c].y = 55 - (noteTime + k) * 0.12 * speed
- enemyNotes[id][c]:animate("end", false)
- else
- enemyNotes[id][c]:animate("hold", false)
- end
+ enemyNotes[id][c]:animate("hold", false)
end
+
+ c = #enemyNotes[id]
+
+ enemyNotes[id][c].sizeY = -1
+
+ enemyNotes[id][c]:animate("end", false)
end
else
local id = noteType + 1
@@ -229,24 +221,28 @@ return {
table.insert(boyfriendNotes[id], sprite())
boyfriendNotes[id][c].x = x
- boyfriendNotes[id][c].y = 90 - noteTime * 0.12 * speed
+ boyfriendNotes[id][c].y = 55 - noteTime * 0.12 * speed
+
boyfriendNotes[id][c]:animate("on", false)
+
if chart[i].sectionNotes[j].noteLength > 0 then
- for k = 71 / speed, chart[i].sectionNotes[j].noteLength, 71 / speed do
+ local c
+
+ for k = 42 / speed, chart[i].sectionNotes[j].noteLength, 42 / speed do
local c = #boyfriendNotes[id] + 1
table.insert(boyfriendNotes[id], sprite())
boyfriendNotes[id][c].x = x
- boyfriendNotes[id][c].y = 90 - (noteTime + k) * 0.12 * speed
- if k > chart[i].sectionNotes[j].noteLength - 71 / speed then
- boyfriendNotes[id][c].y = boyfriendNotes[id][c].y - 11
- boyfriendNotes[id][c].orientation = math.pi
+ boyfriendNotes[id][c].y = 55 - (noteTime + k) * 0.12 * speed
- boyfriendNotes[id][c]:animate("end", false)
- else
- boyfriendNotes[id][c]:animate("hold", false)
- end
+ boyfriendNotes[id][c]:animate("hold", false)
end
+
+ c = #boyfriendNotes[id]
+
+ boyfriendNotes[id][c].sizeY = -1
+
+ boyfriendNotes[id][c]:animate("end", false)
end
end
else
@@ -257,24 +253,28 @@ return {
table.insert(boyfriendNotes[id], sprite())
boyfriendNotes[id][c].x = x
- boyfriendNotes[id][c].y = 90 - noteTime * 0.12 * speed
+ boyfriendNotes[id][c].y = 55 - noteTime * 0.12 * speed
+
boyfriendNotes[id][c]:animate("on", false)
+
if chart[i].sectionNotes[j].noteLength > 0 then
- for k = 71 / speed, chart[i].sectionNotes[j].noteLength, 71 / speed do
+ local c
+
+ for k = 42 / speed, chart[i].sectionNotes[j].noteLength, 42 / speed do
local c = #boyfriendNotes[id] + 1
table.insert(boyfriendNotes[id], sprite())
boyfriendNotes[id][c].x = x
- boyfriendNotes[id][c].y = 90 - (noteTime + k) * 0.12 * speed
- if k > chart[i].sectionNotes[j].noteLength - 71 / speed then
- boyfriendNotes[id][c].y = boyfriendNotes[id][c].y - 11
- boyfriendNotes[id][c].orientation = math.pi
+ boyfriendNotes[id][c].y = 55 - (noteTime + k) * 0.12 * speed
- boyfriendNotes[id][c]:animate("end", false)
- else
- boyfriendNotes[id][c]:animate("hold", false)
- end
+ boyfriendNotes[id][c]:animate("hold", false)
end
+
+ c = #boyfriendNotes[id]
+
+ boyfriendNotes[id][c].sizeY = -1
+
+ boyfriendNotes[id][c]:animate("end", false)
end
else
local id = noteType + 1
@@ -283,24 +283,28 @@ return {
table.insert(enemyNotes[id], sprite())
enemyNotes[id][c].x = x
- enemyNotes[id][c].y = 90 - noteTime * 0.12 * speed
+ enemyNotes[id][c].y = 55 - noteTime * 0.12 * speed
+
enemyNotes[id][c]:animate("on", false)
+
if chart[i].sectionNotes[j].noteLength > 0 then
- for k = 71 / speed, chart[i].sectionNotes[j].noteLength, 71 / speed do
+ local c
+
+ for k = 42 / speed, chart[i].sectionNotes[j].noteLength, 42 / speed do
local c = #enemyNotes[id] + 1
table.insert(enemyNotes[id], sprite())
enemyNotes[id][c].x = x
- enemyNotes[id][c].y = 90 - (noteTime + k) * 0.12 * speed
- if k > chart[i].sectionNotes[j].noteLength - 71 / speed then
- enemyNotes[id][c].y = enemyNotes[id][c].y - 11
- enemyNotes[id][c].orientation = math.pi
+ enemyNotes[id][c].y = 55 - (noteTime + k) * 0.12 * speed
- enemyNotes[id][c]:animate("end", false)
- else
- enemyNotes[id][c]:animate("hold", false)
- end
+ enemyNotes[id][c]:animate("hold", false)
end
+
+ c = #enemyNotes[id]
+
+ enemyNotes[id][c].sizeY = -1
+
+ enemyNotes[id][c]:animate("end", false)
end
end
end
@@ -313,23 +317,26 @@ return {
table.insert(enemyNotes[id], sprite())
enemyNotes[id][c].x = x
- enemyNotes[id][c].y = -90 + noteTime * 0.12 * speed
+ enemyNotes[id][c].y = -55 + noteTime * 0.12 * speed
+
enemyNotes[id][c]:animate("on", false)
+
if chart[i].sectionNotes[j].noteLength > 0 then
- for k = 71 / speed, chart[i].sectionNotes[j].noteLength, 71 / speed do
+ local c
+
+ for k = 42 / speed, chart[i].sectionNotes[j].noteLength, 42 / speed do
local c = #enemyNotes[id] + 1
table.insert(enemyNotes[id], sprite())
enemyNotes[id][c].x = x
- enemyNotes[id][c].y = -90 + (noteTime + k) * 0.12 * speed
- if k > chart[i].sectionNotes[j].noteLength - 71 / speed then
- enemyNotes[id][c].y = enemyNotes[id][c].y + 10
+ enemyNotes[id][c].y = -55 + (noteTime + k) * 0.12 * speed
- enemyNotes[id][c]:animate("end", false)
- else
- enemyNotes[id][c]:animate("hold", false)
- end
+ enemyNotes[id][c]:animate("hold", false)
end
+
+ c = #enemyNotes[id]
+
+ enemyNotes[id][c]:animate("end", false)
end
else
local id = noteType + 1
@@ -338,23 +345,26 @@ return {
table.insert(boyfriendNotes[id], sprite())
boyfriendNotes[id][c].x = x
- boyfriendNotes[id][c].y = -90 + noteTime * 0.12 * speed
+ boyfriendNotes[id][c].y = -55 + noteTime * 0.12 * speed
+
boyfriendNotes[id][c]:animate("on", false)
+
if chart[i].sectionNotes[j].noteLength > 0 then
- for k = 71 / speed, chart[i].sectionNotes[j].noteLength, 71 / speed do
+ local c
+
+ for k = 42 / speed, chart[i].sectionNotes[j].noteLength, 42 / speed do
local c = #boyfriendNotes[id] + 1
table.insert(boyfriendNotes[id], sprite())
boyfriendNotes[id][c].x = x
- boyfriendNotes[id][c].y = -90 + (noteTime + k) * 0.12 * speed
- if k > chart[i].sectionNotes[j].noteLength - 71 / speed then
- boyfriendNotes[id][c].y = boyfriendNotes[id][c].y + 10
+ boyfriendNotes[id][c].y = -55 + (noteTime + k) * 0.12 * speed
- boyfriendNotes[id][c]:animate("end", false)
- else
- boyfriendNotes[id][c]:animate("hold", false)
- end
+ boyfriendNotes[id][c]:animate("hold", false)
end
+
+ c = #boyfriendNotes[id]
+
+ boyfriendNotes[id][c]:animate("end", false)
end
end
else
@@ -365,23 +375,26 @@ return {
table.insert(boyfriendNotes[id], sprite())
boyfriendNotes[id][c].x = x
- boyfriendNotes[id][c].y = -90 + noteTime * 0.12 * speed
+ boyfriendNotes[id][c].y = -55 + noteTime * 0.12 * speed
+
boyfriendNotes[id][c]:animate("on", false)
+
if chart[i].sectionNotes[j].noteLength > 0 then
- for k = 71 / speed, chart[i].sectionNotes[j].noteLength, 71 / speed do
+ local c
+
+ for k = 42 / speed, chart[i].sectionNotes[j].noteLength, 42 / speed do
local c = #boyfriendNotes[id] + 1
table.insert(boyfriendNotes[id], sprite())
boyfriendNotes[id][c].x = x
- boyfriendNotes[id][c].y = -90 + (noteTime + k) * 0.12 * speed
- if k > chart[i].sectionNotes[j].noteLength - 71 / speed then
- boyfriendNotes[id][c].y = boyfriendNotes[id][c].y + 10
+ boyfriendNotes[id][c].y = -55 + (noteTime + k) * 0.12 * speed
- boyfriendNotes[id][c]:animate("end", false)
- else
- boyfriendNotes[id][c]:animate("hold", false)
- end
+ boyfriendNotes[id][c]:animate("hold", false)
end
+
+ c = #boyfriendNotes[id]
+
+ boyfriendNotes[id][c]:animate("end", false)
end
else
local id = noteType + 1
@@ -390,23 +403,26 @@ return {
table.insert(enemyNotes[id], sprite())
enemyNotes[id][c].x = x
- enemyNotes[id][c].y = -90 + noteTime * 0.12 * speed
+ enemyNotes[id][c].y = -55 + noteTime * 0.12 * speed
+
enemyNotes[id][c]:animate("on", false)
+
if chart[i].sectionNotes[j].noteLength > 0 then
- for k = 71 / speed, chart[i].sectionNotes[j].noteLength, 71 / speed do
+ local c
+
+ for k = 42 / speed, chart[i].sectionNotes[j].noteLength, 42 / speed do
local c = #enemyNotes[id] + 1
table.insert(enemyNotes[id], sprite())
enemyNotes[id][c].x = x
- enemyNotes[id][c].y = -90 + (noteTime + k) * 0.12 * speed
- if k > chart[i].sectionNotes[j].noteLength - 71 / speed then
- enemyNotes[id][c].y = enemyNotes[id][c].y + 10
+ enemyNotes[id][c].y = -55 + (noteTime + k) * 0.12 * speed
- enemyNotes[id][c]:animate("end", false)
- else
- enemyNotes[id][c]:animate("hold", false)
- end
+ enemyNotes[id][c]:animate("hold", false)
end
+
+ c = #enemyNotes[id]
+
+ enemyNotes[id][c]:animate("end", false)
end
end
end
@@ -571,7 +587,7 @@ return {
end
if #enemyNote > 0 then
- if (not settings.downscroll and enemyNote[1].y - musicPos <= -90) or (settings.downscroll and enemyNote[1].y - musicPos >= 90) then
+ if (not settings.downscroll and enemyNote[1].y - musicPos <= -55) or (settings.downscroll and enemyNote[1].y - musicPos >= 55) then
voices:setVolume(1)
enemyArrow:animate("confirm", false)
@@ -587,7 +603,7 @@ return {
end
if #boyfriendNote > 0 then
- if (not settings.downscroll and boyfriendNote[1].y - musicPos < -110) or (settings.downscroll and boyfriendNote[1].y - musicPos > 110) then
+ if (not settings.downscroll and boyfriendNote[1].y - musicPos < -75) or (settings.downscroll and boyfriendNote[1].y - musicPos > 75) then
if inst then
voices:setVolume(0)
end
@@ -611,14 +627,14 @@ return {
if #boyfriendNote > 0 then
for i = 1, #boyfriendNote do
if boyfriendNote[i] and boyfriendNote[i]:getAnimName() == "on" then
- if (not settings.downscroll and boyfriendNote[i].y - musicPos <= -66) or (settings.downscroll and boyfriendNote[i].y - musicPos >= 66) then
+ if (not settings.downscroll and boyfriendNote[i].y - musicPos <= -31) or (settings.downscroll and boyfriendNote[i].y - musicPos >= 31) then
local notePos
local ratingAnim
if settings.downscroll then
- notePos = math.abs(90 - (boyfriendNote[i].y - musicPos))
+ notePos = math.abs(55 - (boyfriendNote[i].y - musicPos))
else
- notePos = math.abs(-90 - (boyfriendNote[i].y - musicPos))
+ notePos = math.abs(-55 - (boyfriendNote[i].y - musicPos))
end
voices:setVolume(1)
@@ -642,7 +658,6 @@ return {
end
combo = combo + 1
- --[[
rating:animate(ratingAnim, false)
numbers[1]:animate(tostring(math.floor(combo / 100 % 10), false))
numbers[2]:animate(tostring(math.floor(combo / 10 % 10), false))
@@ -653,17 +668,16 @@ return {
end
ratingVisibility[1] = 1
- rating.y = girlfriend.y - 50
+ rating.y = girlfriend.y + 5
for i = 1, 3 do
- numbers[i].y = girlfriend.y + 50
+ numbers[i].y = girlfriend.y + 22
end
ratingTimers[1] = Timer.tween(2, ratingVisibility, {0})
- ratingTimers[2] = Timer.tween(2, rating, {y = girlfriend.y - 100}, "out-elastic")
- ratingTimers[3] = Timer.tween(2, numbers[1], {y = girlfriend.y + love.math.random(-10, 10)}, "out-elastic")
- ratingTimers[4] = Timer.tween(2, numbers[2], {y = girlfriend.y + love.math.random(-10, 10)}, "out-elastic")
- ratingTimers[5] = Timer.tween(2, numbers[3], {y = girlfriend.y + love.math.random(-10, 10)}, "out-elastic")
- --]]
+ ratingTimers[2] = Timer.tween(2, rating, {y = girlfriend.y - 10}, "out-elastic")
+ ratingTimers[3] = Timer.tween(2, numbers[1], {y = girlfriend.y + love.math.random(6, 10)}, "out-elastic")
+ ratingTimers[4] = Timer.tween(2, numbers[2], {y = girlfriend.y + love.math.random(6, 10)}, "out-elastic")
+ ratingTimers[5] = Timer.tween(2, numbers[3], {y = girlfriend.y + love.math.random(6, 10)}, "out-elastic")
table.remove(boyfriendNote, i)
@@ -696,7 +710,7 @@ return {
if #boyfriendNote > 0 then
if input:down(curInput) then
- if ((not settings.downscroll and boyfriendNote[1].y - musicPos <= -90) or (settings.downscroll and boyfriendNote[1].y - musicPos >= 90)) and (boyfriendNote[1]:getAnimName() == "hold" or boyfriendNote[1]:getAnimName() == "end") then
+ if ((not settings.downscroll and boyfriendNote[1].y - musicPos <= -55) or (settings.downscroll and boyfriendNote[1].y - musicPos >= 55)) and (boyfriendNote[1]:getAnimName() == "hold" or boyfriendNote[1]:getAnimName() == "end") then
voices:setVolume(1)
table.remove(boyfriendNote, 1)
@@ -733,10 +747,10 @@ return {
Timer.tween(
2,
cam,
- {x = -boyfriend.x, y = -boyfriend.y, sizeX = camScale.x, sizeY = camScale.y},
+ {x = -fakeBoyfriend.x, y = -fakeBoyfriend.y, sizeX = camScale.x, sizeY = camScale.y},
"out-quad",
function()
- inst = love.audio.newSource("music/game-over.ogg", "stream")
+ inst = love.audio.newSource("music/pixel/game-over.ogg", "stream")
inst:setLooping(true)
inst:play()
@@ -745,15 +759,15 @@ return {
)
end
- enemyIcon.x = 85 - health * 2
- boyfriendIcon.x = 117 - health * 2
+ enemyIcon.x = 65 - health * 1.5
+ boyfriendIcon.x = 85 - health * 1.5
if musicThres ~= oldMusicThres and math.fmod(musicTime, 60000 / bpm) < 100 then
if enemyIconTimer then Timer.cancel(enemyIconTimer) end
if boyfriendIconTimer then Timer.cancel(boyfriendIconTimer) end
- enemyIconTimer = Timer.tween((60 / bpm) / 16, enemyIcon, {sizeX = 1.75, sizeY = 1.75}, "out-quad", function() enemyIconTimer = Timer.tween((60 / bpm), enemyIcon, {sizeX = 1.5, sizeY = 1.5}, "out-quad") end)
- boyfriendIconTimer = Timer.tween((60 / bpm) / 16, boyfriendIcon, {sizeX = -1.75, sizeY = 1.75}, "out-quad", function() boyfriendIconTimer = Timer.tween((60 / bpm), boyfriendIcon, {sizeX = -1.5, sizeY = 1.5}, "out-quad") end)
+ enemyIconTimer = Timer.tween((60 / bpm) / 16, enemyIcon, {sizeX = 1.25, sizeY = 1.25}, "out-quad", function() enemyIconTimer = Timer.tween((60 / bpm), enemyIcon, {sizeX = 1, sizeY = 1}, "out-quad") end)
+ boyfriendIconTimer = Timer.tween((60 / bpm) / 16, boyfriendIcon, {sizeX = -1.25, sizeY = 1.25}, "out-quad", function() boyfriendIconTimer = Timer.tween((60 / bpm), boyfriendIcon, {sizeX = -1, sizeY = 1}, "out-quad") end)
end
if input:pressed("gameBack") then
@@ -769,11 +783,11 @@ return {
draw = function(self)
if gameOver then
love.graphics.push()
- love.graphics.translate(graphics.getWidth(), graphics.getHeight())
+ love.graphics.translate(math.floor(graphics.getWidth() / 2), math.floor(graphics.getHeight() / 2))
love.graphics.push()
love.graphics.scale(cam.sizeX, cam.sizeY)
- love.graphics.translate(cam.x, cam.y)
+ love.graphics.translate(math.floor(cam.x), math.floor(cam.y))
fakeBoyfriend:draw()
love.graphics.pop()
@@ -783,7 +797,11 @@ return {
drawRating = function(self, multiplier)
love.graphics.push()
- love.graphics.translate(cam.x * multiplier, cam.y * multiplier)
+ if multiplier then
+ love.graphics.translate(cam.x * multiplier, cam.y * multiplier)
+ else
+ love.graphics.translate(cam.x, cam.y)
+ end
graphics.setColor(1, 1, 1, ratingVisibility[1])
rating:draw()
@@ -826,15 +844,15 @@ return {
if settings.downscroll then
if animName == "hold" or animName == "end" then
- graphics.setColor(1, 1, 1, math.min(0.5, (110 - (boyfriendNotes[i][j].y - musicPos)) / 30))
+ graphics.setColor(1, 1, 1, math.min(0.5, (75 - (boyfriendNotes[i][j].y - musicPos)) / 30))
else
- graphics.setColor(1, 1, 1, math.min(1, (110 - (boyfriendNotes[i][j].y - musicPos)) / 15))
+ graphics.setColor(1, 1, 1, math.min(1, (75 - (boyfriendNotes[i][j].y - musicPos)) / 15))
end
else
if animName == "hold" or animName == "end" then
- graphics.setColor(1, 1, 1, math.min(0.5, (110 + (boyfriendNotes[i][j].y - musicPos)) / 30))
+ graphics.setColor(1, 1, 1, math.min(0.5, (75 + (boyfriendNotes[i][j].y - musicPos)) / 30))
else
- graphics.setColor(1, 1, 1, math.min(1, (110 + (boyfriendNotes[i][j].y - musicPos)) / 15))
+ graphics.setColor(1, 1, 1, math.min(1, (75 + (boyfriendNotes[i][j].y - musicPos)) / 15))
end
end
boyfriendNotes[i][j]:draw()
@@ -846,22 +864,22 @@ return {
if settings.downscroll then
graphics.setColor(1, 0, 0)
- love.graphics.rectangle("fill", -100, -90, 200, 25)
+ love.graphics.rectangle("fill", -75, -55, 150, 5)
graphics.setColor(0, 1, 0)
- love.graphics.rectangle("fill", 100, -90, -health * 2, 5)
+ love.graphics.rectangle("fill", 75, -55, math.floor(-health * 1.5), 5)
graphics.setColor(0, 0, 0)
- love.graphics.setLineWidth(10)
- love.graphics.rectangle("line", -100, -90, 200, 5)
+ love.graphics.setLineWidth(2)
+ love.graphics.rectangle("line", -75, -55, 150, 5)
love.graphics.setLineWidth(1)
graphics.setColor(1, 1, 1)
else
graphics.setColor(1, 0, 0)
- love.graphics.rectangle("fill", -100, 70, 200, 25)
+ love.graphics.rectangle("fill", -75, 45, 150, 5)
graphics.setColor(0, 1, 0)
- love.graphics.rectangle("fill", 100, 70, -health * 2, 5)
+ love.graphics.rectangle("fill", 75, 45, math.floor(-health * 1.5), 5)
graphics.setColor(0, 0, 0)
- love.graphics.setLineWidth(10)
- love.graphics.rectangle("line", -100, 70, 200, 5)
+ love.graphics.setLineWidth(2)
+ love.graphics.rectangle("line", -75, 45, 150, 5)
love.graphics.setLineWidth(1)
graphics.setColor(1, 1, 1)
end
@@ -870,9 +888,9 @@ return {
enemyIcon:draw()
if settings.downscroll then
- love.graphics.print("Score: " .. score, 60, -70)
+ love.graphics.print("Score: " .. score, 10, -50)
else
- love.graphics.print("Score: " .. score, 60, 90)
+ love.graphics.print("Score: " .. score, 10, 50)
end
love.graphics.pop()
end,
diff --git a/src/love/weeks.lua b/src/love/weeks.lua
index 38d45d31..1c48c511 100644
--- a/src/love/weeks.lua
+++ b/src/love/weeks.lua
@@ -83,10 +83,6 @@ return {
end
enemyIcon.sizeX, enemyIcon.sizeY = 1.5, 1.5
boyfriendIcon.sizeX, boyfriendIcon.sizeY = -1.5, 1.5
-
- for i = 1, 3 do
- sounds["miss"][i]:setVolume(0.25)
- end
end,
load = function(self)
@@ -200,23 +196,28 @@ return {
table.insert(enemyNotes[id], sprite())
enemyNotes[id][c].x = x
enemyNotes[id][c].y = 400 - noteTime * 0.6 * speed
+
enemyNotes[id][c]:animate("on", false)
+
if chart[i].sectionNotes[j].noteLength > 0 then
+ local c
+
for k = 71 / speed, chart[i].sectionNotes[j].noteLength, 71 / speed do
local c = #enemyNotes[id] + 1
table.insert(enemyNotes[id], sprite())
enemyNotes[id][c].x = x
enemyNotes[id][c].y = 400 - (noteTime + k) * 0.6 * speed
- if k > chart[i].sectionNotes[j].noteLength - 71 / speed then
- enemyNotes[id][c].y = enemyNotes[id][c].y - 11
- enemyNotes[id][c].orientation = math.pi
- enemyNotes[id][c]:animate("end", false)
- else
- enemyNotes[id][c]:animate("hold", false)
- end
+ enemyNotes[id][c]:animate("hold", false)
end
+
+ c = #enemyNotes[id]
+
+ enemyNotes[id][c].offsetY = -10
+ enemyNotes[id][c].sizeY = -1
+
+ enemyNotes[id][c]:animate("end", false)
end
else
local id = noteType + 1
@@ -226,23 +227,28 @@ return {
table.insert(boyfriendNotes[id], sprite())
boyfriendNotes[id][c].x = x
boyfriendNotes[id][c].y = 400 - noteTime * 0.6 * speed
+
boyfriendNotes[id][c]:animate("on", false)
+
if chart[i].sectionNotes[j].noteLength > 0 then
+ local c
+
for k = 71 / speed, chart[i].sectionNotes[j].noteLength, 71 / speed do
local c = #boyfriendNotes[id] + 1
table.insert(boyfriendNotes[id], sprite())
boyfriendNotes[id][c].x = x
boyfriendNotes[id][c].y = 400 - (noteTime + k) * 0.6 * speed
- if k > chart[i].sectionNotes[j].noteLength - 71 / speed then
- boyfriendNotes[id][c].y = boyfriendNotes[id][c].y - 11
- boyfriendNotes[id][c].orientation = math.pi
- boyfriendNotes[id][c]:animate("end", false)
- else
- boyfriendNotes[id][c]:animate("hold", false)
- end
+ boyfriendNotes[id][c]:animate("hold", false)
end
+
+ c = #boyfriendNotes[id]
+
+ boyfriendNotes[id][c].offsetY = -10
+ boyfriendNotes[id][c].sizeY = -1
+
+ boyfriendNotes[id][c]:animate("end", false)
end
end
else
@@ -254,23 +260,28 @@ return {
table.insert(boyfriendNotes[id], sprite())
boyfriendNotes[id][c].x = x
boyfriendNotes[id][c].y = 400 - noteTime * 0.6 * speed
+
boyfriendNotes[id][c]:animate("on", false)
+
if chart[i].sectionNotes[j].noteLength > 0 then
+ local c
+
for k = 71 / speed, chart[i].sectionNotes[j].noteLength, 71 / speed do
local c = #boyfriendNotes[id] + 1
table.insert(boyfriendNotes[id], sprite())
boyfriendNotes[id][c].x = x
boyfriendNotes[id][c].y = 400 - (noteTime + k) * 0.6 * speed
- if k > chart[i].sectionNotes[j].noteLength - 71 / speed then
- boyfriendNotes[id][c].y = boyfriendNotes[id][c].y - 11
- boyfriendNotes[id][c].orientation = math.pi
- boyfriendNotes[id][c]:animate("end", false)
- else
- boyfriendNotes[id][c]:animate("hold", false)
- end
+ boyfriendNotes[id][c]:animate("hold", false)
end
+
+ c = #boyfriendNotes[id]
+
+ boyfriendNotes[id][c].offsetY = -10
+ boyfriendNotes[id][c].sizeY = -1
+
+ boyfriendNotes[id][c]:animate("end", false)
end
else
local id = noteType + 1
@@ -280,23 +291,28 @@ return {
table.insert(enemyNotes[id], sprite())
enemyNotes[id][c].x = x
enemyNotes[id][c].y = 400 - noteTime * 0.6 * speed
+
enemyNotes[id][c]:animate("on", false)
+
if chart[i].sectionNotes[j].noteLength > 0 then
+ local c
+
for k = 71 / speed, chart[i].sectionNotes[j].noteLength, 71 / speed do
local c = #enemyNotes[id] + 1
table.insert(enemyNotes[id], sprite())
enemyNotes[id][c].x = x
enemyNotes[id][c].y = 400 - (noteTime + k) * 0.6 * speed
- if k > chart[i].sectionNotes[j].noteLength - 71 / speed then
- enemyNotes[id][c].y = enemyNotes[id][c].y - 11
- enemyNotes[id][c].orientation = math.pi
- enemyNotes[id][c]:animate("end", false)
- else
- enemyNotes[id][c]:animate("hold", false)
- end
+ enemyNotes[id][c]:animate("hold", false)
end
+
+ c = #enemyNotes[id]
+
+ enemyNotes[id][c].offsetY = -10
+ enemyNotes[id][c].sizeY = -1
+
+ enemyNotes[id][c]:animate("end", false)
end
end
end
@@ -310,22 +326,27 @@ return {
table.insert(enemyNotes[id], sprite())
enemyNotes[id][c].x = x
enemyNotes[id][c].y = -400 + noteTime * 0.6 * speed
+
enemyNotes[id][c]:animate("on", false)
+
if chart[i].sectionNotes[j].noteLength > 0 then
+ local c
+
for k = 71 / speed, chart[i].sectionNotes[j].noteLength, 71 / speed do
local c = #enemyNotes[id] + 1
table.insert(enemyNotes[id], sprite())
enemyNotes[id][c].x = x
enemyNotes[id][c].y = -400 + (noteTime + k) * 0.6 * speed
- if k > chart[i].sectionNotes[j].noteLength - 71 / speed then
- enemyNotes[id][c].y = enemyNotes[id][c].y + 10
- enemyNotes[id][c]:animate("end", false)
- else
- enemyNotes[id][c]:animate("hold", false)
- end
+ enemyNotes[id][c]:animate("hold", false)
end
+
+ c = #enemyNotes[id]
+
+ enemyNotes[id][c].offsetY = -10
+
+ enemyNotes[id][c]:animate("end", false)
end
else
local id = noteType + 1
@@ -335,22 +356,27 @@ return {
table.insert(boyfriendNotes[id], sprite())
boyfriendNotes[id][c].x = x
boyfriendNotes[id][c].y = -400 + noteTime * 0.6 * speed
+
boyfriendNotes[id][c]:animate("on", false)
+
if chart[i].sectionNotes[j].noteLength > 0 then
+ local c
+
for k = 71 / speed, chart[i].sectionNotes[j].noteLength, 71 / speed do
local c = #boyfriendNotes[id] + 1
table.insert(boyfriendNotes[id], sprite())
boyfriendNotes[id][c].x = x
boyfriendNotes[id][c].y = -400 + (noteTime + k) * 0.6 * speed
- if k > chart[i].sectionNotes[j].noteLength - 71 / speed then
- boyfriendNotes[id][c].y = boyfriendNotes[id][c].y + 10
- boyfriendNotes[id][c]:animate("end", false)
- else
- boyfriendNotes[id][c]:animate("hold", false)
- end
+ boyfriendNotes[id][c]:animate("hold", false)
end
+
+ c = #boyfriendNotes[id]
+
+ boyfriendNotes[id][c].offsetY = -10
+
+ boyfriendNotes[id][c]:animate("end", false)
end
end
else
@@ -362,22 +388,27 @@ return {
table.insert(boyfriendNotes[id], sprite())
boyfriendNotes[id][c].x = x
boyfriendNotes[id][c].y = -400 + noteTime * 0.6 * speed
+
boyfriendNotes[id][c]:animate("on", false)
+
if chart[i].sectionNotes[j].noteLength > 0 then
+ local c
+
for k = 71 / speed, chart[i].sectionNotes[j].noteLength, 71 / speed do
local c = #boyfriendNotes[id] + 1
table.insert(boyfriendNotes[id], sprite())
boyfriendNotes[id][c].x = x
boyfriendNotes[id][c].y = -400 + (noteTime + k) * 0.6 * speed
- if k > chart[i].sectionNotes[j].noteLength - 71 / speed then
- boyfriendNotes[id][c].y = boyfriendNotes[id][c].y + 10
- boyfriendNotes[id][c]:animate("end", false)
- else
- boyfriendNotes[id][c]:animate("hold", false)
- end
+ boyfriendNotes[id][c]:animate("hold", false)
end
+
+ c = #boyfriendNotes[id]
+
+ boyfriendNotes[id][c].offsetY = -10
+
+ boyfriendNotes[id][c]:animate("end", false)
end
else
local id = noteType + 1
@@ -387,8 +418,12 @@ return {
table.insert(enemyNotes[id], sprite())
enemyNotes[id][c].x = x
enemyNotes[id][c].y = -400 + noteTime * 0.6 * speed
+
enemyNotes[id][c]:animate("on", false)
+
if chart[i].sectionNotes[j].noteLength > 0 then
+ local c
+
for k = 71 / speed, chart[i].sectionNotes[j].noteLength, 71 / speed do
local c = #enemyNotes[id] + 1
@@ -396,13 +431,19 @@ return {
enemyNotes[id][c].x = x
enemyNotes[id][c].y = -400 + (noteTime + k) * 0.6 * speed
if k > chart[i].sectionNotes[j].noteLength - 71 / speed then
- enemyNotes[id][c].y = enemyNotes[id][c].y + 10
+ enemyNotes[id][c].offsetY = -10
enemyNotes[id][c]:animate("end", false)
else
enemyNotes[id][c]:animate("hold", false)
end
end
+
+ c = #enemyNotes[id]
+
+ enemyNotes[id][c].offsetY = -10
+
+ enemyNotes[id][c]:animate("end", false)
end
end
end
@@ -729,28 +770,51 @@ return {
if fakeBoyfriend then
fakeBoyfriend:animate("dies", false)
+
+ Timer.clear()
+
+ Timer.tween(
+ 2,
+ cam,
+ {x = -fakeBoyfriend.x, y = -fakeBoyfriend.y, sizeX = camScale.x, sizeY = camScale.y},
+ "out-quad",
+ function()
+ inst = love.audio.newSource("music/game-over.ogg", "stream")
+ inst:setLooping(true)
+ inst:play()
+
+ if fakeBoyfriend then
+ fakeBoyfriend:animate("dead", true)
+ else
+ boyfriend:animate("dead", true)
+ end
+ end
+ )
else
boyfriend:animate("dies", false)
- end
- Timer.clear()
- Timer.tween(
- 2,
- cam,
- {x = -boyfriend.x, y = -boyfriend.y, sizeX = camScale.x, sizeY = camScale.y},
- "out-quad",
- function()
- inst = love.audio.newSource("music/game-over.ogg", "stream")
- inst:setLooping(true)
- inst:play()
+ Timer.clear()
- if fakeBoyfriend then
- fakeBoyfriend:animate("dead", true)
- else
- boyfriend:animate("dead", true)
+ Timer.tween(
+ 2,
+ cam,
+ {x = -boyfriend.x, y = -boyfriend.y, sizeX = camScale.x, sizeY = camScale.y},
+ "out-quad",
+ function()
+ inst = love.audio.newSource("music/game-over.ogg", "stream")
+ inst:setLooping(true)
+ inst:play()
+
+ if fakeBoyfriend then
+ fakeBoyfriend:animate("dead", true)
+ else
+ boyfriend:animate("dead", true)
+ end
end
- end
- )
+ )
+ end
+
+
elseif health <= 20 and boyfriendIcon:getAnimName() == "boyfriend" then
boyfriendIcon:animate("boyfriend losing", false)
end
@@ -779,7 +843,7 @@ return {
draw = function(self)
if gameOver then
love.graphics.push()
- love.graphics.translate(lovesize.getWidth() / 2, lovesize.getHeight() / 2)
+ love.graphics.translate(graphics.getWidth() / 2, graphics.getHeight() / 2)
love.graphics.push()
love.graphics.scale(cam.sizeX, cam.sizeY)
@@ -797,7 +861,11 @@ return {
drawRating = function(self, multiplier)
love.graphics.push()
- love.graphics.translate(cam.x * multiplier, cam.y * multiplier)
+ if multiplier then
+ love.graphics.translate(cam.x * multiplier, cam.y * multiplier)
+ else
+ love.graphics.translate(cam.x, cam.y)
+ end
graphics.setColor(1, 1, 1, ratingVisibility[1])
rating:draw()
diff --git a/src/love/weeks/tutorial.lua b/src/love/weeks/tutorial.lua
index 630ab363..ad75725d 100644
--- a/src/love/weeks/tutorial.lua
+++ b/src/love/weeks/tutorial.lua
@@ -17,12 +17,16 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
------------------------------------------------------------------------------]]
+local difficulty
+
local stageBack, stageFront, curtains
return {
- enter = function(self)
+ enter = function(self, previous, songNum, songAppend)
weeks:enter()
+ difficulty = songAppend
+
stageBack = graphics.newImage(love.graphics.newImage(graphics.imagePath("week1/stage-back")))
stageFront = graphics.newImage(love.graphics.newImage(graphics.imagePath("week1/stage-front")))
curtains = graphics.newImage(love.graphics.newImage(graphics.imagePath("week1/curtains")))
@@ -46,7 +50,7 @@ return {
inst = nil
voices = love.audio.newSource("music/tutorial/tutorial.ogg", "stream")
- self:initUI(songNum)
+ self:initUI()
weeks:voicesPlay()
end,
@@ -54,7 +58,7 @@ return {
initUI = function(self)
weeks:initUI()
- weeks:generateNotes(love.filesystem.load("charts/tutorial/tutorial" .. songAppend .. ".lua")())
+ weeks:generateNotes(love.filesystem.load("charts/tutorial/tutorial" .. difficulty .. ".lua")())
end,
update = function(self, dt)
@@ -139,7 +143,7 @@ return {
weeks:safeAnimate(boyfriend, "idle", false, 3)
end
- girlfriend.anim.speed = 14.4 / (60 / bpm)
+ girlfriend:setAnimSpeed(14.4 / (60 / bpm))
end
for i = 1, 3 do
diff --git a/src/love/weeks/week1.lua b/src/love/weeks/week1.lua
index 51523c0e..ea2e363d 100644
--- a/src/love/weeks/week1.lua
+++ b/src/love/weeks/week1.lua
@@ -17,12 +17,17 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
------------------------------------------------------------------------------]]
+local song, difficulty
+
local stageBack, stageFront, curtains
return {
- enter = function(self)
+ enter = function(self, previous, songNum, songAppend)
weeks:enter()
+ song = songNum
+ difficulty = songAppend
+
stageBack = graphics.newImage(love.graphics.newImage(graphics.imagePath("week1/stage-back")))
stageFront = graphics.newImage(love.graphics.newImage(graphics.imagePath("week1/stage-front")))
curtains = graphics.newImage(love.graphics.newImage(graphics.imagePath("week1/curtains")))
@@ -44,10 +49,10 @@ return {
load = function(self)
weeks:load()
- if songNum == 3 then
+ if song == 3 then
inst = love.audio.newSource("music/week1/dadbattle-inst.ogg", "stream")
voices = love.audio.newSource("music/week1/dadbattle-voices.ogg", "stream")
- elseif songNum == 2 then
+ elseif song == 2 then
inst = love.audio.newSource("music/week1/fresh-inst.ogg", "stream")
voices = love.audio.newSource("music/week1/fresh-voices.ogg", "stream")
else
@@ -64,12 +69,12 @@ return {
initUI = function(self)
weeks:initUI()
- if songNum == 3 then
- weeks:generateNotes(love.filesystem.load("charts/week1/dadbattle" .. songAppend .. ".lua")())
- elseif songNum == 2 then
- weeks:generateNotes(love.filesystem.load("charts/week1/fresh" .. songAppend .. ".lua")())
+ if song == 3 then
+ weeks:generateNotes(love.filesystem.load("charts/week1/dadbattle" .. difficulty .. ".lua")())
+ elseif song == 2 then
+ weeks:generateNotes(love.filesystem.load("charts/week1/fresh" .. difficulty .. ".lua")())
else
- weeks:generateNotes(love.filesystem.load("charts/week1/bopeebo" .. songAppend .. ".lua")())
+ weeks:generateNotes(love.filesystem.load("charts/week1/bopeebo" .. difficulty .. ".lua")())
end
end,
@@ -100,7 +105,7 @@ return {
weeks:update(dt)
- if songNum == 1 and musicThres ~= oldMusicThres and math.fmod(musicTime + 500, 480000 / bpm) < 100 then
+ if song == 1 and musicThres ~= oldMusicThres and math.fmod(musicTime + 500, 480000 / bpm) < 100 then
boyfriend:animate("hey", false)
end
@@ -115,8 +120,8 @@ return {
end
if not graphics.isFading() and not inst:isPlaying() and not voices:isPlaying() then
- if storyMode and songNum < 3 then
- songNum = songNum + 1
+ if storyMode and song < 3 then
+ song = song + 1
self:load()
else
diff --git a/src/love/weeks/week2.lua b/src/love/weeks/week2.lua
index 8748db95..19d2cf3e 100644
--- a/src/love/weeks/week2.lua
+++ b/src/love/weeks/week2.lua
@@ -17,12 +17,17 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
------------------------------------------------------------------------------]]
+local song, difficulty
+
local hauntedHouse
return {
- enter = function(self)
+ enter = function(self, previous, songNum, songAppend)
weeks:enter()
+ song = songNum
+ difficulty = songAppend
+
cam.sizeX, cam.sizeY = 1.1, 1.1
camScale.x, camScale.y = 1.1, 1.1
@@ -46,7 +51,7 @@ return {
load = function(self)
weeks:load()
- if songNum == 2 then
+ if song == 2 then
inst = love.audio.newSource("music/week2/south-inst.ogg", "stream")
voices = love.audio.newSource("music/week2/south-voices.ogg", "stream")
else
@@ -63,10 +68,10 @@ return {
initUI = function(self)
weeks:initUI()
- if songNum == 2 then
- weeks:generateNotes(love.filesystem.load("charts/week2/south" .. songAppend .. ".lua")())
+ if song == 2 then
+ weeks:generateNotes(love.filesystem.load("charts/week2/south" .. difficulty .. ".lua")())
else
- weeks:generateNotes(love.filesystem.load("charts/week2/spookeez" .. songAppend .. ".lua")())
+ weeks:generateNotes(love.filesystem.load("charts/week2/spookeez" .. difficulty .. ".lua")())
end
end,
@@ -102,7 +107,7 @@ return {
if not hauntedHouse.animated then
hauntedHouse:animate("normal", false)
end
- if songNum == 1 and musicThres ~= oldMusicThres and math.fmod(musicTime, 60000 * (love.math.random(17) + 7) / bpm) < 100 then
+ if song == 1 and musicThres ~= oldMusicThres and math.fmod(musicTime, 60000 * (love.math.random(17) + 7) / bpm) < 100 then
audio.playSound(sounds["thunder"][love.math.random(2)])
hauntedHouse:animate("lightning", false)
@@ -111,24 +116,24 @@ return {
end
if musicThres ~= oldMusicThres and math.fmod(musicTime, 60000 / bpm) < 100 then
- if enemy.anim.name == "idle" then
- enemy.anim.speed = 14.4 / (120 / bpm)
+ if enemy:getAnimName() == "idle" then
+ enemy:setAnimSpeed(14.4 / (120 / bpm))
end
end
if health >= 80 then
- if enemyIcon.anim.name == "skid and pump" then
+ if enemyIcon:getAnimName() == "skid and pump" then
enemyIcon:animate("skid and pump losing", false)
end
else
- if enemyIcon.anim.name == "skid and pump losing" then
+ if enemyIcon:getAnimName() == "skid and pump losing" then
enemyIcon:animate("skid and pump", false)
end
end
if not graphics.isFading() and not inst:isPlaying() and not voices:isPlaying() then
- if storyMode and songNum < 2 then
- songNum = songNum + 1
+ if storyMode and song < 2 then
+ song = song + 1
self:load()
else
diff --git a/src/love/weeks/week3.lua b/src/love/weeks/week3.lua
index 8589ec48..03d00e7e 100644
--- a/src/love/weeks/week3.lua
+++ b/src/love/weeks/week3.lua
@@ -17,13 +17,18 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
------------------------------------------------------------------------------]]
+local song, difficulty
+
local sky, city, cityWindows, behindTrain, street
local winColors, winColor
return {
- enter = function(self)
+ enter = function(self, previous, songNum, songAppend)
weeks:enter()
+ song = songNum
+ difficulty = songAppend
+
cam.sizeX, cam.sizeY = 1, 1
camScale.x, camScale.y = 1, 1
@@ -62,10 +67,10 @@ return {
load = function(self)
weeks:load()
- if songNum == 3 then
+ if song == 3 then
inst = love.audio.newSource("music/week3/blammed-inst.ogg", "stream")
voices = love.audio.newSource("music/week3/blammed-voices.ogg", "stream")
- elseif songNum == 2 then
+ elseif song == 2 then
inst = love.audio.newSource("music/week3/philly-nice-inst.ogg", "stream")
voices = love.audio.newSource("music/week3/philly-nice-voices.ogg", "stream")
else
@@ -82,12 +87,12 @@ return {
initUI = function(self)
weeks:initUI()
- if songNum == 3 then
- weeks:generateNotes(love.filesystem.load("charts/week3/blammed" .. songAppend .. ".lua")())
- elseif songNum == 2 then
- weeks:generateNotes(love.filesystem.load("charts/week3/philly-nice" .. songAppend .. ".lua")())
+ if song == 3 then
+ weeks:generateNotes(love.filesystem.load("charts/week3/blammed" .. difficulty .. ".lua")())
+ elseif song == 2 then
+ weeks:generateNotes(love.filesystem.load("charts/week3/philly-nice" .. difficulty .. ".lua")())
else
- weeks:generateNotes(love.filesystem.load("charts/week3/pico" .. songAppend .. ".lua")())
+ weeks:generateNotes(love.filesystem.load("charts/week3/pico" .. difficulty .. ".lua")())
end
end,
@@ -127,18 +132,18 @@ return {
end
if health >= 80 then
- if enemyIcon.anim.name == "pico" then
+ if enemyIcon:getAnimName() == "pico" then
enemyIcon:animate("pico losing", false)
end
else
- if enemyIcon.anim.name == "pico losing" then
+ if enemyIcon:getAnimName() == "pico losing" then
enemyIcon:animate("pico", false)
end
end
if not graphics.isFading() and not inst:isPlaying() and not voices:isPlaying() then
- if storyMode and songNum < 3 then
- songNum = songNum + 1
+ if storyMode and song < 3 then
+ song = song + 1
self:load()
else
diff --git a/src/love/weeks/week4.lua b/src/love/weeks/week4.lua
index b8c3eb5c..f7d0ba52 100644
--- a/src/love/weeks/week4.lua
+++ b/src/love/weeks/week4.lua
@@ -17,12 +17,14 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
------------------------------------------------------------------------------]]
+local song, difficulty
+
local sunset
local bgLimo, limoDancer, limo
return {
- enter = function(self)
+ enter = function(self, previous, songNum, songAppend)
bpm = 100
enemyFrameTimer = 0
@@ -48,10 +50,11 @@ return {
["numbers"] = love.filesystem.load("sprites/numbers.lua")
}
- sunset = graphics.newImage(love.graphics.newImage(graphics.imagePath("week4/sunset")))
+ song = songNum
+ difficulty = songAppend
+ sunset = graphics.newImage(love.graphics.newImage(graphics.imagePath("week4/sunset")))
- fakeBoyfriend = love.filesystem.load("sprites/boyfriend.lua")() -- Used for game over
bgLimo = love.filesystem.load("sprites/week4/bg-limo.lua")()
limoDancer = love.filesystem.load("sprites/week4/limo-dancer.lua")()
girlfriend = love.filesystem.load("sprites/week4/girlfriend.lua")()
@@ -59,6 +62,7 @@ return {
enemy = love.filesystem.load("sprites/week4/mommy-mearest.lua")()
boyfriend = love.filesystem.load("sprites/week4/boyfriend.lua")()
rating = love.filesystem.load("sprites/rating.lua")()
+ fakeBoyfriend = love.filesystem.load("sprites/boyfriend.lua")() -- Used for game over
fakeBoyfriend.x, fakeBoyfriend.y = 350, -100
bgLimo.y = 250
@@ -93,20 +97,16 @@ return {
enemyIcon:animate("mommy mearest", false)
- for i = 1, 3 do
- sounds["miss"][i]:setVolume(0.25)
- end
-
self:load()
end,
load = function(self)
weeks:load()
- if songNum == 3 then
+ if song == 3 then
inst = love.audio.newSource("music/week4/milf-inst.ogg", "stream")
voices = love.audio.newSource("music/week4/milf-voices.ogg", "stream")
- elseif songNum == 2 then
+ elseif song == 2 then
inst = love.audio.newSource("music/week4/high-inst.ogg", "stream")
voices = love.audio.newSource("music/week4/high-voices.ogg", "stream")
else
@@ -123,12 +123,12 @@ return {
initUI = function(self)
weeks:initUI()
- if songNum == 3 then
- weeks:generateNotes(love.filesystem.load("charts/week4/milf" .. songAppend .. ".lua")())
- elseif songNum == 2 then
- weeks:generateNotes(love.filesystem.load("charts/week4/high" .. songAppend .. ".lua")())
+ if song == 3 then
+ weeks:generateNotes(love.filesystem.load("charts/week4/milf" .. difficulty .. ".lua")())
+ elseif song == 2 then
+ weeks:generateNotes(love.filesystem.load("charts/week4/high" .. difficulty .. ".lua")())
else
- weeks:generateNotes(love.filesystem.load("charts/week4/satin-panties" .. songAppend .. ".lua")())
+ weeks:generateNotes(love.filesystem.load("charts/week4/satin-panties" .. difficulty .. ".lua")())
end
end,
@@ -160,7 +160,7 @@ return {
weeks:update(dt)
-- Hardcoded M.I.L.F camera scaling
- if songNum == 3 and musicTime > 56000 and musicTime < 67000 and musicThres ~= oldMusicThres and math.fmod(musicTime, 60000 / bpm) < 100 then
+ if song == 3 and musicTime > 56000 and musicTime < 67000 and musicThres ~= oldMusicThres and math.fmod(musicTime, 60000 / bpm) < 100 then
if camScaleTimer then Timer.cancel(camScaleTimer) end
camScaleTimer = Timer.tween((60 / bpm) / 16, cam, {sizeX = camScale.x * 1.05, sizeY = camScale.y * 1.05}, "out-quad", function() camScaleTimer = Timer.tween((60 / bpm), cam, {sizeX = camScale.x, sizeY = camScale.y}, "out-quad") end)
@@ -173,22 +173,22 @@ return {
if musicThres ~= oldMusicThres and math.fmod(musicTime, 120000 / bpm) < 100 then
limoDancer:animate("anim", false)
- limoDancer.anim.speed = 14.4 / (60 / bpm)
+ limoDancer:setAnimSpeed(14.4 / (60 / bpm))
end
if health >= 80 then
- if enemyIcon.anim.name == "mommy mearest" then
+ if enemyIcon:getAnimName() == "mommy mearest" then
enemyIcon:animate("mommy mearest losing", false)
end
else
- if enemyIcon.anim.name == "mommy mearest losing" then
+ if enemyIcon:getAnimName() == "mommy mearest losing" then
enemyIcon:animate("mommy mearest", false)
end
end
- if graphics.isFading() and not inst:isPlaying() and not voices:isPlaying() then
- if storyMode and songNum < 3 then
- songNum = songNum + 1
+ if not graphics.isFading() and not inst:isPlaying() and not voices:isPlaying() then
+ if storyMode and song < 3 then
+ song = song + 1
self:load()
else
diff --git a/src/love/weeks/week5.lua b/src/love/weeks/week5.lua
index 99b0881d..ced65e6d 100644
--- a/src/love/weeks/week5.lua
+++ b/src/love/weeks/week5.lua
@@ -17,14 +17,16 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
------------------------------------------------------------------------------]]
-local walls, escalator, christmasTree, snow -- Images
+local song, difficulty
-local topBop, bottomBop, santa -- Sprites
+local walls, escalator, christmasTree, snow
+
+local topBop, bottomBop, santa
local scaryIntro = false
return {
- enter = function(self)
+ enter = function(self, previous, songNum, songAppend)
cam.sizeX, cam.sizeY = 0.7, 0.7
camScale.x, camScale.y = 0.7, 0.7
@@ -56,30 +58,38 @@ return {
["numbers"] = love.filesystem.load("sprites/numbers.lua")
}
- walls = graphics.newImage(love.graphics.newImage(graphics.imagePath("week5/walls")))
- escalator = graphics.newImage(love.graphics.newImage(graphics.imagePath("week5/escalator")))
- christmasTree = graphics.newImage(love.graphics.newImage(graphics.imagePath("week5/christmas-tree")))
- snow = graphics.newImage(love.graphics.newImage(graphics.imagePath("week5/snow")))
+ song = songNum
+ difficulty = songAppend
+
+ if song ~= 3 then
+ walls = graphics.newImage(love.graphics.newImage(graphics.imagePath("week5/walls")))
+ escalator = graphics.newImage(love.graphics.newImage(graphics.imagePath("week5/escalator")))
+ christmasTree = graphics.newImage(love.graphics.newImage(graphics.imagePath("week5/christmas-tree")))
+ snow = graphics.newImage(love.graphics.newImage(graphics.imagePath("week5/snow")))
+
+ escalator.x = 125
+ christmasTree.x = 75
+ snow.y = 850
+ snow.sizeX, snow.sizeY = 2, 2
+
+ topBop = love.filesystem.load("sprites/week5/top-bop.lua")()
+ bottomBop = love.filesystem.load("sprites/week5/bottom-bop.lua")()
+ santa = love.filesystem.load("sprites/week5/santa.lua")()
- escalator.x = 125
- christmasTree.x = 75
- snow.y = 850
- snow.sizeX, snow.sizeY = 2, 2
+ topBop.x, topBop.y = 60, -250
+ bottomBop.x, bottomBop.y = -75, 375
+ santa.x, santa.y = -1350, 410
+ end
- topBop = love.filesystem.load("sprites/week5/top-bop.lua")()
- bottomBop = love.filesystem.load("sprites/week5/bottom-bop.lua")()
girlfriend = love.filesystem.load("sprites/week5/girlfriend.lua")()
- santa = love.filesystem.load("sprites/week5/santa.lua")()
enemy = love.filesystem.load("sprites/week5/dearest-duo.lua")()
boyfriend = love.filesystem.load("sprites/week5/boyfriend.lua")()
fakeBoyfriend = love.filesystem.load("sprites/boyfriend.lua")() -- Used for game over
rating = love.filesystem.load("sprites/rating.lua")()
- topBop.x, topBop.y = 60, -250
- bottomBop.x, bottomBop.y = -75, 375
+
girlfriend.x, girlfriend.y = -50, 410
- santa.x, santa.y = -1350, 410
enemy.x, enemy.y = -780, 410
boyfriend.x, boyfriend.y = 300, 620
fakeBoyfriend.x, fakeBoyfriend.y = 300, 620
@@ -107,17 +117,13 @@ return {
enemyIcon:animate("dearest duo", false)
- for i = 1, 3 do
- sounds["miss"][i]:setVolume(0.25)
- end
-
self:load()
end,
load = function(self)
weeks:load()
- if songNum == 3 then
+ if song == 3 then
camScale.x, camScale.y = 0.9, 0.9
if scaryIntro then
@@ -147,7 +153,7 @@ return {
inst = love.audio.newSource("music/week5/winter-horrorland-inst.ogg", "stream")
voices = love.audio.newSource("music/week5/winter-horrorland-voices.ogg", "stream")
- elseif songNum == 2 then
+ elseif song == 2 then
inst = love.audio.newSource("music/week5/eggnog-inst.ogg", "stream")
voices = love.audio.newSource("music/week5/eggnog-voices.ogg", "stream")
else
@@ -180,12 +186,12 @@ return {
initUI = function(self)
weeks:initUI()
- if songNum == 3 then
- weeks:generateNotes(love.filesystem.load("charts/week5/winter-horrorland" .. songAppend .. ".lua")())
- elseif songNum == 2 then
- weeks:generateNotes(love.filesystem.load("charts/week5/eggnog" .. songAppend .. ".lua")())
+ if song == 3 then
+ weeks:generateNotes(love.filesystem.load("charts/week5/winter-horrorland" .. difficulty .. ".lua")())
+ elseif song == 2 then
+ weeks:generateNotes(love.filesystem.load("charts/week5/eggnog" .. difficulty .. ".lua")())
else
- weeks:generateNotes(love.filesystem.load("charts/week5/cocoa" .. songAppend .. ".lua")())
+ weeks:generateNotes(love.filesystem.load("charts/week5/cocoa" .. difficulty .. ".lua")())
end
end,
@@ -217,7 +223,7 @@ return {
if not scaryIntro then
weeks:update(dt)
- if songNum ~= 3 then
+ if song ~= 3 then
topBop:update(dt)
bottomBop:update(dt)
santa:update(dt)
@@ -229,34 +235,34 @@ return {
end
end
- if songNum == 3 then
+ if song == 3 then
if health >= 80 then
- if enemyIcon.anim.name == "monster" then
+ if enemyIcon:getAnimName() == "monster" then
enemyIcon:animate("monster losing", false)
end
else
- if enemyIcon.anim.name == "monster losing" then
+ if enemyIcon:getAnimName() == "monster losing" then
enemyIcon:animate("monster", false)
end
end
else
if health >= 80 then
- if enemyIcon.anim.name == "dearest duo" then
+ if enemyIcon:getAnimName() == "dearest duo" then
enemyIcon:animate("dearest duo losing", false)
end
else
- if enemyIcon.anim.name == "dearest duo losing" then
+ if enemyIcon:getAnimName() == "dearest duo losing" then
enemyIcon:animate("dearest duo", false)
end
end
end
if not scaryIntro and not graphics.isFading() and not inst:isPlaying() and not voices:isPlaying() then
- if storyMode and songNum < 3 then
- songNum = songNum + 1
+ if storyMode and song < 3 then
+ song = song + 1
-- Winter Horrorland setup
- if songNum == 3 then
+ if song == 3 then
scaryIntro = true
audio.playSound(sounds["lights off"])
@@ -290,7 +296,7 @@ return {
love.graphics.translate(cam.x * 0.5, cam.y * 0.5)
walls:draw()
- if songNum ~= 3 then
+ if song ~= 3 then
topBop:draw()
escalator:draw()
end
@@ -299,7 +305,7 @@ return {
love.graphics.push()
love.graphics.translate(cam.x * 0.9, cam.y * 0.9)
- if songNum ~= 3 then
+ if song ~= 3 then
bottomBop:draw()
end
@@ -310,7 +316,7 @@ return {
love.graphics.push()
love.graphics.translate(cam.x, cam.y)
- if songNum ~= 3 then
+ if song ~= 3 then
santa:draw()
end
enemy:draw()
@@ -328,7 +334,7 @@ return {
love.graphics.scale(0.7, 0.7)
for i = 1, 4 do
- if enemyArrows[i].anim.name == "off" then
+ if enemyArrows[i]:getAnimName() == "off" then
graphics.setColor(0.6, 0.6, 0.6)
end
enemyArrows[i]:draw()
@@ -340,7 +346,7 @@ return {
for j = #enemyNotes[i], 1, -1 do
if (not settings.downscroll and enemyNotes[i][j].y - musicPos <= 560) or (settings.downscroll and enemyNotes[i][j].y - musicPos >= -560) then
- local animName = enemyNotes[i][j].anim.name
+ local animName = enemyNotes[i][j]:getAnimName()
if animName == "hold" or animName == "end" then
graphics.setColor(1, 1, 1, 0.5)
@@ -351,7 +357,7 @@ return {
end
for j = #boyfriendNotes[i], 1, -1 do
if (not settings.downscroll and boyfriendNotes[i][j].y - musicPos <= 560) or (settings.downscroll and boyfriendNotes[i][j].y - musicPos >= -560) then
- local animName = boyfriendNotes[i][j].anim.name
+ local animName = boyfriendNotes[i][j]:getAnimName()
if settings.downscroll then
if animName == "hold" or animName == "end" then
diff --git a/src/love/weeks/week6.lua b/src/love/weeks/week6.lua
index 62075fa4..d9998da4 100644
--- a/src/love/weeks/week6.lua
+++ b/src/love/weeks/week6.lua
@@ -17,30 +17,47 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
------------------------------------------------------------------------------]]
-local canvas
+local canvas, font
-local sky, school, street
+local song, difficulty
+
+local sky, school, street, treesBack
+
+local petals, trees, freaks
return {
- enter = function(self)
+ enter = function(self, previous, songNum, songAppend)
love.graphics.setDefaultFilter("nearest")
status.setNoResize(true)
canvas = love.graphics.newCanvas(256, 144)
- canvas:setFilter("nearest")
+ font = love.graphics.newFont("fonts/pixel_small.fnt")
weeksPixel:enter()
+ song = songNum
+ difficulty = songAppend
+
cam.sizeX, cam.sizeY = 1, 1
camScale.x, camScale.y = 1, 1
- sky = graphics.newPixelImage(love.graphics.newImage(graphics.imagePath("week6/sky")))
- school = graphics.newPixelImage(love.graphics.newImage(graphics.imagePath("week6/school")))
- street = graphics.newPixelImage(love.graphics.newImage(graphics.imagePath("week6/street")))
+ if song ~= 3 then
+ sky = graphics.newImage(love.graphics.newImage(graphics.imagePath("week6/sky")))
+ school = graphics.newImage(love.graphics.newImage(graphics.imagePath("week6/school")))
+ street = graphics.newImage(love.graphics.newImage(graphics.imagePath("week6/street")))
+ treesBack = graphics.newImage(love.graphics.newImage(graphics.imagePath("week6/trees-back")))
+
+ trees = love.filesystem.load("sprites/week6/trees.lua")()
+ petals = love.filesystem.load("sprites/week6/petals.lua")()
+ freaks = love.filesystem.load("sprites/week6/freaks.lua")()
+
+ sky.y = 1
+ school.y = 1
+ end
boyfriend.x, boyfriend.y = 50, 30
- --fakeBoyfriend.x, fakeBoyfriend.y = 50, 30
+ fakeBoyfriend.x, fakeBoyfriend.y = 50, 30
enemyIcon:animate("senpai", false)
@@ -48,18 +65,26 @@ return {
end,
load = function(self)
- if songNum == 2 then
+
+ if song == 3 then
+ school = love.filesystem.load("sprites/week6/evil-school.lua")()
+ enemy = love.filesystem.load("sprites/week6/spirit.lua")()
+
+ enemyIcon:animate("spirit", false)
+ elseif song == 2 then
enemy = love.filesystem.load("sprites/week6/senpai-angry.lua")()
+
+ freaks:animate("dissuaded", true)
else
enemy = love.filesystem.load("sprites/week6/senpai.lua")()
end
weeksPixel:load()
- if songNum == 3 then
+ if song == 3 then
inst = love.audio.newSource("music/week6/thorns-inst.ogg", "stream")
voices = love.audio.newSource("music/week6/thorns-voices.ogg", "stream")
- elseif songNum == 2 then
+ elseif song == 2 then
inst = love.audio.newSource("music/week6/roses-inst.ogg", "stream")
voices = love.audio.newSource("music/week6/roses-voices.ogg", "stream")
else
@@ -77,28 +102,28 @@ return {
initUI = function(self)
weeksPixel:initUI()
- if songNum == 3 then
- weeksPixel:generateNotes(love.filesystem.load("charts/week6/thorns" .. songAppend .. ".lua")())
- elseif songNum == 2 then
- weeksPixel:generateNotes(love.filesystem.load("charts/week6/roses" .. songAppend .. ".lua")())
+ if song == 3 then
+ weeksPixel:generateNotes(love.filesystem.load("charts/week6/thorns" .. difficulty .. ".lua")())
+ elseif song == 2 then
+ weeksPixel:generateNotes(love.filesystem.load("charts/week6/roses" .. difficulty .. ".lua")())
else
- weeksPixel:generateNotes(love.filesystem.load("charts/week6/senpai" .. songAppend .. ".lua")())
+ weeksPixel:generateNotes(love.filesystem.load("charts/week6/senpai" .. difficulty .. ".lua")())
end
end,
update = function(self, dt)
- graphics.screenBase(128, 72)
+ graphics.screenBase(256, 144)
if gameOver then
if not graphics.isFading() then
if input:pressed("confirm") then
inst:stop()
- inst = love.audio.newSource("music/game-over-end.ogg", "stream")
+ inst = love.audio.newSource("music/pixel/game-over-end.ogg", "stream")
inst:play()
Timer.clear()
- cam.x, cam.y = -boyfriend.x, -boyfriend.y
+ cam.x, cam.y = -fakeBoyfriend.x, -fakeBoyfriend.y
fakeBoyfriend:animate("dead confirm", false)
@@ -108,16 +133,24 @@ return {
end
end
- boyfriend:update(dt)
+ fakeBoyfriend:update(dt)
return
end
weeksPixel:update(dt)
+ if song == 3 then
+ school:update(dt)
+ else
+ trees:update(dt)
+ petals:update(dt)
+ freaks:update(dt)
+ end
+
if not graphics.isFading() and not inst:isPlaying() and not voices:isPlaying() then
- if storyMode and songNum < 3 then
- songNum = songNum + 1
+ if storyMode and song < 3 then
+ song = song + 1
self:load()
else
@@ -131,7 +164,8 @@ return {
draw = function(self)
local canvasScale
- graphics.screenBase(128, 72)
+ love.graphics.setFont(font)
+ graphics.screenBase(256, 144)
love.graphics.setCanvas(canvas)
love.graphics.clear()
@@ -139,6 +173,12 @@ return {
if gameOver then
love.graphics.setCanvas()
+ graphics.screenBase(love.graphics.getWidth(), love.graphics.getHeight())
+
+ canvasScale = math.min(math.floor(graphics.getWidth() / 256), math.floor(graphics.getHeight() / 144))
+ if canvasScale < 1 then canvasScale = math.min(graphics.getWidth() / 256, graphics.getHeight() / 144) end
+
+ love.graphics.draw(canvas, graphics.getWidth() / 2, graphics.getHeight() / 2, nil, canvasScale, canvasScale, 128, 72)
return
end
@@ -148,35 +188,46 @@ return {
love.graphics.scale(cam.sizeX, cam.sizeY)
love.graphics.push()
- love.graphics.translate(cam.x * 0.9, cam.y * 0.9)
+ love.graphics.translate(math.floor(cam.x * 0.9), math.floor(cam.y * 0.9))
+
+ if song ~= 3 then
+ sky:draw()
+ end
- sky:draw()
school:draw()
love.graphics.pop()
love.graphics.push()
- love.graphics.translate(cam.x, cam.y)
+ love.graphics.translate(math.floor(cam.x), math.floor(cam.y))
+
+ if song ~= 3 then
+ street:draw()
+ treesBack:draw()
- street:draw()
+ trees:draw()
+ petals:draw()
+ freaks:draw()
+ end
girlfriend:draw()
enemy:draw()
boyfriend:draw()
love.graphics.pop()
- --weeksPixel:drawRating(0.9)
+ weeksPixel:drawRating()
love.graphics.pop()
weeksPixel:drawUI()
love.graphics.setCanvas()
graphics.screenBase(love.graphics.getWidth(), love.graphics.getHeight())
- canvasScale = math.min(math.floor(graphics.getWidth() / 256), math.floor(graphics.getHeight() / 128))
- if canvasScale < 1 then canvasScale = math.min(graphics.getWidth() / 256, graphics.getHeight() / 128) end
+ canvasScale = math.min(math.floor(graphics.getWidth() / 256), math.floor(graphics.getHeight() / 144))
+ if canvasScale < 1 then canvasScale = math.min(graphics.getWidth() / 256, graphics.getHeight() / 144) end
love.graphics.draw(canvas, graphics.getWidth() / 2, graphics.getHeight() / 2, nil, canvasScale, canvasScale, 128, 72)
end,
leave = function(self)
canvas = nil
+ font = nil
sky = nil
school = nil
diff --git a/tools/funkin-xna/funkin-xna.py b/tools/funkin-xna/funkin-xna.py
new file mode 100755
index 00000000..6204fd07
--- /dev/null
+++ b/tools/funkin-xna/funkin-xna.py
@@ -0,0 +1,49 @@
+#!/usr/bin/env python3
+
+# --------------------------------------------------------------------------------
+# Friday Night Funkin' Rewritten Legacy XNA Conversion Helper v1.0
+#
+# Copyright (C) 2021 HTV04
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+# --------------------------------------------------------------------------------
+
+import re
+import os
+import sys
+
+txtname = os.path.split(sys.argv[1])[1]
+with open(sys.argv[1], "r") as f:
+ txtlines = f.readlines()
+
+lua = ('\t-- Automatically generated from ' + txtname + '\n'
+ '\t{\n')
+c = 0
+for txtline in txtlines:
+ c += 1
+ parsedline = re.match("(.+) = (\d+) (\d+) (\d+) (\d+)", txtline)
+
+ name = parsedline.group(1)
+ x = parsedline.group(2)
+ y = parsedline.group(3)
+ width = parsedline.group(4)
+ height = parsedline.group(5)
+
+ lua += '\t\t{x = ' + x + ', y = ' + y + ', width = ' + width + ', height = ' + height + ', offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- ' + str(c) + ': ' + name + '\n'
+
+lua = lua[:len(lua) - (len(str(c)) + len(name) + 9)] + '} -- ' + str(c) + ': ' + name + '\n'
+lua += '\t},\n'
+
+with open('output.txt', 'w') as f:
+ f.write(lua)