require("common.class") require("common.filereader") require("common.gameconfig") local Version = require("common.version") local ServicePage = require("titlescreen.pages.service.servicepage") local ServiceField = require("titlescreen.fields.service.servicefield") local UpdateField = require("titlescreen.fields.service.updatefield") 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