118 lines
3.5 KiB
Lua
118 lines
3.5 KiB
Lua
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}
|