2022-06-29 00:35:52 +02:00
|
|
|
require "common.globals"
|
|
|
|
local Common = require "common.util"
|
2023-08-19 04:48:46 +02:00
|
|
|
local Dim = require "scripts.graphics.dimensions"
|
2022-06-29 00:35:52 +02:00
|
|
|
local Wallpaper = require "components.wallpaper"
|
|
|
|
|
|
|
|
local PageView = require "api.page.pageview"
|
|
|
|
local PageManager = require "api.page.pagemanager"
|
|
|
|
|
|
|
|
local BootPage = require "titlescreen.boot"
|
2022-07-12 01:46:49 +02:00
|
|
|
local CheckUpdatePage = require "titlescreen.boot.checkupdatepage"
|
2022-06-29 00:35:52 +02:00
|
|
|
|
|
|
|
local SplashPage = require "titlescreen.splash"
|
2022-07-12 01:46:49 +02:00
|
|
|
local KShootManiaPage = require "titlescreen.splash.kshootmaniapage"
|
|
|
|
local USCPage = require "titlescreen.splash.uscpage"
|
|
|
|
local TeamExceedPage = require "titlescreen.splash.teamexceedpage"
|
|
|
|
local CreditsPage = require "titlescreen.splash.creditspage"
|
2022-06-29 00:35:52 +02:00
|
|
|
|
|
|
|
local TitlePage = require "titlescreen.title"
|
|
|
|
|
|
|
|
local MainMenuPage = require "titlescreen.mainmenu"
|
|
|
|
|
|
|
|
local ServiceMenuPage = require "titlescreen.service"
|
2022-07-12 01:46:49 +02:00
|
|
|
local InputCheckPage = require "titlescreen.service.inputcheckpage"
|
|
|
|
local ScreenCheckPage = require "titlescreen.service.screencheckpage"
|
|
|
|
local ColorCheckPage = require "titlescreen.service.colorcheckpage"
|
|
|
|
local VersionInfoPage = require "titlescreen.service.versioninfopage"
|
2021-07-25 20:10:06 +02:00
|
|
|
|
2022-06-22 02:32:27 +02:00
|
|
|
local pageView = PageView.new()
|
|
|
|
|
2022-06-29 00:35:52 +02:00
|
|
|
local pageManager = PageManager.get()
|
|
|
|
|
|
|
|
pageManager:storePage(CheckUpdatePage.new())
|
|
|
|
pageManager:storePage(BootPage.new())
|
|
|
|
|
|
|
|
pageManager:storePage(KShootManiaPage.new())
|
|
|
|
pageManager:storePage(USCPage.new())
|
|
|
|
pageManager:storePage(TeamExceedPage.new())
|
|
|
|
pageManager:storePage(CreditsPage.new())
|
|
|
|
pageManager:storePage(SplashPage.new())
|
|
|
|
|
|
|
|
pageManager:storePage(TitlePage.new())
|
|
|
|
|
|
|
|
pageManager:storePage(MainMenuPage.new())
|
|
|
|
|
|
|
|
pageManager:storePage(InputCheckPage.new())
|
|
|
|
pageManager:storePage(ScreenCheckPage.new())
|
|
|
|
pageManager:storePage(ColorCheckPage.new())
|
|
|
|
pageManager:storePage(VersionInfoPage.new())
|
|
|
|
pageManager:storePage(ServiceMenuPage.new())
|
|
|
|
|
2022-06-22 02:32:27 +02:00
|
|
|
pageView.onNavigated = function(self, back)
|
|
|
|
game.Log(tostring(self) .. " navigated " .. (back and "back " or "") .. "to: " .. tostring(pageView:get()),
|
|
|
|
game.LOGGER_INFO
|
|
|
|
)
|
|
|
|
end
|
|
|
|
|
|
|
|
pageView.onEmptied = function(self)
|
|
|
|
game.Log(tostring(self) .. " empty!", game.LOGGER_WARNING)
|
|
|
|
end
|
|
|
|
|
2022-06-29 00:35:52 +02:00
|
|
|
local pages = PageManager.get().pages
|
|
|
|
pageManager:getPage(BootPage).onInvalidation = function(self, toVersionPage)
|
|
|
|
if toVersionPage then
|
|
|
|
pageView:replace(pageManager:getPage(ServiceMenuPage))
|
|
|
|
pageView:get():init()
|
|
|
|
pageView:navigate(pageManager:getPage(VersionInfoPage))
|
|
|
|
pageView:get():init()
|
|
|
|
else
|
|
|
|
pageView:replace(pageManager:getPage(SplashPage))
|
|
|
|
pageView:get():init()
|
|
|
|
end
|
2022-06-22 02:32:27 +02:00
|
|
|
end
|
2022-05-04 03:34:37 +02:00
|
|
|
|
2022-06-29 00:35:52 +02:00
|
|
|
pageManager:getPage(SplashPage).onInvalidation = function(self)
|
|
|
|
pageView:replace(pageManager:getPage(TitlePage))
|
|
|
|
pageView:get():init()
|
2022-05-04 03:34:37 +02:00
|
|
|
end
|
|
|
|
|
2022-06-29 00:35:52 +02:00
|
|
|
pageManager:getPage(TitlePage).onInvalidation = function(self, toServiceMenu)
|
|
|
|
if toServiceMenu then
|
|
|
|
pageView:replace(pageManager:getPage(ServiceMenuPage))
|
|
|
|
pageView:get():init()
|
|
|
|
else
|
|
|
|
pageView:replace(pageManager:getPage(MainMenuPage))
|
|
|
|
pageView:get():init()
|
|
|
|
end
|
2022-05-04 03:34:37 +02:00
|
|
|
end
|
2021-07-25 20:10:06 +02:00
|
|
|
|
2022-06-29 00:35:52 +02:00
|
|
|
pageManager:getPage(ServiceMenuPage).onInvalidation = function(self)
|
|
|
|
pageView:replace(pageManager:getPage(SplashPage))
|
|
|
|
pageView:get():init()
|
2022-06-22 02:32:27 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
--local currentScreen = game.GetSkinSetting("animations_skipIntro") and screens.title or screens.boot -- show boot screen if skipIntro is not set
|
2022-06-29 00:35:52 +02:00
|
|
|
pageView:replace(pages[BootPage.__name])
|
|
|
|
pageView:get():init()
|
2022-06-22 02:32:27 +02:00
|
|
|
|
2022-03-12 15:17:20 +01:00
|
|
|
local function deltaKnob(delta)
|
2022-06-22 02:32:27 +02:00
|
|
|
-- can someone tell me what the hell does this do? - Hersi
|
2021-08-15 23:07:40 +02:00
|
|
|
if math.abs(delta) > 1.5 * math.pi then
|
2022-03-04 04:06:19 +01:00
|
|
|
return delta + 2 * math.pi * Common.sign(delta) * -1
|
2021-08-15 23:07:40 +02:00
|
|
|
end
|
|
|
|
return delta
|
2021-07-25 20:10:06 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
local lastKnobs = nil
|
2022-05-04 03:34:37 +02:00
|
|
|
local knobThreshold = (2 * math.pi) / 360
|
2022-04-05 23:55:50 +02:00
|
|
|
local function handleKnobs()
|
2021-08-15 23:07:40 +02:00
|
|
|
if lastKnobs == nil then
|
2022-05-04 03:34:37 +02:00
|
|
|
lastKnobs = {game.GetKnob(game.KNOB_LEFT), game.GetKnob(game.KNOB_RIGHT)}
|
2021-08-15 23:07:40 +02:00
|
|
|
else
|
2022-05-04 03:34:37 +02:00
|
|
|
local newKnobs = {game.GetKnob(game.KNOB_LEFT), game.GetKnob(game.KNOB_RIGHT)}
|
|
|
|
local knobProgress = {deltaKnob(lastKnobs[1] - newKnobs[1]), deltaKnob(lastKnobs[2] - newKnobs[2])}
|
2021-08-15 23:07:40 +02:00
|
|
|
lastKnobs = newKnobs
|
|
|
|
|
2022-05-04 03:34:37 +02:00
|
|
|
if math.abs(knobProgress[1]) > knobThreshold then
|
2022-06-22 02:32:27 +02:00
|
|
|
if pageView:get() then
|
2022-06-22 02:58:47 +02:00
|
|
|
pageView:get():handleKnobInput(game.KNOB_LEFT, knobProgress[1])
|
2022-06-22 02:32:27 +02:00
|
|
|
end
|
2021-08-15 23:07:40 +02:00
|
|
|
end
|
2022-03-12 15:17:20 +01:00
|
|
|
|
2022-05-04 03:34:37 +02:00
|
|
|
if math.abs(knobProgress[2]) > knobThreshold then
|
2022-06-22 02:32:27 +02:00
|
|
|
if pageView:get() then
|
|
|
|
pageView:get():handleKnobInput(game.KNOB_RIGHT, knobProgress[2])
|
|
|
|
end
|
2022-04-03 01:35:41 +02:00
|
|
|
end
|
2022-03-12 15:17:20 +01:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
function render(deltaTime)
|
2022-04-05 23:55:50 +02:00
|
|
|
handleKnobs()
|
2022-03-12 15:17:20 +01:00
|
|
|
|
2022-05-04 03:34:37 +02:00
|
|
|
Dim.updateResolution()
|
|
|
|
|
|
|
|
Wallpaper.render()
|
|
|
|
|
|
|
|
Dim.transformToScreenSpace()
|
|
|
|
|
2022-06-22 02:32:27 +02:00
|
|
|
pageView:render(deltaTime)
|
2022-03-12 15:17:20 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
function mouse_pressed(button)
|
2022-05-04 03:34:37 +02:00
|
|
|
local mouseX, mouseY = game.GetMousePos()
|
2022-06-22 02:32:27 +02:00
|
|
|
if pageView:get() then
|
|
|
|
pageView:get():handleMouseInput(mouseX, mouseY, button)
|
|
|
|
end
|
2022-05-04 03:34:37 +02:00
|
|
|
return 0 --THIS '0' IS VERY IMPORTANT, IT WILL CRASH VERY HARD WITHOUT THIS
|
2022-03-12 15:17:20 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
function button_pressed(button)
|
2022-06-22 02:32:27 +02:00
|
|
|
if pageView:get() then
|
|
|
|
pageView:get():handleButtonInput(button)
|
|
|
|
end
|
2022-03-12 15:17:20 +01:00
|
|
|
end
|