ExperimentalGear/scripts/titlescreen/service.lua

118 lines
3.5 KiB
Lua
Raw Normal View History

local Dim = require("common.dimensions")
local Wallpaper = require("components.wallpaper")
2021-12-20 00:39:38 +01:00
local triggerSplashScreen = false
local rootMenu = {
2022-03-12 15:18:41 +01:00
{label = "IDOLS", children = {{label = "GRACEv6"}, {label = "NEARNOAHv6"}, {label = "IDKv6"}}},
2021-12-20 00:39:38 +01:00
{
2022-03-12 15:18:41 +01:00
label = "LASER COLORS",
2021-12-20 00:39:38 +01:00
children = {
{
2022-03-12 15:18:41 +01:00
label = "LEFT LASER",
children = {
2022-03-12 15:18:41 +01:00
{label = "BLUE", color = {0, 128, 255}},
{label = "PINK", color = {255, 0, 255}},
{label = "GREEN", color = {0, 255, 0}},
{label = "YELLOW", color = {255, 255, 0}},
},
},
2021-12-20 00:39:38 +01:00
{
2022-03-12 15:18:41 +01:00
label = "RIGHT LASER",
children = {{label = "BLUE"}, {label = "PINK"}, {label = "GREEN"}, {label = "YELLOW"}},
},
},
2021-12-20 00:39:38 +01:00
},
2022-03-12 15:18:41 +01:00
{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},
2021-12-20 00:39:38 +01:00
}
local menu = rootMenu
2021-12-20 00:39:38 +01:00
local index = 1;
local function render(deltaTime)
Dim.updateResolution()
Wallpaper.render()
Dim.transformToScreenSpace()
2021-12-20 00:39:38 +01:00
gfx.BeginPath();
gfx.FillColor(0, 0, 0, 255);
2021-12-20 00:39:38 +01:00
gfx.Rect(0, 0, 1080, 1920);
gfx.Fill();
gfx.LoadSkinFont("dfmarugoth.ttf")
gfx.FillColor(255, 255, 255, 255);
2021-12-20 00:39:38 +01:00
gfx.TextAlign(gfx.TEXT_ALIGN_CENTER + gfx.TEXT_ALIGN_MIDDLE)
gfx.FontSize(24);
gfx.BeginPath();
2022-03-12 15:18:41 +01:00
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);
2021-12-20 00:39:38 +01:00
gfx.TextAlign(gfx.TEXT_ALIGN_LEFT + gfx.TEXT_ALIGN_MIDDLE)
local yOffset = 256;
2021-12-20 00:39:38 +01:00
for i, menuItem in ipairs(menu) do
2022-03-12 15:18:41 +01:00
if menuItem.type == "back" then
yOffset = yOffset + 28 * 2;
else
yOffset = yOffset + 28;
end
2021-12-20 00:39:38 +01:00
if (i == index) then
if menuItem.color then
2022-03-12 15:18:41 +01:00
gfx.FillColor(menuItem.color[1], menuItem.color[2], menuItem.color[3])
else
gfx.FillColor(0, 255, 0, 255);
end
2021-12-20 00:39:38 +01:00
-- gfx.FillColor(0,128,255,255);
else
gfx.FillColor(255, 255, 255, 255);
2021-12-20 00:39:38 +01:00
end
gfx.BeginPath();
gfx.Text(menuItem.label, 100, yOffset);
2021-12-20 00:39:38 +01:00
end
if (triggerSplashScreen) then
triggerSplashScreen = false;
2022-03-12 15:18:41 +01:00
return {eventType = "switch", toScreen = "splash"}
2021-12-20 00:39:38 +01:00
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
2022-03-12 15:18:41 +01:00
index = 1;
-- If the back button does not exist, add it.
2022-03-12 15:18:41 +01:00
if (menu[#menu].type ~= "back") then
menu[#menu + 1] = {
type = "back",
label = "BACK TO MAIN MENU",
handler = function()
2022-03-12 15:18:41 +01:00
index = 1;
menu = rootMenu
2022-03-12 15:18:41 +01:00
end,
}
end
end
2022-03-12 15:18:41 +01:00
2021-12-20 00:39:38 +01:00
elseif button == game.BUTTON_BTA then
index = index - 1;
if (index == 0) then index = #menu end
2021-12-20 00:39:38 +01:00
elseif button == game.BUTTON_BTB then
index = index + 1;
2022-03-12 15:18:41 +01:00
if (index == #menu + 1) then index = 1 end
2021-12-20 00:39:38 +01:00
end
end
2022-03-12 15:18:41 +01:00
return {render = render, onButtonPressed = onButtonPressed}