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

65 lines
2.2 KiB
Lua

require("common.class")
require("common.filereader")
require("common.gameconfig")
local Version = require("common.version")
local ServicePage = require("titlescreen.service.servicepage")
local ServiceField = require("titlescreen.service.servicefield")
local UpdateField = require("titlescreen.service.fields.update_field")
local function getGameLogValue(prefix, str)
local pattern = prefix .. ":%s*([^\r\n]*)"
return str:match(pattern)
end
---@class VersionInfoPage: ServicePage
local VersionInfoPage = {}
---Create a new VersionInfoPage instance
---
---Inherits from ServicePage
---@param o ServicePage
---@return VersionInfoPage
function VersionInfoPage:new(o)
o = Inherit(self, ServicePage, o)
o.title = o.title or "SYSTEM INFORMATION"
o.footer = o.footer or {
"START BUTTON = UPDATE",
"BACK BUTTON = EXIT"
}
local logStr = ReadGameFile("log_usc-game.exe.txt")
o:addField(ServiceField:new{label = "SKIN ID CODE", value = Version.getLongVersion()})
o:addField(UpdateField:new{label = "USC VERSION", value = getGameLogValue("Version", logStr)})
o:addField(ServiceField:new{label = "USC BRANCH", value = GameConfig["UpdateChannel"]})
o:addField(ServiceField:new{label = "USC GIT COMMIT", value = getGameLogValue("Git commit", logStr)})
o:addField(ServiceField:new{label = "GL VERSION", value = getGameLogValue("OpenGL Version", logStr)})
o:addField(ServiceField:new{label = "GLSL VERSION", value = getGameLogValue("OpenGL Shading Language Version", logStr)})
o:addField(ServiceField:new{label = "GL RENDERER", value = getGameLogValue("OpenGL Renderer", logStr)})
o:addField(ServiceField:new{label = "GL VENDOR", value = getGameLogValue("OpenGL Vendor", logStr)})
o.selectedIndex = 2
o.content[2]:focus()
return o
end
function VersionInfoPage:handleButtonInput(button)
local stop_processing = false
local field = self.content[self.selectedIndex]
if field and field.handleButtonInput then
stop_processing = field:handleButtonInput(button)
end
-- default behaviour
if not stop_processing then
if button == game.BUTTON_BCK then
if self.viewHandler then
self.viewHandler:back()
end
end
end
end
return VersionInfoPage