All the remaining stuff from silly billy is now removed Changed the camera tween time
145 lines
4.4 KiB
Lua
145 lines
4.4 KiB
Lua
local logging = require "modules.logging"
|
|
local files = require "modules.files"
|
|
local json = require "modules.json"
|
|
local defaultSettings = { -- The way its in the JSON
|
|
Downscroll = false,
|
|
Keybinds = {
|
|
"a",
|
|
"b",
|
|
"up",
|
|
"right"
|
|
},
|
|
Offset = 0
|
|
}
|
|
|
|
local currentOption = 1
|
|
|
|
MountedMod = 1 -- main
|
|
|
|
local modFolders = {
|
|
"characters",
|
|
"charts",
|
|
"fonts",
|
|
"images",
|
|
"modules",
|
|
"playableCharValues",
|
|
"resultScreens",
|
|
"songs",
|
|
"sounds",
|
|
"sprites",
|
|
"stages",
|
|
"states",
|
|
"videos",
|
|
"weeks"
|
|
}
|
|
|
|
return function()
|
|
---@type engine.state
|
|
local state = {}
|
|
|
|
local options = {
|
|
"storymode",
|
|
"freeplay",
|
|
"options",
|
|
"credits",
|
|
}
|
|
local optionStates = {
|
|
storymode = "weekstate",
|
|
freeplay = "freeplaystate",
|
|
options = "optionsstate",
|
|
credits = "creditsstate"
|
|
}
|
|
local evilCurrentOption = 1
|
|
local optionSprites = {}
|
|
local moving = false
|
|
|
|
function state.load()
|
|
love.window.setTitle("TaggedEngine: Main Menu")
|
|
|
|
local data = love.filesystem.getSaveDirectory()
|
|
print(data)
|
|
local settings = files.read_file(data.."/Settings.json")
|
|
print(settings)
|
|
|
|
if not settings then
|
|
os.execute("mkdir "..data)
|
|
files.write_file(data.."/Settings.json", json.stringify(defaultSettings))
|
|
print("Written")
|
|
else
|
|
settings = json.parse(settings)
|
|
--Incase the settings are old
|
|
for index, setting in next, defaultSettings do
|
|
if not settings[index] then
|
|
settings[index] = setting
|
|
end
|
|
end
|
|
files.write_file(data.."/Settings.json", json.stringify(settings))
|
|
end
|
|
|
|
if not freaky then
|
|
freaky = love.audio.newSource("sounds/freakyMenu.ogg", "stream")
|
|
freaky:setVolume(0.25)
|
|
freaky:setLooping(true)
|
|
end
|
|
freaky:play()
|
|
|
|
if love.graphics.getWidth() ~= 1280 then
|
|
love.window.setMode(1280, 720)
|
|
end
|
|
|
|
local bg = Image("images/menuBG.png", 0)
|
|
bg.ui = false
|
|
bg.layer = -10
|
|
|
|
for index, option in next, options do
|
|
optionSprites[option] = {index = index}
|
|
optionSprites[option].sprite = Sprite(string.format("sprites/menu/%s.png", option), string.format("sprites/menu/%s.xml", option))
|
|
optionSprites[option].sprite:PlayAnimation(string.format("%s idle", option), 24, true)
|
|
optionSprites[option].sprite.layer = 5
|
|
if not optionSprites[option].sprite.quads[optionSprites[option].sprite.animation][0] then
|
|
optionSprites[option].sprite.starterFrame = 1
|
|
optionSprites[option].sprite.frame = 1
|
|
end
|
|
end
|
|
end
|
|
|
|
function state.keypressed(key)
|
|
if moving then return end
|
|
|
|
if key == "return" then
|
|
state.changeState(optionStates[options[currentOption]])
|
|
elseif key == "down" then
|
|
currentOption = next(options, currentOption) or 1
|
|
elseif key == "up" then
|
|
currentOption = options[currentOption - 1] and currentOption -1 or #options
|
|
elseif key == "9" then
|
|
state.changeState("playstate", "shucks", "hard")
|
|
end
|
|
end
|
|
|
|
function state.draw()
|
|
love.graphics.clear({1,1,1})
|
|
render.drawSprites()
|
|
render.drawUI()
|
|
end
|
|
|
|
function state.update(delta)
|
|
render.updateSprites(delta)
|
|
|
|
evilCurrentOption = Lerp(evilCurrentOption, currentOption, .05)
|
|
|
|
for option, optionSprite in next, optionSprites do
|
|
local sprite = optionSprite.sprite
|
|
|
|
sprite.position = Vector2(0, love.graphics.getHeight() / 5 + (optionSprite.index - evilCurrentOption) * 150)
|
|
|
|
if optionSprite.index == currentOption and optionSprite.sprite.animation ~= string.format("%s selected", option) then
|
|
optionSprites[option].sprite:PlayAnimation(string.format("%s selected", option), 24, true)
|
|
elseif optionSprite.index ~= currentOption and optionSprite.sprite.animation ~= string.format("%s idle", option) then
|
|
optionSprites[option].sprite:PlayAnimation(string.format("%s idle", option), 24, true)
|
|
end
|
|
end
|
|
end
|
|
|
|
return state
|
|
end |