140 lines
4.5 KiB
Lua
140 lines
4.5 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
|
|
|
|
local settings = {}
|
|
|
|
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))
|
|
|
|
if settings.user then
|
|
print(logging.dump(settings))
|
|
gamejolt.authUser(settings.user.name, settings.user.key)
|
|
gamejolt.giveTrophy(278494)
|
|
end
|
|
end
|
|
|
|
return function()
|
|
---@type engine.state
|
|
local state = {}
|
|
|
|
local options = {
|
|
"storymode",
|
|
"freeplay",
|
|
"options",
|
|
"credits",
|
|
"login"
|
|
}
|
|
local optionStates = {
|
|
storymode = "weekstate",
|
|
freeplay = "freeplaystate",
|
|
options = "optionsstate",
|
|
credits = "creditsstate",
|
|
login = "loginstate"
|
|
}
|
|
local evilCurrentOption = -10
|
|
local optionSprites = {}
|
|
local moving = false
|
|
|
|
function state.load()
|
|
love.window.setTitle("TaggedEngine: Main Menu")
|
|
|
|
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
|
|
optionSprites[option].sprite.anchor = Vector2(0.5, 0.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("secretcodestate") --since we don't have shucks anymore... why not have a little fun, yeah?
|
|
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(640, love.graphics.getHeight() / 2 + (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
|