ExperimentalGear/scripts/titlescreen/service.lua

169 lines
4.3 KiB
Lua
Raw Normal View History

local Dim = require("common.dimensions")
local Wallpaper = require("components.wallpaper")
local PageView = require("components.pager.pageview")
2022-04-05 17:31:02 +02:00
local MainMenuPage = require("titlescreen.pages.service.mainmenupage")
--[[ WIP: REIMPLEMENTATION
2021-12-20 00:39:38 +01:00
local triggerSplashScreen = false
local updateUrl, updateVersion = game.UpdateAvailable()
local updateTimer = 0
local updateFlickerTime = 0.5 --seconds
---Draw special slider field
---
--- Tip: You can specify a background using the gfx.FillColor or gfx.FillPaint
--- functions before calling this function
---@param x number
---@param y number
---@param w number
---@param h number
---@param val number
---@param max? number optional maximum value (default 1.0)
---@param min? number optional minimum value (default 0.0)
local function drawSlider(x, y, w, h, val, max, min)
max = max or 1.0
min = min or 0.0
-- draw background
gfx.BeginPath()
gfx.Rect(x, y, w, h)
gfx.Fill()
-- draw frame
gfx.BeginPath()
gfx.Rect(x, y, w, h)
gfx.StrokeColor(255, 255, 255)
gfx.StrokeWidth(2)
gfx.Stroke()
if max == min then
return -- would be an error case
end
-- draw indicator
local pos = x + (val - min) * ((x + w - x) / (max - min)) --lerp
gfx.BeginPath()
gfx.Rect(pos, y, 4, h)
gfx.FillColor(0, 255, 0)
gfx.Fill()
end
---Draw special text field
---@param x number
---@param y number
---@param text string
---@param color? table optional {R, G, B} integer array
---@param fontSize? integer optional font size
local function drawText(x, y, text, color, fontSize)
gfx.BeginPath()
if color then
gfx.FillColor(color[1], color[2], color[3])
end
if fontSize then
gfx.FontSize(fontSize)
end
gfx.Text(text, x, y)
end
2021-12-20 00:39:38 +01:00
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
},
{label = "BACK TO TITLE SCREEN", type = "back", handler = function() triggerSplashScreen = true end},
2021-12-20 00:39:38 +01:00
}
local index = 1
]]
local currentpage = MainMenuPage:new()
local pageview = PageView:new(currentpage)
local function reset()
pageview = PageView:new(currentpage)
end
2021-12-20 00:39:38 +01:00
local function render(deltaTime)
Dim.updateResolution()
Wallpaper.render()
Dim.transformToScreenSpace()
pageview:render(deltaTime)
--[[ WIP: REIMPLEMENTATION
gfx.BeginPath()
gfx.FillColor(0, 0, 0, 255)
gfx.Rect(0, 0, 1080, 1920)
gfx.Fill()
2021-12-20 00:39:38 +01:00
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)
2021-12-20 00:39:38 +01:00
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)
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
-- gfx.FillColor(0,128,255,255)
2021-12-20 00:39:38 +01:00
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 not pageview.pageStack[1] then
2022-03-12 15:18:41 +01:00
return {eventType = "switch", toScreen = "splash"}
2021-12-20 00:39:38 +01:00
end
end
local function onButtonPressed(button)
pageview.pageStack[1]:handleButtonInput(button)
2021-12-20 00:39:38 +01:00
end
return {reset = reset, render = render, onButtonPressed = onButtonPressed}