local Dim = require("common.dimensions") local Wallpaper = require("components.wallpaper") local triggerSplashScreen = false local rootMenu = { {label = "IDOLS", children = {{label = "GRACEv6"}, {label = "NEARNOAHv6"}, {label = "IDKv6"}}}, { label = "LASER COLORS", children = { { label = "LEFT LASER", children = { {label = "BLUE", color = {0, 128, 255}}, {label = "PINK", color = {255, 0, 255}}, {label = "GREEN", color = {0, 255, 0}}, {label = "YELLOW", color = {255, 255, 0}}, }, }, { label = "RIGHT LASER", children = {{label = "BLUE"}, {label = "PINK"}, {label = "GREEN"}, {label = "YELLOW"}}, }, }, }, {label = "MORE OPTIONS", children = {{label = "TEST"}}}, {label = "OH YOU SUSSY BAKA", children = {{label = "TEST"}}}, {label = "BACK TO TITLE SCREEN", type = "back", handler = function() triggerSplashScreen = true; end}, } local menu = rootMenu local index = 1; local function render(deltaTime) Dim.updateResolution() Wallpaper.render() Dim.transformToScreenSpace() gfx.BeginPath(); gfx.FillColor(0, 0, 0, 255); gfx.Rect(0, 0, 1080, 1920); gfx.Fill(); gfx.LoadSkinFont("dfmarugoth.ttf") gfx.FillColor(255, 255, 255, 255); gfx.TextAlign(gfx.TEXT_ALIGN_CENTER + gfx.TEXT_ALIGN_MIDDLE) gfx.FontSize(24); gfx.BeginPath(); gfx.Text("SERIVCE MENU", 1080 / 2, 128); gfx.Text("BT-A/BT-B = UP/DOWN", 1080 / 2, 1920 - 256 - 28); gfx.Text("START = SELECT", 1080 / 2, 1920 - 256); gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_MIDDLE) local yOffset = 256; for i, menuItem in ipairs(menu) do if menuItem.type == "back" then yOffset = yOffset + 28 * 2; else yOffset = yOffset + 28; end if (i == index) then if menuItem.color then gfx.FillColor(menuItem.color[1], menuItem.color[2], menuItem.color[3]) else gfx.FillColor(0, 255, 0, 255); end -- gfx.FillColor(0,128,255,255); else gfx.FillColor(255, 255, 255, 255); end gfx.BeginPath(); gfx.Text(menuItem.label, 100, yOffset); end if (triggerSplashScreen) then triggerSplashScreen = false; return {eventType = "switch", toScreen = "splash"} end end local onButtonPressed = function(button) if button == game.BUTTON_STA then if (menu[index].handler) then menu[index].handler() elseif menu[index].children ~= nil then menu = menu[index].children index = 1; -- If the back button does not exist, add it. if (menu[#menu].type ~= "back") then menu[#menu + 1] = { type = "back", label = "BACK TO MAIN MENU", handler = function() index = 1; menu = rootMenu end, } end end elseif button == game.BUTTON_BTA then index = index - 1; if (index == 0) then index = #menu end elseif button == game.BUTTON_BTB then index = index + 1; if (index == #menu + 1) then index = 1 end end end return {render = render, onButtonPressed = onButtonPressed}