local state = require("modules.states.playstate") local myMath = require("modules.math") local myTypes = require("modules.types") local files = require("modules.files") local json = require("modules.json") local logging = require("modules.logging") local songs = require("charts.songs") local curSong = songs[1] local curIndex = 1 local curDiffList = songs[1].difficulties local curDiff = songs[1].difficulties[1] local curDiffInd = 1 local curState = nil local stateLoaded = false local pressed = {false,false,false} local bg local logo local gf local freaky = love.audio.newSource("sounds/freakyMenu.ogg", "stream") local function setup() bg = myTypes.Image("images/menuBG.png", 0) bg.ui = false gf = myTypes.Sprite("sprites/gfDanceTitle.png", "sprites/gfDanceTitle.json") gf:PlayAnimation("gfDance", 24, true) gf.position = myTypes.Vector2(340, 60) for index, rect in next, gf.quads.gfDance do rect.resize = myTypes.Vector2(0.7,.7) end logo = myTypes.Sprite("sprites/logoBumpin.png", "sprites/logoBumpin.json") logo:PlayAnimation("logo bumpin", 24, true) logo.position = myTypes.Vector2(-80, 0) freaky:play() end local font = love.graphics.newFont("fonts/Phantomuff.ttf", 40) -- for index, song in next, songs do -- curSong = index -- curDiff = song[1] -- break -- end local gettingKey local settings = json.parse(files.read_file("settings.json")) local keybinds = settings.Keybinds function love.update(dt) if curState and curState.loaded then if stateLoaded then curState.update(dt) else stateLoaded = true -- skipping this update frame curState.finish() end elseif not curState then myTypes.render.cameraTarget = myTypes.Vector2(0,0) myTypes.updateSprites(dt) end end function love.draw() if curState and stateLoaded then curState.draw() else myTypes.drawSprites() love.graphics.print({{0,0,0}, string.format("Song: %s, Difficulty: %s, List: %s", curSong.name, curDiff, logging.dump(curDiffList))}, font, love.graphics.getWidth()/4, love.graphics:getHeight()/2 + 250, 0, 1, 1, 200) love.graphics.print( {{0,0,0}, string.format("Left: %s, Down: %s, Up: %s, Right: %s \nDownscroll: %s", keybinds[1], keybinds[2], keybinds[3], keybinds[4], settings.Downscroll )}) love.graphics.print({{0,0,0}, "Press 1 to change LEFT \nPress 2 to change DOWN \nPress 3 to change UP \nPress 4 to change RIGHT \nPress 0 to toggle DOWNSCROLL"}, 500, 0) end end function run() myTypes.destroyAllSprites() freaky:stop() curState = state(curSong.name, curDiff) curState.quit = function() curState = nil stateLoaded = false myTypes.destroyAllSprites() setup() end curState.restart = function() curState = nil stateLoaded = false myTypes.destroyAllSprites() run() end curState.load() end function love.keypressed(key, un, is) if curState and stateLoaded then curState.keypressed(key, un, is) elseif not curState then if not gettingKey then if key == "return" then run() elseif key == "down" then curIndex, curSong = next(songs, curIndex) if not curSong then curIndex, curSong = next(songs) curDiffList = curSong.difficulties else curDiffList = curSong.difficulties end curDiff = curDiffList[1] elseif key == "right" then if curDiffList[curDiffInd + 1] then curDiff = curDiffList[curDiffInd + 1] curDiffInd = curDiffInd + 1 else curDiff = curDiffList[1] curDiffInd = 1 end elseif tonumber(key) and tonumber(key) < 5 then if key == "0" then settings.Downscroll = not settings.Downscroll files.write_file("settings.json", json.stringify(settings)) else gettingKey = tonumber(key) end end else keybinds[gettingKey] = key gettingKey = nil files.write_file("settings.json", json.stringify(settings)) end end end love.window.setMode(1280, 720, { fullscreen = false , resizable = true}) setup()