diff --git a/src/love/images/png/menu/FNF_main_menu_assets.png b/src/love/images/png/menu/FNF_main_menu_assets.png new file mode 100644 index 00000000..4399ed2d Binary files /dev/null and b/src/love/images/png/menu/FNF_main_menu_assets.png differ diff --git a/src/love/images/png/menu/menuBG.png b/src/love/images/png/menu/menuBG.png new file mode 100644 index 00000000..6586348a Binary files /dev/null and b/src/love/images/png/menu/menuBG.png differ diff --git a/src/love/images/png/menu/storymenu/campaign_menu_UI_assets.png b/src/love/images/png/menu/storymenu/campaign_menu_UI_assets.png new file mode 100644 index 00000000..87022a9e Binary files /dev/null and b/src/love/images/png/menu/storymenu/campaign_menu_UI_assets.png differ diff --git a/src/love/images/png/menu/storymenu/campaign_menu_UI_characters.png b/src/love/images/png/menu/storymenu/campaign_menu_UI_characters.png new file mode 100644 index 00000000..b15372d1 Binary files /dev/null and b/src/love/images/png/menu/storymenu/campaign_menu_UI_characters.png differ diff --git a/src/love/images/png/menu/storymenu/week0.png b/src/love/images/png/menu/storymenu/week0.png new file mode 100644 index 00000000..4958689e Binary files /dev/null and b/src/love/images/png/menu/storymenu/week0.png differ diff --git a/src/love/images/png/menu/storymenu/week1.png b/src/love/images/png/menu/storymenu/week1.png new file mode 100644 index 00000000..311bece0 Binary files /dev/null and b/src/love/images/png/menu/storymenu/week1.png differ diff --git a/src/love/images/png/menu/storymenu/week2.png b/src/love/images/png/menu/storymenu/week2.png new file mode 100644 index 00000000..394c8819 Binary files /dev/null and b/src/love/images/png/menu/storymenu/week2.png differ diff --git a/src/love/images/png/menu/storymenu/week3.png b/src/love/images/png/menu/storymenu/week3.png new file mode 100644 index 00000000..c259746e Binary files /dev/null and b/src/love/images/png/menu/storymenu/week3.png differ diff --git a/src/love/images/png/menu/storymenu/week4.png b/src/love/images/png/menu/storymenu/week4.png new file mode 100644 index 00000000..2fa5c843 Binary files /dev/null and b/src/love/images/png/menu/storymenu/week4.png differ diff --git a/src/love/images/png/menu/storymenu/week5.png b/src/love/images/png/menu/storymenu/week5.png new file mode 100644 index 00000000..ee4d1b9a Binary files /dev/null and b/src/love/images/png/menu/storymenu/week5.png differ diff --git a/src/love/images/png/menu/storymenu/week6.png b/src/love/images/png/menu/storymenu/week6.png new file mode 100644 index 00000000..8a45fb52 Binary files /dev/null and b/src/love/images/png/menu/storymenu/week6.png differ diff --git a/src/love/images/png/menu/storymenu/weekMenu.png b/src/love/images/png/menu/storymenu/weekMenu.png new file mode 100644 index 00000000..c5eaff2a Binary files /dev/null and b/src/love/images/png/menu/storymenu/weekMenu.png differ diff --git a/src/love/images/png/menu/titleEnter.png b/src/love/images/png/menu/titleEnter.png new file mode 100644 index 00000000..a81270b3 Binary files /dev/null and b/src/love/images/png/menu/titleEnter.png differ diff --git a/src/love/images/png/pixel/countdown.png b/src/love/images/png/pixel/countdown.png new file mode 100644 index 00000000..64b4d276 Binary files /dev/null and b/src/love/images/png/pixel/countdown.png differ diff --git a/src/love/main.lua b/src/love/main.lua index c78d1854..30555ef1 100644 --- a/src/love/main.lua +++ b/src/love/main.lua @@ -39,7 +39,10 @@ function love.load() -- Load states clickStart = require "states.click-start" debugMenu = require "states.debug-menu" - menu = require "states.menu" + titleMenu = require "states.menu.titleMenu" + menuWeek = require "states.menu.menuWeek" + menuSelect = require "states.menu.menuSelect" + menuFreeplay = require "states.menu.menuFreeplay" weeks = require "states.weeks" weeksPixel = require "states.weeks-pixel" @@ -92,7 +95,7 @@ function love.load() if curOS == "Web" then Gamestate.switch(clickStart) else - Gamestate.switch(menu) + Gamestate.switch(titleMenu) end end diff --git a/src/love/sprites/menu/menuButtons.lua b/src/love/sprites/menu/menuButtons.lua new file mode 100644 index 00000000..3892650c --- /dev/null +++ b/src/love/sprites/menu/menuButtons.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("menu/FNF_main_menu_assets")), + -- Automatically generated from FNF_main_menu_assets.xml + { + {x = 0, y = 0, width = 444, height = 117, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 1: donate basic0000 + {x = 0, y = 0, width = 444, height = 117, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 2: donate basic0001 + {x = 0, y = 0, width = 444, height = 117, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 3: donate basic0002 + {x = 454, y = 0, width = 444, height = 117, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 4: donate basic0003 + {x = 454, y = 0, width = 444, height = 117, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 5: donate basic0004 + {x = 454, y = 0, width = 444, height = 117, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 6: donate basic0005 + {x = 908, y = 0, width = 444, height = 117, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 7: donate basic0006 + {x = 908, y = 0, width = 444, height = 117, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 8: donate basic0007 + {x = 908, y = 0, width = 444, height = 117, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 9: donate basic0008 + {x = 1362, y = 0, width = 590, height = 157, offsetX = 0, offsetY = -2, offsetWidth = 590, offsetHeight = 159}, -- 10: donate white0000 + {x = 0, y = 167, width = 587, height = 154, offsetX = -1, offsetY = -5, offsetWidth = 590, offsetHeight = 159}, -- 11: donate white0001 + {x = 597, y = 167, width = 585, height = 155, offsetX = -3, offsetY = 0, offsetWidth = 590, offsetHeight = 159}, -- 12: donate white0002 + {x = 1192, y = 167, width = 484, height = 122, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 13: freeplay basic0000 + {x = 1192, y = 167, width = 484, height = 122, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 14: freeplay basic0001 + {x = 1192, y = 167, width = 484, height = 122, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 15: freeplay basic0002 + {x = 0, y = 332, width = 484, height = 122, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 16: freeplay basic0003 + {x = 0, y = 332, width = 484, height = 122, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 17: freeplay basic0004 + {x = 0, y = 332, width = 484, height = 122, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 18: freeplay basic0005 + {x = 494, y = 332, width = 484, height = 122, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 19: freeplay basic0006 + {x = 494, y = 332, width = 484, height = 122, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 20: freeplay basic0007 + {x = 494, y = 332, width = 484, height = 122, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 21: freeplay basic0008 + {x = 988, y = 332, width = 627, height = 169, offsetX = 0, offsetY = 0, offsetWidth = 635, offsetHeight = 174}, -- 22: freeplay white0000 + {x = 0, y = 511, width = 632, height = 170, offsetX = -3, offsetY = -1, offsetWidth = 635, offsetHeight = 174}, -- 23: freeplay white0001 + {x = 642, y = 511, width = 629, height = 173, offsetX = -4, offsetY = -1, offsetWidth = 635, offsetHeight = 174}, -- 24: freeplay white0002 + {x = 1281, y = 511, width = 487, height = 111, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 25: options basic0000 + {x = 1281, y = 511, width = 487, height = 111, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 26: options basic0001 + {x = 1281, y = 511, width = 487, height = 111, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 27: options basic0002 + {x = 0, y = 694, width = 487, height = 111, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 28: options basic0003 + {x = 0, y = 694, width = 487, height = 111, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 29: options basic0004 + {x = 0, y = 694, width = 487, height = 111, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 30: options basic0005 + {x = 497, y = 694, width = 487, height = 111, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 31: options basic0006 + {x = 497, y = 694, width = 487, height = 111, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 32: options basic0007 + {x = 497, y = 694, width = 487, height = 111, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 33: options basic0008 + {x = 994, y = 694, width = 606, height = 155, offsetX = -2, offsetY = -1, offsetWidth = 610, offsetHeight = 163}, -- 34: options white0000 + {x = 0, y = 859, width = 607, height = 158, offsetX = -3, offsetY = -1, offsetWidth = 610, offsetHeight = 163}, -- 35: options white0001 + {x = 617, y = 859, width = 610, height = 163, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 36: options white0002 + {x = 1237, y = 859, width = 615, height = 122, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 37: story mode basic0000 + {x = 1237, y = 859, width = 615, height = 122, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 38: story mode basic0001 + {x = 1237, y = 859, width = 615, height = 122, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 39: story mode basic0002 + {x = 0, y = 1032, width = 615, height = 122, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 40: story mode basic0003 + {x = 0, y = 1032, width = 615, height = 122, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 41: story mode basic0004 + {x = 0, y = 1032, width = 615, height = 122, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 42: story mode basic0005 + {x = 625, y = 1032, width = 615, height = 122, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 43: story mode basic0006 + {x = 625, y = 1032, width = 615, height = 122, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 44: story mode basic0007 + {x = 625, y = 1032, width = 615, height = 122, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 45: story mode basic0008 + {x = 1250, y = 1032, width = 796, height = 173, offsetX = 0, offsetY = -3, offsetWidth = 796, offsetHeight = 181}, -- 46: story mode white0000 + {x = 0, y = 1215, width = 794, height = 174, offsetX = -2, offsetY = -2, offsetWidth = 796, offsetHeight = 181}, -- 47: story mode white0001 + {x = 804, y = 1215, width = 794, height = 181, offsetX = 0, offsetY = 0, offsetWidth = 796, offsetHeight = 181} -- 48: story mode white0002 + }, + { + ["donate"] = {start = 1, stop = 9, speed = 24, offsetX = 0, offsetY = 0}, -- you can change this to what you want + ["donate hover"] = {start = 10, stop = 12, speed = 24, offsetX = 0, offsetY = 0}, -- you can change this to what you want + ["freeplay"] = {start = 13, stop = 21, speed = 24, offsetX = 0, offsetY = 0}, + ["freeplay hover"] = {start = 22, stop = 24, speed = 24, offsetX = 0, offsetY = 0}, + ["options"] = {start = 25, stop = 33, speed = 24, offsetX = 0, offsetY = 0}, + ["options hover"] = {start = 34, stop = 36, speed = 24, offsetX = 0, offsetY = 0}, + ["story"] = {start = 37, stop = 45, speed = 24, offsetX = 0, offsetY = 0}, + ["story hover"] = {start = 46, stop = 48, speed = 24, offsetX = 0, offsetY = 0} + }, + "story", + true + +) \ No newline at end of file diff --git a/src/love/sprites/menu/storymenu/difficulty.lua b/src/love/sprites/menu/storymenu/difficulty.lua new file mode 100644 index 00000000..569c5c68 --- /dev/null +++ b/src/love/sprites/menu/storymenu/difficulty.lua @@ -0,0 +1,45 @@ +--[[---------------------------------------------------------------------------- +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("menu/storymenu/campaign_menu_UI_assets")), + -- Automatically generated from campaign_menu_UI_assets.xml + { + {x = 0, y = 0, width = 196, height = 65, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 1: EASY0000 + {x = 206, y = 0, width = 211, height = 67, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 2: HARD0000 + {x = 427, y = 0, width = 308, height = 67, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 3: NORMAL0000 + {x = 738, y = 374, width = 48, height = 85, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 4: arrow left0000 + {x = 796, y = 374, width = 42, height = 75, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 5: arrow push left0000 + {x = 848, y = 374, width = 41, height = 74, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 6: arrow push right0000 + {x = 899, y = 374, width = 47, height = 85, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 7: arrow right0000 + {x = 956, y = 374, width = 67, height = 93, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 8: lock0000 + }, + { + ["easy"] = {start = 1, stop = 1, speed = 24, offsetX = 0, offsetY = 0}, + ["normal"] = {start = 3, stop = 3, speed = 24, offsetX = 0, offsetY = 0}, + ["hard"] = {start = 2, stop = 2, speed = 24, offsetX = 0, offsetY = 0}, + ["arrow left"] = {start = 4, stop = 4, speed = 24, offsetX = 0, offsetY = 0}, + ["arrow left confirm"] = {start = 5, stop = 5, speed = 24, offsetX = 0, offsetY = 0}, + ["arrow right"] = {start = 7, stop = 7, speed = 24, offsetX = 0, offsetY = 0}, + ["arrow right confirm"] = {start = 6, stop = 6, speed = 24, offsetX = 0, offsetY = 0}, + ["lock"] = {start = 8, stop = 8, speed = 24, offsetX = 0, offsetY = 0} + }, + "normal", + true +) \ No newline at end of file diff --git a/src/love/sprites/menu/storymenu/idlelines.lua b/src/love/sprites/menu/storymenu/idlelines.lua new file mode 100644 index 00000000..037169cf --- /dev/null +++ b/src/love/sprites/menu/storymenu/idlelines.lua @@ -0,0 +1,197 @@ +--[[---------------------------------------------------------------------------- +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("menu/storymenu/campaign_menu_UI_characters")), + -- Automatically generated from campaign_menu_UI_characters.xml + { + {x = 0, y = 0, width = 395, height = 416, offsetX = 0, offsetY = 0, offsetWidth = 415, offsetHeight = 418}, -- 1: BF HEY!!0000 + {x = 0, y = 0, width = 395, height = 416, offsetX = 0, offsetY = 0, offsetWidth = 415, offsetHeight = 418}, -- 2: BF HEY!!0001 + {x = 405, y = 0, width = 413, height = 410, offsetX = -1, offsetY = -8, offsetWidth = 415, offsetHeight = 418}, -- 3: BF HEY!!0002 + {x = 405, y = 0, width = 413, height = 410, offsetX = -1, offsetY = -8, offsetWidth = 415, offsetHeight = 418}, -- 4: BF HEY!!0003 + {x = 828, y = 0, width = 414, height = 412, offsetX = -1, offsetY = -6, offsetWidth = 415, offsetHeight = 418}, -- 5: BF HEY!!0004 + {x = 828, y = 0, width = 414, height = 412, offsetX = -1, offsetY = -6, offsetWidth = 415, offsetHeight = 418}, -- 6: BF HEY!!0005 + {x = 828, y = 0, width = 414, height = 412, offsetX = -1, offsetY = -6, offsetWidth = 415, offsetHeight = 418}, -- 7: BF HEY!!0006 + {x = 828, y = 0, width = 414, height = 412, offsetX = -1, offsetY = -6, offsetWidth = 415, offsetHeight = 418}, -- 8: BF HEY!!0007 + {x = 828, y = 0, width = 414, height = 412, offsetX = -1, offsetY = -6, offsetWidth = 415, offsetHeight = 418}, -- 9: BF HEY!!0008 + {x = 828, y = 0, width = 414, height = 412, offsetX = -1, offsetY = -6, offsetWidth = 415, offsetHeight = 418}, -- 10: BF HEY!!0009 + {x = 828, y = 0, width = 414, height = 412, offsetX = -1, offsetY = -6, offsetWidth = 415, offsetHeight = 418}, -- 11: BF HEY!!0010 + {x = 828, y = 0, width = 414, height = 412, offsetX = -1, offsetY = -6, offsetWidth = 415, offsetHeight = 418}, -- 12: BF HEY!!0011 + {x = 828, y = 0, width = 414, height = 412, offsetX = -1, offsetY = -6, offsetWidth = 415, offsetHeight = 418}, -- 13: BF HEY!!0012 + {x = 828, y = 0, width = 414, height = 412, offsetX = -1, offsetY = -6, offsetWidth = 415, offsetHeight = 418}, -- 14: BF HEY!!0013 + {x = 828, y = 0, width = 414, height = 412, offsetX = -1, offsetY = -6, offsetWidth = 415, offsetHeight = 418}, -- 15: BF HEY!!0014 + {x = 828, y = 0, width = 414, height = 412, offsetX = -1, offsetY = -6, offsetWidth = 415, offsetHeight = 418}, -- 16: BF HEY!!0015 + {x = 828, y = 0, width = 414, height = 412, offsetX = -1, offsetY = -6, offsetWidth = 415, offsetHeight = 418}, -- 17: BF HEY!!0016 + {x = 828, y = 0, width = 414, height = 412, offsetX = -1, offsetY = -6, offsetWidth = 415, offsetHeight = 418}, -- 18: BF HEY!!0017 + {x = 828, y = 0, width = 414, height = 412, offsetX = -1, offsetY = -6, offsetWidth = 415, offsetHeight = 418}, -- 19: BF HEY!!0018 + {x = 828, y = 0, width = 414, height = 412, offsetX = -1, offsetY = -6, offsetWidth = 415, offsetHeight = 418}, -- 20: BF HEY!!0019 + {x = 828, y = 0, width = 414, height = 412, offsetX = -1, offsetY = -6, offsetWidth = 415, offsetHeight = 418}, -- 21: BF HEY!!0020 + {x = 828, y = 0, width = 414, height = 412, offsetX = -1, offsetY = -6, offsetWidth = 415, offsetHeight = 418}, -- 22: BF HEY!!0021 + {x = 828, y = 0, width = 414, height = 412, offsetX = -1, offsetY = -6, offsetWidth = 415, offsetHeight = 418}, -- 23: BF HEY!!0022 + {x = 828, y = 0, width = 414, height = 412, offsetX = -1, offsetY = -6, offsetWidth = 415, offsetHeight = 418}, -- 24: BF HEY!!0023 + {x = 828, y = 0, width = 414, height = 412, offsetX = -1, offsetY = -6, offsetWidth = 415, offsetHeight = 418}, -- 25: BF HEY!!0024 + {x = 828, y = 0, width = 414, height = 412, offsetX = -1, offsetY = -6, offsetWidth = 415, offsetHeight = 418}, -- 26: BF HEY!!0025 + {x = 1252, y = 0, width = 406, height = 392, offsetX = -1, offsetY = -20, offsetWidth = 411, offsetHeight = 412}, -- 27: BF idle dance white0000 + {x = 1252, y = 0, width = 406, height = 392, offsetX = -1, offsetY = -20, offsetWidth = 411, offsetHeight = 412}, -- 28: BF idle dance white0001 + {x = 1668, y = 0, width = 408, height = 393, offsetX = 0, offsetY = -19, offsetWidth = 411, offsetHeight = 412}, -- 29: BF idle dance white0002 + {x = 1668, y = 0, width = 408, height = 393, offsetX = 0, offsetY = -19, offsetWidth = 411, offsetHeight = 412}, -- 30: BF idle dance white0003 + {x = 2086, y = 0, width = 405, height = 398, offsetX = -3, offsetY = -14, offsetWidth = 411, offsetHeight = 412}, -- 31: BF idle dance white0004 + {x = 2086, y = 0, width = 405, height = 398, offsetX = -3, offsetY = -14, offsetWidth = 411, offsetHeight = 412}, -- 32: BF idle dance white0005 + {x = 2501, y = 0, width = 410, height = 411, offsetX = -1, offsetY = -1, offsetWidth = 411, offsetHeight = 412}, -- 33: BF idle dance white0006 + {x = 2501, y = 0, width = 410, height = 411, offsetX = -1, offsetY = -1, offsetWidth = 411, offsetHeight = 412}, -- 34: BF idle dance white0007 + {x = 2921, y = 0, width = 408, height = 412, offsetX = -2, offsetY = 0, offsetWidth = 411, offsetHeight = 412}, -- 35: BF idle dance white0008 + {x = 2921, y = 0, width = 408, height = 412, offsetX = -2, offsetY = 0, offsetWidth = 411, offsetHeight = 412}, -- 36: BF idle dance white0009 + {x = 2921, y = 0, width = 408, height = 412, offsetX = -2, offsetY = 0, offsetWidth = 411, offsetHeight = 412}, -- 37: BF idle dance white0010 + {x = 2921, y = 0, width = 408, height = 412, offsetX = -2, offsetY = 0, offsetWidth = 411, offsetHeight = 412}, -- 38: BF idle dance white0011 + {x = 2921, y = 0, width = 408, height = 412, offsetX = -2, offsetY = 0, offsetWidth = 411, offsetHeight = 412}, -- 39: BF idle dance white0012 + {x = 2921, y = 0, width = 408, height = 412, offsetX = -2, offsetY = 0, offsetWidth = 411, offsetHeight = 412}, -- 40: BF idle dance white0013 + {x = 3339, y = 0, width = 429, height = 759, offsetX = 0, offsetY = -8, offsetWidth = 429, offsetHeight = 767}, -- 41: Dad idle dance BLACK LINE0000 + {x = 3339, y = 0, width = 429, height = 759, offsetX = 0, offsetY = -8, offsetWidth = 429, offsetHeight = 767}, -- 42: Dad idle dance BLACK LINE0001 + {x = 3778, y = 0, width = 424, height = 757, offsetX = -2, offsetY = -10, offsetWidth = 429, offsetHeight = 767}, -- 43: Dad idle dance BLACK LINE0002 + {x = 3778, y = 0, width = 424, height = 757, offsetX = -2, offsetY = -10, offsetWidth = 429, offsetHeight = 767}, -- 44: Dad idle dance BLACK LINE0003 + {x = 4212, y = 0, width = 423, height = 759, offsetX = -3, offsetY = -8, offsetWidth = 429, offsetHeight = 767}, -- 45: Dad idle dance BLACK LINE0004 + {x = 4212, y = 0, width = 423, height = 759, offsetX = -3, offsetY = -8, offsetWidth = 429, offsetHeight = 767}, -- 46: Dad idle dance BLACK LINE0005 + {x = 4645, y = 0, width = 419, height = 766, offsetX = -5, offsetY = -1, offsetWidth = 429, offsetHeight = 767}, -- 47: Dad idle dance BLACK LINE0006 + {x = 4645, y = 0, width = 419, height = 766, offsetX = -5, offsetY = -1, offsetWidth = 429, offsetHeight = 767}, -- 48: Dad idle dance BLACK LINE0007 + {x = 5074, y = 0, width = 419, height = 767, offsetX = -6, offsetY = 0, offsetWidth = 429, offsetHeight = 767}, -- 49: Dad idle dance BLACK LINE0008 + {x = 5074, y = 0, width = 419, height = 767, offsetX = -6, offsetY = 0, offsetWidth = 429, offsetHeight = 767}, -- 50: Dad idle dance BLACK LINE0009 + {x = 5503, y = 0, width = 419, height = 767, offsetX = -6, offsetY = 0, offsetWidth = 429, offsetHeight = 767}, -- 51: Dad idle dance BLACK LINE0010 + {x = 5503, y = 0, width = 419, height = 767, offsetX = -6, offsetY = 0, offsetWidth = 429, offsetHeight = 767}, -- 52: Dad idle dance BLACK LINE0011 + {x = 5503, y = 0, width = 419, height = 767, offsetX = -6, offsetY = 0, offsetWidth = 429, offsetHeight = 767}, -- 53: Dad idle dance BLACK LINE0012 + {x = 5503, y = 0, width = 419, height = 767, offsetX = -6, offsetY = 0, offsetWidth = 429, offsetHeight = 767}, -- 54: Dad idle dance BLACK LINE0013 + {x = 5932, y = 0, width = 699, height = 634, offsetX = -2, offsetY = -14, offsetWidth = 703, offsetHeight = 648}, -- 55: GF Dancing Beat WHITE0000 + {x = 6641, y = 0, width = 703, height = 634, offsetX = 0, offsetY = -14, offsetWidth = 703, offsetHeight = 648}, -- 56: GF Dancing Beat WHITE0001 + {x = 7354, y = 0, width = 703, height = 632, offsetX = 0, offsetY = -16, offsetWidth = 703, offsetHeight = 648}, -- 57: GF Dancing Beat WHITE0002 + {x = 0, y = 777, width = 699, height = 632, offsetX = -2, offsetY = -16, offsetWidth = 703, offsetHeight = 648}, -- 58: GF Dancing Beat WHITE0003 + {x = 709, y = 777, width = 699, height = 635, offsetX = -2, offsetY = -13, offsetWidth = 703, offsetHeight = 648}, -- 59: GF Dancing Beat WHITE0004 + {x = 1418, y = 777, width = 699, height = 635, offsetX = -2, offsetY = -13, offsetWidth = 703, offsetHeight = 648}, -- 60: GF Dancing Beat WHITE0005 + {x = 2127, y = 777, width = 699, height = 637, offsetX = -2, offsetY = -11, offsetWidth = 703, offsetHeight = 648}, -- 61: GF Dancing Beat WHITE0006 + {x = 2836, y = 777, width = 699, height = 648, offsetX = -2, offsetY = 0, offsetWidth = 703, offsetHeight = 648}, -- 62: GF Dancing Beat WHITE0007 + {x = 2836, y = 777, width = 699, height = 648, offsetX = -2, offsetY = 0, offsetWidth = 703, offsetHeight = 648}, -- 63: GF Dancing Beat WHITE0008 + {x = 2836, y = 777, width = 699, height = 648, offsetX = -2, offsetY = 0, offsetWidth = 703, offsetHeight = 648}, -- 64: GF Dancing Beat WHITE0009 + {x = 3545, y = 777, width = 699, height = 648, offsetX = -2, offsetY = 0, offsetWidth = 703, offsetHeight = 648}, -- 65: GF Dancing Beat WHITE0010 + {x = 3545, y = 777, width = 699, height = 648, offsetX = -2, offsetY = 0, offsetWidth = 703, offsetHeight = 648}, -- 66: GF Dancing Beat WHITE0011 + {x = 3545, y = 777, width = 699, height = 648, offsetX = -2, offsetY = 0, offsetWidth = 703, offsetHeight = 648}, -- 67: GF Dancing Beat WHITE0012 + {x = 4254, y = 777, width = 699, height = 648, offsetX = -2, offsetY = 0, offsetWidth = 703, offsetHeight = 648}, -- 68: GF Dancing Beat WHITE0013 + {x = 4254, y = 777, width = 699, height = 648, offsetX = -2, offsetY = 0, offsetWidth = 703, offsetHeight = 648}, -- 69: GF Dancing Beat WHITE0014 + {x = 4963, y = 777, width = 699, height = 636, offsetX = -2, offsetY = -12, offsetWidth = 703, offsetHeight = 648}, -- 70: GF Dancing Beat WHITE0015 + {x = 5672, y = 777, width = 703, height = 636, offsetX = 0, offsetY = -12, offsetWidth = 703, offsetHeight = 648}, -- 71: GF Dancing Beat WHITE0016 + {x = 6385, y = 777, width = 703, height = 636, offsetX = 0, offsetY = -12, offsetWidth = 703, offsetHeight = 648}, -- 72: GF Dancing Beat WHITE0017 + {x = 7098, y = 777, width = 699, height = 636, offsetX = -2, offsetY = -12, offsetWidth = 703, offsetHeight = 648}, -- 73: GF Dancing Beat WHITE0018 + {x = 0, y = 1435, width = 699, height = 637, offsetX = -2, offsetY = -11, offsetWidth = 703, offsetHeight = 648}, -- 74: GF Dancing Beat WHITE0019 + {x = 709, y = 1435, width = 699, height = 637, offsetX = -2, offsetY = -11, offsetWidth = 703, offsetHeight = 648}, -- 75: GF Dancing Beat WHITE0020 + {x = 1418, y = 1435, width = 699, height = 638, offsetX = -2, offsetY = -10, offsetWidth = 703, offsetHeight = 648}, -- 76: GF Dancing Beat WHITE0021 + {x = 2127, y = 1435, width = 699, height = 643, offsetX = -2, offsetY = -5, offsetWidth = 703, offsetHeight = 648}, -- 77: GF Dancing Beat WHITE0022 + {x = 2127, y = 1435, width = 699, height = 643, offsetX = -2, offsetY = -5, offsetWidth = 703, offsetHeight = 648}, -- 78: GF Dancing Beat WHITE0023 + {x = 2127, y = 1435, width = 699, height = 643, offsetX = -2, offsetY = -5, offsetWidth = 703, offsetHeight = 648}, -- 79: GF Dancing Beat WHITE0024 + {x = 2836, y = 1435, width = 699, height = 642, offsetX = -2, offsetY = -6, offsetWidth = 703, offsetHeight = 648}, -- 80: GF Dancing Beat WHITE0025 + {x = 2836, y = 1435, width = 699, height = 642, offsetX = -2, offsetY = -6, offsetWidth = 703, offsetHeight = 648}, -- 81: GF Dancing Beat WHITE0026 + {x = 2836, y = 1435, width = 699, height = 642, offsetX = -2, offsetY = -6, offsetWidth = 703, offsetHeight = 648}, -- 82: GF Dancing Beat WHITE0027 + {x = 3545, y = 1435, width = 699, height = 642, offsetX = -2, offsetY = -6, offsetWidth = 703, offsetHeight = 648}, -- 83: GF Dancing Beat WHITE0028 + {x = 3545, y = 1435, width = 699, height = 642, offsetX = -2, offsetY = -6, offsetWidth = 703, offsetHeight = 648}, -- 84: GF Dancing Beat WHITE0029 + {x = 4254, y = 1435, width = 386, height = 826, offsetX = -4, offsetY = -2, offsetWidth = 390, offsetHeight = 829}, -- 85: Mom Idle BLACK LINES0000 + {x = 4254, y = 1435, width = 386, height = 826, offsetX = -4, offsetY = -2, offsetWidth = 390, offsetHeight = 829}, -- 86: Mom Idle BLACK LINES0001 + {x = 4650, y = 1435, width = 386, height = 815, offsetX = -4, offsetY = -14, offsetWidth = 390, offsetHeight = 829}, -- 87: Mom Idle BLACK LINES0002 + {x = 4650, y = 1435, width = 386, height = 815, offsetX = -4, offsetY = -14, offsetWidth = 390, offsetHeight = 829}, -- 88: Mom Idle BLACK LINES0003 + {x = 5046, y = 1435, width = 386, height = 822, offsetX = -1, offsetY = -7, offsetWidth = 390, offsetHeight = 829}, -- 89: Mom Idle BLACK LINES0004 + {x = 5046, y = 1435, width = 386, height = 822, offsetX = -1, offsetY = -7, offsetWidth = 390, offsetHeight = 829}, -- 90: Mom Idle BLACK LINES0005 + {x = 5442, y = 1435, width = 386, height = 824, offsetX = 0, offsetY = -5, offsetWidth = 390, offsetHeight = 829}, -- 91: Mom Idle BLACK LINES0006 + {x = 5442, y = 1435, width = 386, height = 824, offsetX = 0, offsetY = -5, offsetWidth = 390, offsetHeight = 829}, -- 92: Mom Idle BLACK LINES0007 + {x = 5838, y = 1435, width = 386, height = 828, offsetX = 0, offsetY = -1, offsetWidth = 390, offsetHeight = 829}, -- 93: Mom Idle BLACK LINES0008 + {x = 5838, y = 1435, width = 386, height = 828, offsetX = 0, offsetY = -1, offsetWidth = 390, offsetHeight = 829}, -- 94: Mom Idle BLACK LINES0009 + {x = 6234, y = 1435, width = 386, height = 829, offsetX = 0, offsetY = 0, offsetWidth = 390, offsetHeight = 829}, -- 95: Mom Idle BLACK LINES0010 + {x = 6234, y = 1435, width = 386, height = 829, offsetX = 0, offsetY = 0, offsetWidth = 390, offsetHeight = 829}, -- 96: Mom Idle BLACK LINES0011 + {x = 6630, y = 1435, width = 386, height = 829, offsetX = 0, offsetY = 0, offsetWidth = 390, offsetHeight = 829}, -- 97: Mom Idle BLACK LINES0012 + {x = 6630, y = 1435, width = 386, height = 829, offsetX = 0, offsetY = 0, offsetWidth = 390, offsetHeight = 829}, -- 98: Mom Idle BLACK LINES0013 + {x = 7026, y = 1435, width = 873, height = 777, offsetX = -6, offsetY = -5, offsetWidth = 884, offsetHeight = 782}, -- 99: Parent Christmas Idle Black Lines0000 + {x = 7026, y = 1435, width = 873, height = 777, offsetX = -6, offsetY = -5, offsetWidth = 884, offsetHeight = 782}, -- 100: Parent Christmas Idle Black Lines0001 + {x = 0, y = 2274, width = 876, height = 760, offsetX = 0, offsetY = -22, offsetWidth = 884, offsetHeight = 782}, -- 101: Parent Christmas Idle Black Lines0002 + {x = 0, y = 2274, width = 876, height = 760, offsetX = 0, offsetY = -22, offsetWidth = 884, offsetHeight = 782}, -- 102: Parent Christmas Idle Black Lines0003 + {x = 886, y = 2274, width = 877, height = 766, offsetX = -5, offsetY = -16, offsetWidth = 884, offsetHeight = 782}, -- 103: Parent Christmas Idle Black Lines0004 + {x = 886, y = 2274, width = 877, height = 766, offsetX = -5, offsetY = -16, offsetWidth = 884, offsetHeight = 782}, -- 104: Parent Christmas Idle Black Lines0005 + {x = 1773, y = 2274, width = 866, height = 777, offsetX = -18, offsetY = -5, offsetWidth = 884, offsetHeight = 782}, -- 105: Parent Christmas Idle Black Lines0006 + {x = 1773, y = 2274, width = 866, height = 777, offsetX = -18, offsetY = -5, offsetWidth = 884, offsetHeight = 782}, -- 106: Parent Christmas Idle Black Lines0007 + {x = 2649, y = 2274, width = 865, height = 781, offsetX = -19, offsetY = -1, offsetWidth = 884, offsetHeight = 782}, -- 107: Parent Christmas Idle Black Lines0008 + {x = 2649, y = 2274, width = 865, height = 781, offsetX = -19, offsetY = -1, offsetWidth = 884, offsetHeight = 782}, -- 108: Parent Christmas Idle Black Lines0009 + {x = 3524, y = 2274, width = 865, height = 782, offsetX = -19, offsetY = 0, offsetWidth = 884, offsetHeight = 782}, -- 109: Parent Christmas Idle Black Lines0010 + {x = 3524, y = 2274, width = 865, height = 782, offsetX = -19, offsetY = 0, offsetWidth = 884, offsetHeight = 782}, -- 110: Parent Christmas Idle Black Lines0011 + {x = 3524, y = 2274, width = 865, height = 782, offsetX = -19, offsetY = 0, offsetWidth = 884, offsetHeight = 782}, -- 111: Parent Christmas Idle Black Lines0012 + {x = 3524, y = 2274, width = 865, height = 782, offsetX = -19, offsetY = 0, offsetWidth = 884, offsetHeight = 782}, -- 112: Parent Christmas Idle Black Lines0013 + {x = 4399, y = 2274, width = 435, height = 461, offsetX = -18, offsetY = -13, offsetWidth = 453, offsetHeight = 475}, -- 113: Pico Idle Dance0000 + {x = 4399, y = 2274, width = 435, height = 461, offsetX = -18, offsetY = -13, offsetWidth = 453, offsetHeight = 475}, -- 114: Pico Idle Dance0001 + {x = 4844, y = 2274, width = 442, height = 468, offsetX = -11, offsetY = -6, offsetWidth = 453, offsetHeight = 475}, -- 115: Pico Idle Dance0002 + {x = 4844, y = 2274, width = 442, height = 468, offsetX = -11, offsetY = -6, offsetWidth = 453, offsetHeight = 475}, -- 116: Pico Idle Dance0003 + {x = 5296, y = 2274, width = 448, height = 469, offsetX = -1, offsetY = -6, offsetWidth = 453, offsetHeight = 475}, -- 117: Pico Idle Dance0004 + {x = 5754, y = 2274, width = 444, height = 469, offsetX = -1, offsetY = -6, offsetWidth = 453, offsetHeight = 475}, -- 118: Pico Idle Dance0005 + {x = 6208, y = 2274, width = 444, height = 474, offsetX = -1, offsetY = -1, offsetWidth = 453, offsetHeight = 475}, -- 119: Pico Idle Dance0006 + {x = 6662, y = 2274, width = 442, height = 474, offsetX = -1, offsetY = -1, offsetWidth = 453, offsetHeight = 475}, -- 120: Pico Idle Dance0007 + {x = 7114, y = 2274, width = 443, height = 475, offsetX = 0, offsetY = 0, offsetWidth = 453, offsetHeight = 475}, -- 121: Pico Idle Dance0008 + {x = 7114, y = 2274, width = 443, height = 475, offsetX = 0, offsetY = 0, offsetWidth = 453, offsetHeight = 475}, -- 122: Pico Idle Dance0009 + {x = 7114, y = 2274, width = 443, height = 475, offsetX = 0, offsetY = 0, offsetWidth = 453, offsetHeight = 475}, -- 123: Pico Idle Dance0010 + {x = 7114, y = 2274, width = 443, height = 475, offsetX = 0, offsetY = 0, offsetWidth = 453, offsetHeight = 475}, -- 124: Pico Idle Dance0011 + {x = 7114, y = 2274, width = 443, height = 475, offsetX = 0, offsetY = 0, offsetWidth = 453, offsetHeight = 475}, -- 125: Pico Idle Dance0012 + {x = 7114, y = 2274, width = 443, height = 475, offsetX = 0, offsetY = 0, offsetWidth = 453, offsetHeight = 475}, -- 126: Pico Idle Dance0013 + {x = 7567, y = 2274, width = 336, height = 288, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 127: SENPAI idle Black Lines0000 + {x = 7567, y = 2274, width = 336, height = 288, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 128: SENPAI idle Black Lines0001 + {x = 0, y = 3066, width = 336, height = 288, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 129: SENPAI idle Black Lines0002 + {x = 0, y = 3066, width = 336, height = 288, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 130: SENPAI idle Black Lines0003 + {x = 346, y = 3066, width = 336, height = 288, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 131: SENPAI idle Black Lines0004 + {x = 346, y = 3066, width = 336, height = 288, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 132: SENPAI idle Black Lines0005 + {x = 692, y = 3066, width = 336, height = 288, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 133: SENPAI idle Black Lines0006 + {x = 692, y = 3066, width = 336, height = 288, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 134: SENPAI idle Black Lines0007 + {x = 1038, y = 3066, width = 336, height = 288, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 135: SENPAI idle Black Lines0008 + {x = 1038, y = 3066, width = 336, height = 288, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 136: SENPAI idle Black Lines0009 + {x = 1038, y = 3066, width = 336, height = 288, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 137: SENPAI idle Black Lines0010 + {x = 1038, y = 3066, width = 336, height = 288, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 138: SENPAI idle Black Lines0011 + {x = 1038, y = 3066, width = 336, height = 288, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 139: SENPAI idle Black Lines0012 + {x = 1038, y = 3066, width = 336, height = 288, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 140: SENPAI idle Black Lines0013 + {x = 1384, y = 3066, width = 381, height = 549, offsetX = -50, offsetY = 0, offsetWidth = 492, offsetHeight = 549}, -- 141: spooky dance idle BLACK LINES0000 + {x = 1384, y = 3066, width = 381, height = 549, offsetX = -50, offsetY = 0, offsetWidth = 492, offsetHeight = 549}, -- 142: spooky dance idle BLACK LINES0001 + {x = 1775, y = 3066, width = 379, height = 541, offsetX = -55, offsetY = -8, offsetWidth = 492, offsetHeight = 549}, -- 143: spooky dance idle BLACK LINES0002 + {x = 1775, y = 3066, width = 379, height = 541, offsetX = -55, offsetY = -8, offsetWidth = 492, offsetHeight = 549}, -- 144: spooky dance idle BLACK LINES0003 + {x = 2164, y = 3066, width = 357, height = 484, offsetX = -79, offsetY = -61, offsetWidth = 492, offsetHeight = 549}, -- 145: spooky dance idle BLACK LINES0004 + {x = 2164, y = 3066, width = 357, height = 484, offsetX = -79, offsetY = -61, offsetWidth = 492, offsetHeight = 549}, -- 146: spooky dance idle BLACK LINES0005 + {x = 2531, y = 3066, width = 354, height = 494, offsetX = -78, offsetY = -52, offsetWidth = 492, offsetHeight = 549}, -- 147: spooky dance idle BLACK LINES0006 + {x = 2531, y = 3066, width = 354, height = 494, offsetX = -78, offsetY = -52, offsetWidth = 492, offsetHeight = 549}, -- 148: spooky dance idle BLACK LINES0007 + {x = 2895, y = 3066, width = 492, height = 532, offsetX = 0, offsetY = -16, offsetWidth = 492, offsetHeight = 549}, -- 149: spooky dance idle BLACK LINES0008 + {x = 2895, y = 3066, width = 492, height = 532, offsetX = 0, offsetY = -16, offsetWidth = 492, offsetHeight = 549}, -- 150: spooky dance idle BLACK LINES0009 + {x = 3397, y = 3066, width = 481, height = 524, offsetX = -7, offsetY = -20, offsetWidth = 492, offsetHeight = 549}, -- 151: spooky dance idle BLACK LINES0010 + {x = 3397, y = 3066, width = 481, height = 524, offsetX = -7, offsetY = -20, offsetWidth = 492, offsetHeight = 549}, -- 152: spooky dance idle BLACK LINES0011 + {x = 2164, y = 3066, width = 357, height = 484, offsetX = -79, offsetY = -61, offsetWidth = 492, offsetHeight = 549}, -- 153: spooky dance idle BLACK LINES0012 + {x = 2164, y = 3066, width = 357, height = 484, offsetX = -79, offsetY = -61, offsetWidth = 492, offsetHeight = 549}, -- 154: spooky dance idle BLACK LINES0013 + {x = 2531, y = 3066, width = 354, height = 494, offsetX = -78, offsetY = -52, offsetWidth = 492, offsetHeight = 549}, -- 155: spooky dance idle BLACK LINES0014 + {x = 2531, y = 3066, width = 354, height = 494, offsetX = -78, offsetY = -52, offsetWidth = 492, offsetHeight = 549}, -- 156: spooky dance idle BLACK LINES0015 + {x = 4000, y = 4000, width = 1, height = 1, offsetX = -78, offsetY = -52, offsetWidth = 492, offsetHeight = 549} -- 157: none + }, + { + ["boyfriend confirm"] = {start = 1, stop = 26, speed = 24, offsetX = 0, offsetY = 0}, + ["boyfriend"] = {start = 27, stop = 40, speed = 24, offsetX = 0, offsetY = 0}, + ["girlfriend"] = {start = 55, stop = 84, speed = 24, offsetX = 0, offsetY = 0}, + ["week1"] = {start = 157, stop = 157, speed = 24, offsetX = 0, offsetY = 0}, + ["week2"] = {start = 41, stop = 54, speed = 24, offsetX = 0, offsetY = 0}, + ["week3"] = {start = 141, stop = 156, speed = 24, offsetX = 0, offsetY = 0}, + ["week4"] = {start = 113, stop = 126, speed = 24, offsetX = 0, offsetY = 0}, + ["week5"] = {start = 85, stop = 98, speed = 24, offsetX = 0, offsetY = 0}, + ["week6"] = {start = 99, stop = 112, speed = 24, offsetX = 0, offsetY = 0}, + ["week7"] = {start = 127, stop = 140, speed = 24, offsetX = 0, offsetY = 0}, + ["week8"] = {start = 157, stop = 157, speed = 24, offsetX = 0, offsetY = 0} + }, + "boyfriend", + true +) \ No newline at end of file diff --git a/src/love/sprites/menu/titleEnter.lua b/src/love/sprites/menu/titleEnter.lua new file mode 100644 index 00000000..65cca881 --- /dev/null +++ b/src/love/sprites/menu/titleEnter.lua @@ -0,0 +1,85 @@ +--[[---------------------------------------------------------------------------- +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("menu/titleEnter")), + -- Automatically generated from titleEnter.xml + { + {x = 0, y = 0, width = 1477, height = 79, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 1: ENTER PRESSED0000 + {x = 1487, y = 0, width = 1477, height = 79, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 2: ENTER PRESSED0001 + {x = 0, y = 0, width = 1477, height = 79, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 3: ENTER PRESSED0002 + {x = 1487, y = 0, width = 1477, height = 79, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 4: ENTER PRESSED0003 + {x = 0, y = 0, width = 1477, height = 79, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 5: ENTER PRESSED0004 + {x = 1487, y = 0, width = 1477, height = 79, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 6: ENTER PRESSED0005 + {x = 1487, y = 0, width = 1477, height = 79, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 7: ENTER PRESSED0006 + {x = 0, y = 0, width = 1477, height = 79, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 8: ENTER PRESSED0007 + {x = 1487, y = 0, width = 1477, height = 79, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 9: ENTER PRESSED0008 + {x = 0, y = 89, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 10: Press Enter to Begin0000 + {x = 1505, y = 89, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 11: Press Enter to Begin0001 + {x = 0, y = 195, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 12: Press Enter to Begin0002 + {x = 1505, y = 195, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 13: Press Enter to Begin0003 + {x = 0, y = 301, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 14: Press Enter to Begin0004 + {x = 1505, y = 301, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 15: Press Enter to Begin0005 + {x = 0, y = 407, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 16: Press Enter to Begin0006 + {x = 1505, y = 407, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 17: Press Enter to Begin0007 + {x = 0, y = 513, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 18: Press Enter to Begin0008 + {x = 1505, y = 513, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 19: Press Enter to Begin0009 + {x = 0, y = 619, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 20: Press Enter to Begin0010 + {x = 1505, y = 619, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 21: Press Enter to Begin0011 + {x = 0, y = 725, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 22: Press Enter to Begin0012 + {x = 1505, y = 725, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 23: Press Enter to Begin0013 + {x = 0, y = 831, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 24: Press Enter to Begin0014 + {x = 1505, y = 831, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 25: Press Enter to Begin0015 + {x = 0, y = 937, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 26: Press Enter to Begin0016 + {x = 1505, y = 937, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 27: Press Enter to Begin0017 + {x = 0, y = 1043, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 28: Press Enter to Begin0018 + {x = 1505, y = 1043, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 29: Press Enter to Begin0019 + {x = 0, y = 1149, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 30: Press Enter to Begin0020 + {x = 1505, y = 1149, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 31: Press Enter to Begin0021 + {x = 0, y = 1255, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 32: Press Enter to Begin0022 + {x = 0, y = 1255, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 33: Press Enter to Begin0023 + {x = 1505, y = 1255, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 34: Press Enter to Begin0024 + {x = 0, y = 1149, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 35: Press Enter to Begin0025 + {x = 0, y = 1361, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 36: Press Enter to Begin0026 + {x = 1505, y = 1361, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 37: Press Enter to Begin0027 + {x = 0, y = 1467, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 38: Press Enter to Begin0028 + {x = 1505, y = 1467, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 39: Press Enter to Begin0029 + {x = 0, y = 1573, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 40: Press Enter to Begin0030 + {x = 1505, y = 1573, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 41: Press Enter to Begin0031 + {x = 0, y = 1679, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 42: Press Enter to Begin0032 + {x = 1505, y = 1679, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 43: Press Enter to Begin0033 + {x = 0, y = 1785, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 44: Press Enter to Begin0034 + {x = 1505, y = 1785, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 45: Press Enter to Begin0035 + {x = 0, y = 1891, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 46: Press Enter to Begin0036 + {x = 1505, y = 1891, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 47: Press Enter to Begin0037 + {x = 0, y = 1997, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 48: Press Enter to Begin0038 + {x = 1505, y = 1997, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 49: Press Enter to Begin0039 + {x = 0, y = 2103, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 50: Press Enter to Begin0040 + {x = 1505, y = 2103, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 51: Press Enter to Begin0041 + {x = 0, y = 2209, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 52: Press Enter to Begin0042 + {x = 1505, y = 2209, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 53: Press Enter to Begin0043 + {x = 0, y = 89, width = 1495, height = 96, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0} -- 54: Press Enter to Begin0044 + }, + { + ["anim"] = {start = 10, stop = 54, speed = 24, offsetX = 0, offsetY = 0}, + ["pressed"] = {start = 1, stop = 9, speed = 24, offsetX = 0, offsetY = 0} + }, + "anim", + false +) \ No newline at end of file diff --git a/src/love/sprites/pixel/countdown.lua b/src/love/sprites/pixel/countdown.lua new file mode 100644 index 00000000..6b46f4fb --- /dev/null +++ b/src/love/sprites/pixel/countdown.lua @@ -0,0 +1,15 @@ +return graphics.newSprite( + love.graphics.newImage(graphics.imagePath("pixel/countdown")), + { + {x = 0, y = 0, width = 87, height = 41, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 1: Ready + {x = 87, y = 0, width = 80, height = 37, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 2: Set + {x = 167, y = 0, width = 97, height = 37, offsetX = 0, offsetY = 0, offsetWidth = 0, offsetHeight = 0}, -- 3: Date + }, + { + ["ready"] = {start = 1, stop = 1, speed = 0, offsetX = 0, offsetY = 0}, + ["set"] = {start = 2, stop = 2, speed = 0, offsetX = 0, offsetY = 0}, + ["date"] = {start = 3, stop = 3, speed = 0, offsetX = 0, offsetY = 0} + }, + "ready", + false +) diff --git a/src/love/states/menu.lua b/src/love/states/menu/menuFreeplay.lua similarity index 58% rename from src/love/states/menu.lua rename to src/love/states/menu/menuFreeplay.lua index f526414d..8f045419 100644 --- a/src/love/states/menu.lua +++ b/src/love/states/menu/menuFreeplay.lua @@ -28,9 +28,7 @@ local songNum, songAppend local songDifficulty = 2 local titleBG = graphics.newImage(love.graphics.newImage(graphics.imagePath("menu/title-bg"))) -local logo = graphics.newImage(love.graphics.newImage(graphics.imagePath("menu/logo"))) -local girlfriendTitle = love.filesystem.load("sprites/menu/girlfriend-title.lua")() local menuNames = { "Story Mode", @@ -103,7 +101,6 @@ local difficultyStrs = { local selectSound = love.audio.newSource("sounds/menu/select.ogg", "static") local confirmSound = love.audio.newSource("sounds/menu/confirm.ogg", "static") -local music = love.audio.newSource("music/menu/menu.ogg", "stream") local function switchMenu(menu) if menu == 4 then @@ -111,6 +108,8 @@ local function switchMenu(menu) return switchMenu(1) elseif menu == 3 then + + elseif menu == 2 then function leftFunc() if menuState == 3 then songDifficulty = (songDifficulty > 1) and songDifficulty - 1 or 3 @@ -131,7 +130,6 @@ local function switchMenu(menu) end function confirmFunc() if menuState == 3 then - music:stop() status.setLoading(true) @@ -179,114 +177,82 @@ local function switchMenu(menu) end graphics.setColor(1, 1, 1) - if input:getActiveDevice() == "joy" then - love.graphics.printf("Left Stick/D-Pad: Select | A: Confirm | B: Back", -640, 350, 1280, "center", nil, 1, 1) - else - love.graphics.printf("Arrow Keys: Select | Enter: Confirm | Escape: Back", -640, 350, 1280, "center", nil, 1, 1) - end end - elseif menu == 2 then - weekNum = 1 - songNum = 1 + end - function leftFunc() - if menuState == 2 then - songDifficulty = (songDifficulty > 1) and songDifficulty - 1 or 3 - else - weekNum = (weekNum > 1) and weekNum - 1 or #weekMeta - end - end - function rightFunc() - if menuState == 2 then - songDifficulty = (songDifficulty < 3) and songDifficulty + 1 or 1 - else - weekNum = (weekNum < #weekMeta) and weekNum + 1 or 1 - end - end - function confirmFunc() - if menuState == 2 then - music:stop() + menuState = 1 +end - status.setLoading(true) +function leftFunc() + if menuState == 3 then + songDifficulty = (songDifficulty > 1) and songDifficulty - 1 or 3 + elseif menuState == 2 then + songNum = (songNum > 1) and songNum - 1 or #weekMeta[weekNum][2] + else + weekNum = (weekNum > 1) and weekNum - 1 or #weekMeta + end +end +function rightFunc() + if menuState == 3 then + songDifficulty = (songDifficulty < 3) and songDifficulty + 1 or 1 + elseif menuState == 2 then + songNum = (songNum < #weekMeta[weekNum][2]) and songNum + 1 or 1 + else + weekNum = (weekNum < #weekMeta) and weekNum + 1 or 1 + end +end +function confirmFunc() + if menuState == 3 then - graphics.fadeOut( - 0.5, - function() - songAppend = difficultyStrs[songDifficulty] + status.setLoading(true) - storyMode = true + graphics.fadeOut( + 0.5, + function() + menu:musicStop() + + songAppend = difficultyStrs[songDifficulty] - Gamestate.switch(weekData[weekNum], songNum, songAppend) + storyMode = false - status.setLoading(false) - end - ) - else - menuState = menuState + 1 - end - end - function backFunc() - if menuState == 1 then - switchMenu(1) - else - menuState = menuState - 1 - end - end - function drawFunc() - graphics.setColor(1, 1, 0) - if menuState == 2 then - if songDifficulty == 3 then - love.graphics.printf("Choose a difficulty: < Hard >", -640, 285, 853, "center", nil, 1.5, 1.5) - elseif songDifficulty == 2 then - love.graphics.printf("Choose a difficulty: < Normal >", -640, 285, 853, "center", nil, 1.5, 1.5) - else - love.graphics.printf("Choose a difficulty: < Easy >", -640, 285, 853, "center", nil, 1.5, 1.5) - end - else - love.graphics.printf("Choose a week: < " .. weekMeta[weekNum][1] .. " >", -640, 285, 853, "center", nil, 1.5, 1.5) - end - graphics.setColor(1, 1, 1) + Gamestate.switch(weekData[weekNum], songNum, songAppend) - if input:getActiveDevice() == "joy" then - love.graphics.printf("Left Stick/D-Pad: Select | A: Confirm | B: Back", -640, 350, 1280, "center", nil, 1, 1) - else - love.graphics.printf("Arrow Keys: Select | Enter: Confirm | Escape: Back", -640, 350, 1280, "center", nil, 1, 1) + status.setLoading(false) end - end + ) else - function leftFunc() - menuNum = (menuNum > 1) and menuNum - 1 or #menuNames - end - function rightFunc() - menuNum = (menuNum < #menuNames) and menuNum + 1 or 1 + if menuState == 1 then + songNum = 1 end - function confirmFunc() - switchMenu(menuNum + 1) - end - function backFunc() - graphics.fadeOut(0.5, love.event.quit) - end - function drawFunc() - graphics.setColor(1, 1, 0) - love.graphics.printf("< " .. menuNames[menuNum] .. " >", -640, 285, 853, "center", nil, 1.5, 1.5) - graphics.setColor(1, 1, 1) - if input:getActiveDevice() == "joy" then - love.graphics.printf("Left Stick/D-Pad: Select | A: Confirm | B: Exit", -640, 350, 1280, "center", nil, 1, 1) - else - love.graphics.printf("Arrow Keys: Select | Enter: Confirm | Escape: Exit", -640, 350, 1280, "center", nil, 1, 1) - end - end + menuState = menuState + 1 + end +end +function backFunc() + if menuState == 1 then + switchMenu(1) + else + menuState = menuState - 1 end - - menuState = 1 end -logo.x, logo.y = -350, -125 - -girlfriendTitle.x, girlfriendTitle.y = 300, -75 - -music:setLooping(true) +function drawFunc() + graphics.setColor(1, 1, 0) + if menuState == 3 then + if songDifficulty == 3 then + love.graphics.printf("Choose a difficulty: < Hard >", -640, 285, 853, "center", nil, 1.5, 1.5) + elseif songDifficulty == 2 then + love.graphics.printf("Choose a difficulty: < Normal >", -640, 285, 853, "center", nil, 1.5, 1.5) + else + love.graphics.printf("Choose a difficulty: < Easy >", -640, 285, 853, "center", nil, 1.5, 1.5) + end + elseif menuState == 2 then + love.graphics.printf("Choose a song: < " .. weekMeta[weekNum][2][songNum] .. " >", -640, 285, 853, "center", nil, 1.5, 1.5) + else + love.graphics.printf("Choose a week: < " .. weekMeta[weekNum][1] .. " >", -640, 285, 853, "center", nil, 1.5, 1.5) + end + graphics.setColor(1, 1, 1) +end return { enter = function(self, previous) @@ -300,11 +266,9 @@ return { graphics.setFade(0) graphics.fadeIn(0.5) - music:play() end, update = function(self, dt) - girlfriendTitle:update(dt) if not graphics.isFading() then if input:pressed("left") then @@ -322,7 +286,12 @@ return { elseif input:pressed("back") then audio.playSound(selectSound) - backFunc() + if menuState == 1 then + Gamestate.switch(menuSelect) + else + menuState = menuState - 1 + end + end end end, @@ -336,30 +305,12 @@ return { love.graphics.push() love.graphics.scale(cam.sizeX, cam.sizeY) - logo:draw() - - girlfriendTitle:draw() - - love.graphics.printf( - "v1.1.0 beta 2\n" .. - "Developed by HTV04\n\n" .. - "Original game by Funkin' Crew, in association with Newgrounds", - -525, - 90, - 450, - "right", - nil, - 1, - 1 - ) - drawFunc() love.graphics.pop() love.graphics.pop() end, leave = function(self) - music:stop() Timer.clear() end diff --git a/src/love/states/menu/menuSelect.lua b/src/love/states/menu/menuSelect.lua new file mode 100644 index 00000000..6b51f677 --- /dev/null +++ b/src/love/states/menu/menuSelect.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 . +------------------------------------------------------------------------------]] + +local leftFunc, rightFunc, confirmFunc, backFunc, drawFunc + +local menuState + +local titleBG = graphics.newImage(love.graphics.newImage(graphics.imagePath("menu/menuBG"))) + +local options = love.filesystem.load("sprites/menu/menuButtons.lua")() +local story = love.filesystem.load("sprites/menu/menuButtons.lua")() +local freeplay = love.filesystem.load("sprites/menu/menuButtons.lua")() + +local menuButton + +local selectSound = love.audio.newSource("sounds/menu/select.ogg", "static") +local confirmSound = love.audio.newSource("sounds/menu/confirm.ogg", "static") + + +local function switchMenu(menu) + menuState = 1 +end + +story.y = -200 +freeplay.y = 0 +options.y = 200 + + +return { + enter = function(self, previous) + menuButton = 1 + songNum = 0 + story:animate("story hover", true) + freeplay:animate("freeplay", true) + options:animate("options", true) + + cam.sizeX, cam.sizeY = 0.9, 0.9 + camScale.x, camScale.y = 0.9, 0.9 + + switchMenu(1) + + graphics.setFade(0) + graphics.fadeIn(0.5) + + end, + + update = function(self, dt) + options:update(dt) + story:update(dt) + freeplay:update(dt) + + if not graphics.isFading() then + if input:pressed("up") then + audio.playSound(selectSound) + + if menuButton ~= 1 then + menuButton = menuButton - 1 + else + menuButton = 3 + end + + if menuButton == 1 then + story:animate("story hover", true) + freeplay:animate("freeplay", true) + options:animate("options", true) + elseif menuButton == 2 then + story:animate("story", true) + freeplay:animate("freeplay hover", true) + options:animate("options", true) + elseif menuButton == 3 then + story:animate("story", true) + freeplay:animate("freeplay", true) + options:animate("options hover", true) + end + + elseif input:pressed("down") then + audio.playSound(selectSound) + + if menuButton ~= 3 then + menuButton = menuButton + 1 + else + menuButton = 1 + end + + if menuButton == 1 then + story:animate("story hover", true) + freeplay:animate("freeplay", true) + options:animate("options", true) + elseif menuButton == 2 then + story:animate("story", true) + freeplay:animate("freeplay hover", true) + options:animate("options", true) + elseif menuButton == 3 then + story:animate("story", true) + freeplay:animate("freeplay", true) + options:animate("options hover", true) + end + + elseif input:pressed("confirm") then + audio.playSound(confirmSound) + + --confirmFunc() + if menuButton == 1 then + status.setLoading(true) + Gamestate.switch(menuWeek) + status.setLoading(false) + elseif menuButton == 2 then + status.setLoading(true) + Gamestate.switch(menuFreeplay) + status.setLoading(false) + elseif menuButton == 3 then + love.window.showMessageBox("lol", "Not implemented yet :P") + end + elseif input:pressed("back") then + audio.playSound(selectSound) + + Gamestate.switch(titleMenu) + end + end + end, + + draw = function(self) + love.graphics.push() + love.graphics.translate(graphics.getWidth() / 2, graphics.getHeight() / 2) + + titleBG:draw() + + story:draw() + options:draw() + freeplay:draw() + + love.graphics.push() + love.graphics.scale(cam.sizeX, cam.sizeY) + love.graphics.pop() + love.graphics.pop() + end, + + leave = function(self) + + Timer.clear() + end +} diff --git a/src/love/states/menu/menuWeek.lua b/src/love/states/menu/menuWeek.lua new file mode 100644 index 00000000..96c2fa10 --- /dev/null +++ b/src/love/states/menu/menuWeek.lua @@ -0,0 +1,309 @@ +--[[---------------------------------------------------------------------------- +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 . +------------------------------------------------------------------------------]] + +local upFunc, downFunc, confirmFunc, backFunc, drawFunc, menuFunc, menuDesc, trackNames + +local menuState + +local menuNum = 1 + +local weekNum = 1 +local songNum, songAppend +local songDifficulty = 2 + +local titleBG = graphics.newImage(love.graphics.newImage(graphics.imagePath("menu/storymenu/weekMenu"))) + +local enemyDanceLines = love.filesystem.load("sprites/menu/storymenu/idlelines.lua")() + +local difficultyAnim = love.filesystem.load("sprites/menu/storymenu/difficulty.lua")() + +local bfDanceLines = love.filesystem.load("sprites/menu/storymenu/idlelines.lua")() + +local gfDanceLines = love.filesystem.load("sprites/menu/storymenu/idlelines.lua")() + +local tutorial, week1, week2, week3, week4, week5, week6 + +local weekDesc = { + "LEARN TO FUNK", + "DADDY DEAREST", + "SPOOKY MONTH", + "PICO", + "MOMMY MUST MURDER", + "RED SNOW", + "HATING SIMULATOR FT. MOAWLING" +} +local difficultyStrs = { + "-easy", + "", + "-hard" +} + +tutorial = graphics.newImage(love.graphics.newImage(graphics.imagePath("menu/storymenu/week0"))) +week1 = graphics.newImage(love.graphics.newImage(graphics.imagePath("menu/storymenu/week1"))) +week2 = graphics.newImage(love.graphics.newImage(graphics.imagePath("menu/storymenu/week2"))) +week3 = graphics.newImage(love.graphics.newImage(graphics.imagePath("menu/storymenu/week3"))) +week4 = graphics.newImage(love.graphics.newImage(graphics.imagePath("menu/storymenu/week4"))) +week5 = graphics.newImage(love.graphics.newImage(graphics.imagePath("menu/storymenu/week5"))) +week6 = graphics.newImage(love.graphics.newImage(graphics.imagePath("menu/storymenu/week6"))) + +enemyDanceLines.sizeX, enemyDanceLines.sizeY = 0.5, 0.5 + +local selectSound = love.audio.newSource("sounds/menu/select.ogg", "static") +local confirmSound = love.audio.newSource("sounds/menu/confirm.ogg", "static") + +local function switchMenu(menu) + +end + +enemyDanceLines.x, enemyDanceLines.y = -375, -170 + +bfDanceLines.sizeX, bfDanceLines.sizeY = 0.7, 0.7 +gfDanceLines.sizeX, gfDanceLines.sizeY = 0.5, 0.5 + +bfDanceLines.x, bfDanceLines.y = 0, -150 +gfDanceLines.x, gfDanceLines.y = 375, -170 + +difficultyAnim.x, difficultyAnim.y = 375 + 25, 220 + +return { + enter = function(self, previous) + bfDanceLines:animate("boyfriend", true) + gfDanceLines:animate("girlfriend", true) + enemyDanceLines:animate("week1", true) + songNum = 0 + weekNum = 1 + trackNames = "\nTutorial" + menuDesc = "LEARN TO FUNK" + + cam.sizeX, cam.sizeY = 0.9, 0.9 + camScale.x, camScale.y = 0.9, 0.9 + + switchMenu(1) + + graphics.setFade(0) + graphics.fadeIn(0.5) + + function confirmFunc() + menu:musicStop() + songNum = 1 + + status.setLoading(true) + + graphics.fadeOut( + 0.5, + function() + + songAppend = difficultyStrs[songDifficulty] + + storyMode = true + + Gamestate.switch(weekData[weekNum], songNum, songAppend) + + status.setLoading(false) + end + ) + end + + end, + + update = function(self, dt) + + + function menuFunc() + if weekNum ~= 7 then + enemyDanceLines.sizeX, enemyDanceLines.sizeY = 0.5, 0.5 + elseif weekNum == 7 then + enemyDanceLines.sizeX, enemyDanceLines.sizeY = 1, 1 + end + + if weekNum == 1 then + trackNames = "\nTutorial" + elseif weekNum == 2 then + trackNames = "\nBopeebo\nFresh\nDad-Battle" + elseif weekNum == 3 then + trackNames = "\nSpookeez\nSouth\nMonster" + elseif weekNum == 4 then + trackNames = "\nPico\nPhilly\nBlammed" + elseif weekNum == 5 then + trackNames = "\nSatin-Panties\nHigh\nM.I.L.F" + elseif weekNum == 6 then + trackNames = "\nCocoa\nEggnog\nWinter-Horrorland" + elseif weekNum == 7 then + trackNames = "\nSenpai\nRoses\nThorns" + end + + enemyDanceLines:animate("week" .. weekNum, true) + end + + enemyDanceLines:update(dt) + bfDanceLines:update(dt) + gfDanceLines:update(dt) + + if songDifficulty == 1 then + difficultyAnim:animate("easy", true) + elseif songDifficulty == 2 then + difficultyAnim:animate("normal", true) + elseif songDifficulty == 3 then + difficultyAnim:animate("hard", true) + end + + difficultyAnim:update(dt) + + if not graphics.isFading() then + if input:pressed("down") then + audio.playSound(selectSound) + + if weekNum ~= 7 then + weekNum = weekNum + 1 + else + weekNum = 1 + end + menuFunc() + + elseif input:pressed("up") then + audio.playSound(selectSound) + + if weekNum ~= 1 then + weekNum = weekNum - 1 + else + weekNum = 7 + end + menuFunc() + + elseif input:pressed("left") then + audio.playSound(selectSound) + + if songDifficulty ~= 1 then + songDifficulty = songDifficulty - 1 + else + songDifficulty = 3 + end + + elseif input:pressed("right") then + audio.playSound(selectSound) + + if songDifficulty ~= 3 then + songDifficulty = songDifficulty + 1 + else + songDifficulty = 1 + end + + elseif input:pressed("confirm") then + audio.playSound(confirmSound) + bfDanceLines:animate("boyfriend confirm", false) + + confirmFunc() + elseif input:pressed("back") then + audio.playSound(selectSound) + + Gamestate.switch(menuSelect) + end + end + end, + + draw = function(self) + love.graphics.push() + love.graphics.translate(graphics.getWidth() / 2, graphics.getHeight() / 2) + + titleBG:draw() + + love.graphics.push() + love.graphics.scale(cam.sizeX, cam.sizeY) + + difficultyAnim:draw() + if weekNum ~= 1 then + enemyDanceLines:draw() + end + bfDanceLines:draw() + gfDanceLines:draw() + + if weekNum == 1 then + tutorial.x, tutorial.y = 0, 220 + week1.y = 320 + + tutorial:draw() + week1:draw() + + elseif weekNum == 2 then + tutorial.y = 130 + week2.y = 320 + week1.x, week1.y = 0, 220 + + tutorial:draw() + week1:draw() + week2:draw() + + elseif weekNum == 3 then + week1.y = 130 + week3.y = 320 + week2.x, week2.y = 0, 220 + + week1:draw() + week2:draw() + week3:draw() + + elseif weekNum == 4 then + week2.y = 130 + week4.y = 320 + week3.x, week3.y = 0, 220 + + week2:draw() + week3:draw() + week4:draw() + + elseif weekNum == 5 then + week5.y = 320 + week3.y = 130 + week4.x, week4.y = 0, 220 + + week3:draw() + week4:draw() + week5:draw() + + elseif weekNum == 6 then + + week6.y = 320 + week4.y = 130 + week5.x, week5.y = 0, 220 + week4:draw() + week5:draw() + week6:draw() + + elseif weekNum == 7 then + week6.x, week6.y = 0, 220 + week5.y = 130 + + week5:draw() + week6:draw() + end + + love.graphics.printf(weekDesc[weekNum], -585, -395, 853, "right", nil, 1.5, 1.5) + graphics.setColor(255 / 255, 117 / 255, 172 / 255) + love.graphics.printf("TRACKS" .. trackNames, -1050, 140, 853, "center", nil, 1.5, 1.5) + graphics.setColor(1,1,1) + + love.graphics.pop() + love.graphics.pop() + end, + + leave = function(self) + + Timer.clear() + end +} diff --git a/src/love/states/menu/titleMenu.lua b/src/love/states/menu/titleMenu.lua new file mode 100644 index 00000000..c36ef317 --- /dev/null +++ b/src/love/states/menu/titleMenu.lua @@ -0,0 +1,125 @@ +--[[---------------------------------------------------------------------------- +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 . +------------------------------------------------------------------------------]] + +local upFunc, downFunc, confirmFunc, backFunc, drawFunc, musicStop + +local menuState + +local menuNum = 1 + +local weekNum = 1 +local songNum, songAppend +local songDifficulty = 2 + +local logo = graphics.newImage(love.graphics.newImage(graphics.imagePath("menu/logo"))) + +local girlfriendTitle = love.filesystem.load("sprites/menu/girlfriend-title.lua")() +local titleEnter = love.filesystem.load("sprites/menu/titleEnter.lua")() + +local selectSound = love.audio.newSource("sounds/menu/select.ogg", "static") +local confirmSound = love.audio.newSource("sounds/menu/confirm.ogg", "static") + +local music = love.audio.newSource("music/menu/menu.ogg", "stream") + +local function switchMenu(menu) + function confirmFunc() + status.setLoading(true) + Gamestate.switch(menuSelect) + status.setLoading(false) + end + function backFunc() + graphics.fadeOut(0.5, love.event.quit) + end + + menuState = 1 +end + + + +logo.x, logo.y = -350, -125 + +girlfriendTitle.x, girlfriendTitle.y = 325, 65 + +titleEnter.x, titleEnter.y = 225, 350 + +music:setLooping(true) + +return { + enter = function(self, previous) + titleEnter:animate("anim", true) + songNum = 0 + + cam.sizeX, cam.sizeY = 0.9, 0.9 + camScale.x, camScale.y = 0.9, 0.9 + + switchMenu(1) + + graphics.setFade(0) + graphics.fadeIn(0.5) + + music:play() + end, + + musicStop = function(self) + music:stop() + end, + + update = function(self, dt) + girlfriendTitle:update(dt) + titleEnter:update(dt) + --titleEnter:animate("anim", true) + + if not graphics.isFading() then + if input:pressed("confirm") then + audio.playSound(confirmSound) + + titleEnter:animate("pressed", false) + + + confirmFunc() + elseif input:pressed("back") then + audio.playSound(selectSound) + + backFunc() + end + end + end, + + draw = function(self) + love.graphics.push() + love.graphics.translate(graphics.getWidth() / 2, graphics.getHeight() / 2) + + love.graphics.push() + love.graphics.scale(cam.sizeX, cam.sizeY) + + logo:draw() + + girlfriendTitle:draw() + titleEnter:draw() + + love.graphics.pop() + love.graphics.pop() + end, + + leave = function(self) + --music:stop() + + Timer.clear() + end +} diff --git a/src/love/states/weeks-pixel.lua b/src/love/states/weeks-pixel.lua index 76138d60..8ea644fe 100644 --- a/src/love/states/weeks-pixel.lua +++ b/src/love/states/weeks-pixel.lua @@ -86,11 +86,8 @@ return { boyfriendIcon.sizeX = -1 countdownFade = {} - countdown = love.filesystem.load("sprites/countdown.lua")() + countdown = love.filesystem.load("sprites/pixel/countdown.lua")() - -- Temporary - countdown.sizeX = 0.2 - countdown.sizeY = 0.2 end, load = function(self) @@ -518,7 +515,7 @@ return { {0}, "linear", function() - countdown:animate("go") + countdown:animate("date") countdownFade[1] = 1 audio.playSound(sounds.countdown.go) Timer.tween(