ExperimentalGear/scripts/titlescreen/pages/service/versioninfopage.lua

72 lines
2.7 KiB
Lua

require("common.class")
require("common.filereader")
require("common.gameconfig")
local Version = require("common.version")
local ServicePage = require("api.page.servicepage")
local ServiceField = require("api.page.servicefield")
local UpdateField = require("titlescreen.components.updatefield")
local ListField = require("titlescreen.components.listfield")
local function getGameLogValue(prefix, str)
local pattern = prefix .. ":%s*([^\r\n]*)"
return str:match(pattern)
end
---@class VersionInfoPage: ServicePage
local VersionInfoPage = {
__name = "VersionInfoPage",
}
---Create a new VersionInfoPage instance
---@param params? VersionInfoPage # initial parameters
---@return VersionInfoPage
function VersionInfoPage.new(params)
params = params or {}
params.title = params.title or "SYSTEM INFORMATION"
params.footer = params.footer or {
"START BUTTON = UPDATE",
"BACK BUTTON = EXIT"
}
params.selectedIndex = params.selectedIndex or 1
local self = CreateInstance(VersionInfoPage, params, ServicePage)
local logStr = ReadGameFile("log_usc-game.exe.txt") or ReadGameFile("log_usc-game.txt")
local list = ListField.new{selectedIndex = 2, locked = true}
list:addField(ServiceField.new{label = "SKIN ID CODE", value = Version.getLongVersion(), MARGIN = {0, 0, 0, 24}})
list:addField(UpdateField.new{label = "USC VERSION", value = getGameLogValue("Version", logStr)})
list:addField(ServiceField.new{label = "USC BRANCH", value = GameConfig["UpdateChannel"]})
list:addField(ServiceField.new{label = "USC GIT COMMIT", value = getGameLogValue("Git commit", logStr), MARGIN = {0, 0, 0, 24}})
list:addField(ServiceField.new{label = "GL VERSION", value = getGameLogValue("OpenGL Version", logStr)})
list:addField(ServiceField.new{label = "GLSL VERSION", value = getGameLogValue("OpenGL Shading Language Version", logStr)})
list:addField(ServiceField.new{label = "GL RENDERER", value = getGameLogValue("OpenGL Renderer", logStr)})
list:addField(ServiceField.new{label = "GL VENDOR", value = getGameLogValue("OpenGL Vendor", logStr)})
list:refreshFields()
self:addField(list)
self:refreshFields()
return self
end
---@param button integer # options are under the `game` table prefixed with `BUTTON`
function VersionInfoPage:handleButtonInput(button)
local field = self.content[self.selectedIndex]
if field and field.handleButtonInput then
if field:handleButtonInput(button) then
return
end
end
-- default behaviour
if button == game.BUTTON_BCK then
if self.viewHandler then
self.viewHandler:back()
end
end
end
return VersionInfoPage