ExperimentalGear/scripts/titlescreen/service.lua

140 lines
3.7 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 = GO 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
}