From e68fcd5bfe0b3d51896e4bf7455c23c93b0ce7b6 Mon Sep 17 00:00:00 2001 From: Hersi Date: Fri, 6 May 2022 01:02:30 +0200 Subject: [PATCH] code cleanup instead of implementing __tostring, set __name use variable name 'params' instead of 'o' use 'self' for indicating instance instead of 'this' move private members under self instead of params set doc type of 'params' as the object created (helps IDE autocomplete) --- scripts/api/audiosample.lua | 18 +++--- scripts/api/page/containerfield.lua | 16 ++--- scripts/api/page/field.lua | 20 +++---- scripts/api/page/linkfield.lua | 12 ++-- scripts/api/page/page.lua | 4 +- scripts/api/page/pageview.lua | 4 +- scripts/common/class.lua | 14 ++--- scripts/titlescreen/boot.lua | 15 ++--- .../components/checkupdatefield.lua | 23 ++++---- .../components/colorgradientfield.lua | 12 ++-- .../titlescreen/components/dialogfield.lua | 20 +++---- .../components/inputbuttonfield.lua | 12 ++-- .../titlescreen/components/inputknobfield.lua | 12 ++-- scripts/titlescreen/components/listfield.lua | 24 ++++---- .../titlescreen/components/selftestfield.lua | 21 ++++--- .../titlescreen/components/servicefield.lua | 28 ++++----- .../components/servicelinkfield.lua | 10 ++-- .../titlescreen/components/updatefield.lua | 14 +++-- scripts/titlescreen/pages/boot/bootpage.lua | 58 +++++++++---------- .../pages/boot/checkupdatepage.lua | 34 +++++------ .../pages/modeselect/modeselectpage.lua | 6 +- .../pages/service/colorcheckpage.lua | 20 +++---- .../pages/service/inputcheckpage.lua | 20 +++---- .../pages/service/mainmenupage.lua | 18 +++--- .../pages/service/screencheckpage.lua | 14 ++--- .../titlescreen/pages/service/servicepage.lua | 16 ++--- .../pages/service/versioninfopage.lua | 22 +++---- scripts/titlescreen/screen.lua | 14 ++--- 28 files changed, 253 insertions(+), 248 deletions(-) diff --git a/scripts/api/audiosample.lua b/scripts/api/audiosample.lua index d072f0e..6e6fb0e 100644 --- a/scripts/api/audiosample.lua +++ b/scripts/api/audiosample.lua @@ -8,19 +8,21 @@ local exclusiveAudioSample = nil ---@field exclusive boolean ---@field loop boolean ---@field playing boolean -local AudioSample = {} +local AudioSample = { + __name = "AudioSample" +} ---Create new AudioSample instance ----@param o AudioSample +---@param params AudioSample ---@return AudioSample -function AudioSample.new(o) - assert(o.path, "AudioSample.new() did not receive path to audio sample") - o.exclusive = o.exclusive or false - o.loop = o.loop or false +function AudioSample.new(params) + assert(params.path, "AudioSample.new() did not receive path to audio sample") + params.exclusive = params.exclusive or false + params.loop = params.loop or false - game.LoadSkinSample(o.path) + game.LoadSkinSample(params.path) - return CreateInstance(AudioSample, o) + return CreateInstance(AudioSample, params) end function AudioSample:play() diff --git a/scripts/api/page/containerfield.lua b/scripts/api/page/containerfield.lua index 1f7c3f8..24a3089 100644 --- a/scripts/api/page/containerfield.lua +++ b/scripts/api/page/containerfield.lua @@ -4,24 +4,24 @@ local Field = require("api.page.field") ---@class ContainerField: Field ---@field content Field[] local ContainerField = { - __tostring = function() return "ContainerField" end, + __name = "ContainerField" } ---Create a new ContainerField instance ----@param o? table # initial parameters +---@param params? ContainerField # initial parameters ---@return ContainerField -function ContainerField.new(o) - o = o or {} +function ContainerField.new(params) + params = params or {} --set instance members - o.content = o.content or {} + params.content = params.content or {} - local this = CreateInstance(ContainerField, o, Field) + local self = CreateInstance(ContainerField, params, Field) - this:refreshFields() + self:refreshFields() - return this + return self end ---Add content to container diff --git a/scripts/api/page/field.lua b/scripts/api/page/field.lua index 8e5ab0d..cd7a573 100644 --- a/scripts/api/page/field.lua +++ b/scripts/api/page/field.lua @@ -7,24 +7,24 @@ require("common.class") ---@field aabbW number ---@field aabbH number local Field = { - __tostring = function() return "Field" end, + __name = "Field" } ---Create a new Field instance ----@param o? table # initial parameters +---@param params? Field # initial parameters ---@return Field -function Field.new(o) - o = o or {} +function Field.new(params) + params = params or {} --set instance members - o.parent = o.parent or nil - o.posX = o.posX or 0 - o.posY = o.posY or 0 - o.aabbW = o.aabbW or 0 - o.aabbH = o.aabbH or 0 + params.parent = params.parent or nil + params.posX = params.posX or 0 + params.posY = params.posY or 0 + params.aabbW = params.aabbW or 0 + params.aabbH = params.aabbH or 0 - return CreateInstance(Field, o) + return CreateInstance(Field, params) end ---Get the containing top-level parent page diff --git a/scripts/api/page/linkfield.lua b/scripts/api/page/linkfield.lua index 580f99c..8f2fe8b 100644 --- a/scripts/api/page/linkfield.lua +++ b/scripts/api/page/linkfield.lua @@ -4,18 +4,18 @@ local Field = require("api.page.field") ---@class LinkField: Field ---@field link Page local LinkField = { - __tostring = function() return "LinkField" end + __name = "LinkField" } ---Create a new LinkField instance ----@param o? table # initial parameters +---@param params? LinkField # initial parameters ---@return LinkField -function LinkField.new(o) - o = o or {} +function LinkField.new(params) + params = params or {} - o.link = o.link or nil + params.link = params.link or nil - return CreateInstance(LinkField, o, Field) + return CreateInstance(LinkField, params, Field) end ---@param button integer # options are under the `game` table prefixed with `BUTTON` diff --git a/scripts/api/page/page.lua b/scripts/api/page/page.lua index b0c5348..c107674 100644 --- a/scripts/api/page/page.lua +++ b/scripts/api/page/page.lua @@ -5,11 +5,11 @@ require("common.class") ---@field content Field[] ---@field viewHandler nil|PageView local Page = { - __tostring = function() return "Page" end, + __name = "Page", } ---Create a new Page instance ----@param params? table # initial parameters +---@param params? Page # initial parameters ---@return Page function Page.new(params) params = params or {} diff --git a/scripts/api/page/pageview.lua b/scripts/api/page/pageview.lua index d1c3023..c11d830 100644 --- a/scripts/api/page/pageview.lua +++ b/scripts/api/page/pageview.lua @@ -3,7 +3,7 @@ require("common.class") ---@class PageView ---@field pageStack Page[] local PageView = { - __tostring = function() return "PageView" end + __name = "PageView" } local function pushStack(t, o) @@ -17,7 +17,7 @@ end ---Create a new PageView instance ---@return PageView function PageView.new() - local self = CreateInstance(PageView, {}) + local self = CreateInstance(PageView) self.pageStack = {} return self end diff --git a/scripts/common/class.lua b/scripts/common/class.lua index b3ed3ab..a5a10ff 100644 --- a/scripts/common/class.lua +++ b/scripts/common/class.lua @@ -12,11 +12,11 @@ end ---Create polimorphic class ---@generic BaseT, T ---@param cls T # class metatable ----@param o? table # initial parameters +---@param params? table # initial parameters ---@param ... BaseT # base class metatables (if any) ---@return T # class instance -function CreateInstance(cls, o, ...) - o = o or {} +function CreateInstance(cls, params, ...) + params = params or {} local nargs = select("#", ...) local vargs = { select(1, ...) } cls.__index = cls @@ -24,14 +24,14 @@ function CreateInstance(cls, o, ...) -- single inheritance local base = vargs[1] setmetatable(cls, {__index = base}) - o = base.new(o) + params = base.new(params) elseif nargs > 1 then -- multiple inheritance (note: slow(er) member lookup) setmetatable(cls, {__index = function(t, k) return search(k, vargs) end}) for _, base in ipairs(vargs) do - o = base.new(o) + params = base.new(params) end end - setmetatable(o, cls) - return o + setmetatable(params, cls) + return params end diff --git a/scripts/titlescreen/boot.lua b/scripts/titlescreen/boot.lua index 48bc694..7988aae 100644 --- a/scripts/titlescreen/boot.lua +++ b/scripts/titlescreen/boot.lua @@ -8,26 +8,27 @@ local SplashScreen = require "titlescreen.splash" ---@class BootScreen : Screen ---@field bootpage BootPage local BootScreen = { - __tostring = function() return "BootScreen" end + __name = "BootScreen" } ---Create a new BootScreen instance ----@param o? BootScreen +---@param params? BootScreen ---@return BootScreen -function BootScreen.new(o) - o = o or {} +function BootScreen.new(params) + params = params or {} - o.bootpage = o.bootpage or BootPage.new() + params.bootpage = params.bootpage or BootPage.new() - return CreateInstance(BootScreen, o, Screen) + return CreateInstance(BootScreen, params, Screen) end function BootScreen:init() + Screen.init(self) self.pageview:replace(self.bootpage) end function BootScreen:deactivate() - self.onDeactivation({reason = "deactivation", hint = tostring(SplashScreen)}) + self.onDeactivation({reason = "deactivation", hint = SplashScreen.__name}) end return BootScreen \ No newline at end of file diff --git a/scripts/titlescreen/components/checkupdatefield.lua b/scripts/titlescreen/components/checkupdatefield.lua index 3c7ab07..4aeb4a7 100644 --- a/scripts/titlescreen/components/checkupdatefield.lua +++ b/scripts/titlescreen/components/checkupdatefield.lua @@ -6,27 +6,28 @@ local ServiceField = require("titlescreen.components.servicefield") ---@field onUpdateAvailable nil|fun(url: string, version: string) ---@field _timer number local CheckUpdateField = { - __tostring = function() return "CheckUpdateField" end, + __name = "CheckUpdateField", PROGRESS_FREQ = 3, -- seconds CHECK_UPDATE_TIMEOUT = 5, -- seconds } ---Create a new CheckUpdateField instance ----@param o? table # initial parameters +---@param params? CheckUpdateField # initial parameters ---@return CheckUpdateField -function CheckUpdateField.new(o) - o = o or {} +function CheckUpdateField.new(params) + params = params or {} - o._timer = o._timer or 0 - o.onUpdateAvailable = o.onUpdateAvailable or nil + params.onUpdateAvailable = params.onUpdateAvailable or nil - local this = CreateInstance(CheckUpdateField, o, ServiceField) + local self = CreateInstance(CheckUpdateField, params, ServiceField) - this._url = nil - this._version = nil - this._onUpdateAvailableFired = false + self._timer = 0 - return this + self._url = nil + self._version = nil + self._onUpdateAvailableFired = false + + return self end function CheckUpdateField:drawLabel(deltaTime) diff --git a/scripts/titlescreen/components/colorgradientfield.lua b/scripts/titlescreen/components/colorgradientfield.lua index da8ad79..cfbad7d 100644 --- a/scripts/titlescreen/components/colorgradientfield.lua +++ b/scripts/titlescreen/components/colorgradientfield.lua @@ -4,21 +4,21 @@ local ServiceField = require("titlescreen.components.servicefield") ---@class ColorGradientField: ServiceField local ColorGradientField = { - __tostring = function() return "ColorGradientField" end, + __name = "ColorGradientField", GRADIENT_X_OFFSET = 128, GRADIENT_WIDTH = 576, GRADIENT_STEPS = 32 } ---Create a new ColorGradientField instance ----@param o? table # initial parameters +---@param params? ColorGradientField # initial parameters ---@return ColorGradientField -function ColorGradientField.new(o) - o = o or {} +function ColorGradientField.new(params) + params = params or {} - o.value = o.value or {0, 0, 0, 255} + params.value = params.value or {0, 0, 0, 255} - return CreateInstance(ColorGradientField, o, ServiceField) + return CreateInstance(ColorGradientField, params, ServiceField) end ---@param obj? any # message object for the field diff --git a/scripts/titlescreen/components/dialogfield.lua b/scripts/titlescreen/components/dialogfield.lua index f5d0246..00ad01d 100644 --- a/scripts/titlescreen/components/dialogfield.lua +++ b/scripts/titlescreen/components/dialogfield.lua @@ -5,7 +5,7 @@ local ContainerField = require("api.page.containerfield") ---@field _symbolMargin number ---@field _symbolSize number local DialogField = { - __tostring = function() return "ContainerField" end, + __name = "ContainerField", BGCOLOR = {0, 0, 0, 255}, --{r, g, b, a} DEFAULT_WIDTH = 400, DEFAULT_HEIGHT = 200, @@ -35,20 +35,20 @@ local DialogField = { ---Create a new DialogField instance --- ---Inherits from ContainerField ----@param o ContainerField +---@param params? DialogField # initial parameters ---@return DialogField -function DialogField.new(o) - o = o or {} +function DialogField.new(params) + params = params or {} - o.aabbW = o.aabbW or DialogField.DEFAULT_WIDTH - o.aabbH = o.aabbH or DialogField.DEFAULT_HEIGHT + params.aabbW = params.aabbW or DialogField.DEFAULT_WIDTH + params.aabbH = params.aabbH or DialogField.DEFAULT_HEIGHT - local this = CreateInstance(DialogField, o, ContainerField) + local self = CreateInstance(DialogField, params, ContainerField) - this._symbolMargin = 8 - this._symbolSize = 48 + self._symbolMargin = 8 + self._symbolSize = 48 - return this + return self end ---Draw the dialog symbol diff --git a/scripts/titlescreen/components/inputbuttonfield.lua b/scripts/titlescreen/components/inputbuttonfield.lua index 8435389..067e300 100644 --- a/scripts/titlescreen/components/inputbuttonfield.lua +++ b/scripts/titlescreen/components/inputbuttonfield.lua @@ -4,18 +4,18 @@ local ServiceField = require("titlescreen.components.servicefield") ---@class InputButtonField: ServiceField ---@field button integer local InputButtonField = { - __tostring = function() return "InputButtonField" end, + __name = "InputButtonField" } ---Create a new InputButtonField instance ----@param o? table # initial parameters +---@param params? InputButtonField # initial parameters ---@return InputButtonField -function InputButtonField.new(o) - o = o or {} +function InputButtonField.new(params) + params = params or {} - o.button = o.button or nil + params.button = params.button or nil - return CreateInstance(InputButtonField, o, ServiceField) + return CreateInstance(InputButtonField, params, ServiceField) end ---@param obj? any # message object for the field diff --git a/scripts/titlescreen/components/inputknobfield.lua b/scripts/titlescreen/components/inputknobfield.lua index b2fb8af..e6744b8 100644 --- a/scripts/titlescreen/components/inputknobfield.lua +++ b/scripts/titlescreen/components/inputknobfield.lua @@ -5,7 +5,7 @@ local ServiceField = require("titlescreen.components.servicefield") ---@class InputKnobField: ServiceField ---@field knob integer local InputKnobField = { - __tostring = function() return "InputKnobField" end, + __name = "InputKnobField", SLIDER_SIZE = {200, 16}, --{w, h} SLIDER_BGCOLOR = {255, 0, 0, 255}, SLIDER_FRAME_COLOR = ServiceField.FONT_COLOR, @@ -16,14 +16,14 @@ local InputKnobField = { } ---Create a new InputKnobField instance ----@param o? table # initial parameters +---@param params? InputKnobField # initial parameters ---@return InputKnobField -function InputKnobField.new(o) - o = o or {} +function InputKnobField.new(params) + params = params or {} - o.knob = o.knob or nil + params.knob = params.knob or nil - return CreateInstance(InputKnobField, o, ServiceField) + return CreateInstance(InputKnobField, params, ServiceField) end ---@param obj? any # message object for the field diff --git a/scripts/titlescreen/components/listfield.lua b/scripts/titlescreen/components/listfield.lua index 05a7e44..7a16108 100644 --- a/scripts/titlescreen/components/listfield.lua +++ b/scripts/titlescreen/components/listfield.lua @@ -7,29 +7,29 @@ local ServiceField = require("titlescreen.components.servicefield") ---@field locked boolean ---@field PADDING number[] local ListField = { - __tostring = function() return "ListField" end, + __name = "ListField", MARGIN = {0, 0, 0, 0}, --{left, top, right, bottom} PADDING = {0, 0, 0, 0}, --{left, top, right, bottom} } ---Create a new ListField instance ----@param o? table # initial parameters +---@param params? ListField # initial parameters ---@return ListField -function ListField.new(o) - o = o or {} +function ListField.new(params) + params = params or {} --set instance members - o.selectedIndex = o.selectedIndex or 1 - o.locked = o.locked or false + params.selectedIndex = params.selectedIndex or 1 + params.locked = params.locked or false - local this = CreateInstance(ListField, o, ContainerField, ServiceField) + local self = CreateInstance(ListField, params, ContainerField, ServiceField) - local minW = this.MARGIN[1] + this.PADDING[1] + this.PADDING[3] + this.MARGIN[3] - local minH = this.MARGIN[2] + this.PADDING[2] + this.PADDING[4] + this.MARGIN[4] - this.aabbW = math.max(this.aabbW, minW) - this.aabbH = math.max(this.aabbH, minH) + local minW = self.MARGIN[1] + self.PADDING[1] + self.PADDING[3] + self.MARGIN[3] + local minH = self.MARGIN[2] + self.PADDING[2] + self.PADDING[4] + self.MARGIN[4] + self.aabbW = math.max(self.aabbW, minW) + self.aabbH = math.max(self.aabbH, minH) - return this + return self end ---@param obj? any # message object for the field diff --git a/scripts/titlescreen/components/selftestfield.lua b/scripts/titlescreen/components/selftestfield.lua index 5ec5100..e9ffc0a 100644 --- a/scripts/titlescreen/components/selftestfield.lua +++ b/scripts/titlescreen/components/selftestfield.lua @@ -23,7 +23,7 @@ end ---@field _thread thread ---@field _timer number local SelfTestField = { - __tostring = function () return "SelfTestField" end, + __name = "SelfTestField", COLOR_INPROGRESS = {255, 255, 255, 255}, COLOR_OK = {0, 255, 0, 255}, COLOR_PASS = {255, 255, 0, 255}, @@ -32,20 +32,23 @@ local SelfTestField = { } ---Create a new SelfTestField instance ----@param o? table +---@param params? SelfTestField ---@return SelfTestField -function SelfTestField.new(o) - o = o or {} +function SelfTestField.new(params) + params = params or {} - o.status = o.status or SelfTestStatusEnum.IDLE - o._timer = 0 - o._thread = nil + params.status = params.status or SelfTestStatusEnum.IDLE - assert((not o.onStatusChange) or (o.checkTask and o.onStatusChange), + assert((not params.onStatusChange) or (params.checkTask and params.onStatusChange), "Failed to construct SelfTestField, checkTask is mandatory when onStatusChange is defined!\n" .. debug.traceback() ) - return CreateInstance(SelfTestField, o, ServiceField) + local self = CreateInstance(SelfTestField, params, ServiceField) + + self._timer = 0 + self._thread = nil + + return self end function SelfTestField:_closeThread() diff --git a/scripts/titlescreen/components/servicefield.lua b/scripts/titlescreen/components/servicefield.lua index 3c4dc9c..1bbea07 100644 --- a/scripts/titlescreen/components/servicefield.lua +++ b/scripts/titlescreen/components/servicefield.lua @@ -22,7 +22,7 @@ ServiceFieldState = { ---@field MARGIN number[] # {left, top, right, bottom} ---@field VALUE_OFFSETX number local ServiceField = { - __tostring = function() return "ServiceField" end, + __name = "ServiceField", FONT_SIZE = 24, FONT_FACE = "dfmarugoth.ttf", FONT_COLOR = {255, 255, 255, 255}, @@ -33,29 +33,29 @@ local ServiceField = { } ---Create a new ServiceField instance ----@param o? table # initial parameters +---@param params? ServiceField # initial parameters ---@return ServiceField -function ServiceField.new(o) - o = o or {} +function ServiceField.new(params) + params = params or {} local h = ServiceField.FONT_SIZE + ServiceField.MARGIN[2] + ServiceField.MARGIN[4] - o.aabbH = o.aabbH or h - o.aabbW = o.aabbW or Dim.design.width --:shrug: + params.aabbH = params.aabbH or h + params.aabbW = params.aabbW or Dim.design.width --:shrug: - o.label = o.label or "" - o.value = o.value or nil - o.footer = o.footer or nil + params.label = params.label or "" + params.value = params.value or nil + params.footer = params.footer or nil - o._state = ServiceFieldState.INACTIVE + local self = CreateInstance(ServiceField, params, Field) - local this = CreateInstance(ServiceField, o, Field) + self._state = ServiceFieldState.INACTIVE - if this.aabbH < h then - this.aabbH = h + if self.aabbH < h then + self.aabbH = h end - return this + return self end ---@param obj? any # message object for the field diff --git a/scripts/titlescreen/components/servicelinkfield.lua b/scripts/titlescreen/components/servicelinkfield.lua index a5cf732..b3a2a10 100644 --- a/scripts/titlescreen/components/servicelinkfield.lua +++ b/scripts/titlescreen/components/servicelinkfield.lua @@ -4,16 +4,16 @@ local ServiceField = require("titlescreen.components.servicefield") ---@class ServiceLinkField: LinkField, ServiceField local ServiceLinkField = { - __tostring = function() return "ServiceLinkField" end, + __name = "ServiceLinkField", } ---Create a new ServiceLinkField instance ----@param o? table # initial parameters +---@param params? ServiceLinkField # initial parameters ---@return ServiceLinkField -function ServiceLinkField.new(o) - o = o or {} +function ServiceLinkField.new(params) + params = params or {} - return CreateInstance(ServiceLinkField, o, ServiceField, LinkField) + return CreateInstance(ServiceLinkField, params, ServiceField, LinkField) end ---@param deltaTime number # frametime in seconds diff --git a/scripts/titlescreen/components/updatefield.lua b/scripts/titlescreen/components/updatefield.lua index 60cfa67..5d6c591 100644 --- a/scripts/titlescreen/components/updatefield.lua +++ b/scripts/titlescreen/components/updatefield.lua @@ -4,7 +4,7 @@ local ServiceField = require("titlescreen.components.servicefield") ---@class UpdateField: ServiceField ---@field _timer number local UpdateField = { - __tostring = function() return "UpdateField" end, + __name = "UpdateField", UPDATE_FLICKER_TIME = 0.5, UPDATE_FLICKER_COLORS = { {255, 0, 0, 255}, @@ -13,14 +13,16 @@ local UpdateField = { } ---Create a new UpdateField instance ----@param o? table # initial parameters +---@param params? UpdateField # initial parameters ---@return UpdateField -function UpdateField.new(o) - o = o or {} +function UpdateField.new(params) + params = params or {} - o._timer = 0 + local self = CreateInstance(UpdateField, params, ServiceField) - return CreateInstance(UpdateField, o, ServiceField) + self._timer = 0 + + return self end ---@param obj? any # message object for the field diff --git a/scripts/titlescreen/pages/boot/bootpage.lua b/scripts/titlescreen/pages/boot/bootpage.lua index 11a88d9..933d357 100644 --- a/scripts/titlescreen/pages/boot/bootpage.lua +++ b/scripts/titlescreen/pages/boot/bootpage.lua @@ -10,50 +10,50 @@ local SelfTestField = require("titlescreen.components.selftestfield") ---@class BootPage: Page local BootPage = { - __tostring = function() return "BootPage" end, + __name = "BootPage", } ---Create a new BootPage instance ----@param o? table # initial parameters +---@param params? BootPage # initial parameters ---@return BootPage -function BootPage.new(o) - o = o or {} +function BootPage.new(params) + params = params or {} - local this = CreateInstance(BootPage, o, Page) + local self = CreateInstance(BootPage, params, Page) - this._networkResult = {} + self._networkResult = {} - this:addField(ServiceField.new{posX = 32, posY = 32, label = Version.getLongVersion(), value = ""}) - this:addField(ServiceField.new{posX = 64, posY = 64, label = "UNNAMED SDVX CLONE STARTUP...", value = ""}) + self:addField(ServiceField.new{posX = 32, posY = 32, label = Version.getLongVersion(), value = ""}) + self:addField(ServiceField.new{posX = 64, posY = 64, label = "UNNAMED SDVX CLONE STARTUP...", value = ""}) local valueOffX = 220 - this._mainIoTestField = SelfTestField.new{label = "MAIN I/O", VALUE_OFFSETX = valueOffX} - this._mainIoTestField.checkTask = function(obj) + self._mainIoTestField = SelfTestField.new{label = "MAIN I/O", VALUE_OFFSETX = valueOffX} + self._mainIoTestField.checkTask = function(obj) return SelfTestStatusEnum.OK end - this._mainIoTestField.onStatusChange = function(status) + self._mainIoTestField.onStatusChange = function(status) if status == SelfTestStatusEnum.OK then - this._skinConfigTestField:activate() + self._skinConfigTestField:activate() end end - this._skinConfigTestField = SelfTestField.new{label = "SKIN CONFIG", VALUE_OFFSETX = valueOffX} - this._skinConfigTestField.checkTask = function(obj) + self._skinConfigTestField = SelfTestField.new{label = "SKIN CONFIG", VALUE_OFFSETX = valueOffX} + self._skinConfigTestField.checkTask = function(obj) local crewpath = "skins/" .. game.GetSkin() .. "/textures/crew/anim/" .. game.GetSkinSetting("single_idol") if not IsDir(crewpath) then return SelfTestStatusEnum.ERROR end return SelfTestStatusEnum.OK end - this._skinConfigTestField.onStatusChange = function(status) + self._skinConfigTestField.onStatusChange = function(status) if status == SelfTestStatusEnum.OK then - this._networkTestField:activate() + self._networkTestField:activate() end end - this._networkTestField = SelfTestField.new{label = "NETWORK", VALUE_OFFSETX = valueOffX} + self._networkTestField = SelfTestField.new{label = "NETWORK", VALUE_OFFSETX = valueOffX} -- set up async network check - this._networkTestField.checkTask = function(obj) + self._networkTestField.checkTask = function(obj) local status = SelfTestStatusEnum.INPROGRESS if not IRData.Active then @@ -61,9 +61,9 @@ function BootPage.new(o) end while status == SelfTestStatusEnum.INPROGRESS do - if this._networkResult.statusCode == IRData.States.Success then + if self._networkResult.statusCode == IRData.States.Success then status = SelfTestStatusEnum.OK - elseif this._networkResult.statusCode then + elseif self._networkResult.statusCode then status = SelfTestStatusEnum.ERROR -- there's a response, but it's not success end @@ -72,23 +72,23 @@ function BootPage.new(o) return status end - this._networkTestField.onStatusChange = function(status) + self._networkTestField.onStatusChange = function(status) if status == SelfTestStatusEnum.INPROGRESS then - IR.Heartbeat(function(res) this._networkResult = res end) -- IR doesn't like being called in a coroutine + IR.Heartbeat(function(res) self._networkResult = res end) -- IR doesn't like being called in a coroutine elseif status == SelfTestStatusEnum.PASS or status == SelfTestStatusEnum.OK then - if this.viewHandler then - this.viewHandler:navigate(CheckUpdatePage.new()) + if self.viewHandler then + self.viewHandler:navigate(CheckUpdatePage.new()) end end end local list = ListField.new{posX = 64, posY = 96} - list:addField(this._mainIoTestField) - list:addField(this._skinConfigTestField) - list:addField(this._networkTestField) - this:addField(list) + list:addField(self._mainIoTestField) + list:addField(self._skinConfigTestField) + list:addField(self._networkTestField) + self:addField(list) - return this + return self end ---@param deltaTime number # frametime in seconds diff --git a/scripts/titlescreen/pages/boot/checkupdatepage.lua b/scripts/titlescreen/pages/boot/checkupdatepage.lua index 20d1a94..70dbe43 100644 --- a/scripts/titlescreen/pages/boot/checkupdatepage.lua +++ b/scripts/titlescreen/pages/boot/checkupdatepage.lua @@ -7,20 +7,20 @@ local DialogField = require("titlescreen.components.dialogfield") ---@class CheckUpdatePage: Page ---@field _focusedField CheckUpdateField local CheckUpdatePage = { - __tostring = function() return "CheckUpdatePage" end, + __name = "CheckUpdatePage", } ---Create a new CheckUpdatePage instance ----@param o? table # initial parameters +---@param params? CheckUpdatePage # initial parameters ---@return CheckUpdatePage -function CheckUpdatePage.new(o) - local this = CreateInstance(CheckUpdatePage, o, Page) +function CheckUpdatePage.new(params) + local self = CreateInstance(CheckUpdatePage, params, Page) local width = DialogField.DEFAULT_WIDTH local height = DialogField.DEFAULT_HEIGHT local posX = (Dim.design.width - width) / 2 local posY = (Dim.design.height - height) / 2 - this._updateDialogField = DialogField.new{ + self._updateDialogField = DialogField.new{ posX = posX, posY = posY, aabbW = width, @@ -44,37 +44,37 @@ function CheckUpdatePage.new(o) } } } - this._updateDialogField.handleButtonInput = function (self, button) - if not this.viewHandler then + self._updateDialogField.handleButtonInput = function (_, button) + if not self.viewHandler then return false end if button == game.BUTTON_BCK then - this.viewHandler:clear() -- Cancel update, close screen + self.viewHandler:clear() -- Cancel update, close screen return true elseif button == game.BUTTON_STA then -- NOTE: this is a huge ass hack, please rethink local MainMenuPage = require("titlescreen.pages.service.mainmenupage") local VersionInfoPage = require("titlescreen.pages.service.versioninfopage") - this.viewHandler:replace(MainMenuPage.new()) - this.viewHandler:navigate(VersionInfoPage.new()) + self.viewHandler:replace(MainMenuPage.new()) + self.viewHandler:navigate(VersionInfoPage.new()) return true end return false end - this._checkUpdateField = CheckUpdateField.new{posX = 32, posY = 64, label = "update check"} - this._checkUpdateField.onUpdateAvailable = function(url, version) - this:addField(this._updateDialogField) - this._focusedField = this._updateDialogField + self._checkUpdateField = CheckUpdateField.new{posX = 32, posY = 64, label = "update check"} + self._checkUpdateField.onUpdateAvailable = function(url, version) + self:addField(self._updateDialogField) + self._focusedField = self._updateDialogField end - this:addField(this._checkUpdateField) + self:addField(self._checkUpdateField) - this._focusedField = this._checkUpdateField + self._focusedField = self._checkUpdateField - return this + return self end function CheckUpdatePage:handleButtonInput(button) diff --git a/scripts/titlescreen/pages/modeselect/modeselectpage.lua b/scripts/titlescreen/pages/modeselect/modeselectpage.lua index 64a8dca..36b7750 100644 --- a/scripts/titlescreen/pages/modeselect/modeselectpage.lua +++ b/scripts/titlescreen/pages/modeselect/modeselectpage.lua @@ -14,7 +14,7 @@ local crew = game.GetSkinSetting("single_idol") ---@class ModeSelectPage: Page ---@field _idolAnimationState AnimationState local ModeSelectPage = { - __tostring = function () return "ModeSelectPage" end, + __name = "ModeSelectPage", images = { selectorBgImage = gfx.CreateSkinImage("titlescreen/selector_bg.png", 0), selectorArrowsImage = gfx.CreateSkinImage("titlescreen/selector_arrows.png", 0), @@ -41,8 +41,8 @@ local ModeSelectPage = { } } -function ModeSelectPage.new(o) - local self = CreateInstance(ModeSelectPage, o, Page) +function ModeSelectPage.new(params) + local self = CreateInstance(ModeSelectPage, params, Page) return self end diff --git a/scripts/titlescreen/pages/service/colorcheckpage.lua b/scripts/titlescreen/pages/service/colorcheckpage.lua index 044d29c..248558d 100644 --- a/scripts/titlescreen/pages/service/colorcheckpage.lua +++ b/scripts/titlescreen/pages/service/colorcheckpage.lua @@ -5,7 +5,7 @@ local ColorGradientField = require("titlescreen.components.colorgradientfield") ---@class ColorCheckPage: ServicePage local ColorCheckPage = { - __tostring = function() return "ColorCheckPage" end, + __name = "ColorCheckPage", PADDING = {56, 120, 0, 56}, --{left, top, right, bottom} @@ -19,18 +19,18 @@ local ColorCheckPage = { } ---Create a new ColorCheckPage instance ----@param o? table # initial parameters +---@param params? ColorCheckPage # initial parameters ---@return ColorCheckPage -function ColorCheckPage.new(o) - o = o or {} +function ColorCheckPage.new(params) + params = params or {} - o.title = o.title or "COLOR CHECK" - o.footer = o.footer or { + params.title = params.title or "COLOR CHECK" + params.footer = params.footer or { "START BUTTON = EXIT", "BACK BUTTON = EXIT" } - local this = CreateInstance(ColorCheckPage, o, ServicePage) + local self = CreateInstance(ColorCheckPage, params, ServicePage) local height = ColorCheckPage.GRADIENT_SPACING local list = ListField.new() @@ -43,10 +43,10 @@ function ColorCheckPage.new(o) list:addField(ColorGradientField.new{label = "WHITE", value = {255, 255, 255, 255}, aabbH = height}) list:refreshFields() - this:addField(list) - this:refreshFields() + self:addField(list) + self:refreshFields() - return this + return self end ---@param button integer # options are under the `game` table prefixed with `BUTTON` diff --git a/scripts/titlescreen/pages/service/inputcheckpage.lua b/scripts/titlescreen/pages/service/inputcheckpage.lua index f1ecec2..a672a1c 100644 --- a/scripts/titlescreen/pages/service/inputcheckpage.lua +++ b/scripts/titlescreen/pages/service/inputcheckpage.lua @@ -6,19 +6,19 @@ local ListField = require("titlescreen.components.listfield") ---@class InputCheckPage: ServicePage local InputCheckPage = { - __tostring = function() return "InputCheckPage" end, + __name = "InputCheckPage", } ---Create a new InputCheckPage instance ----@param o? table # initial parameters +---@param params? InputCheckPage # initial parameters ---@return InputCheckPage -function InputCheckPage.new(o) - o = o or {} +function InputCheckPage.new(params) + params = params or {} - o.title = o.title or "INPUT CHECK" - o.footer = o.footer or "BACK BUTTON = EXIT" + params.title = params.title or "INPUT CHECK" + params.footer = params.footer or "BACK BUTTON = EXIT" - local this = CreateInstance(InputCheckPage, o, ServicePage) + local self = CreateInstance(InputCheckPage, params, ServicePage) local list = ListField.new() list:addField(InputButtonField.new{label="START BUTTON", button=game.BUTTON_STA}) @@ -32,10 +32,10 @@ function InputCheckPage.new(o) list:addField(InputKnobField.new{label="ANALOG VOLUME R", knob=1}) list:refreshFields() - this:addField(list) - this:refreshFields() + self:addField(list) + self:refreshFields() - return this + return self end ---@param button integer # options are under the `game` table prefixed with `BUTTON` diff --git a/scripts/titlescreen/pages/service/mainmenupage.lua b/scripts/titlescreen/pages/service/mainmenupage.lua index c36961a..7de6874 100644 --- a/scripts/titlescreen/pages/service/mainmenupage.lua +++ b/scripts/titlescreen/pages/service/mainmenupage.lua @@ -9,18 +9,18 @@ local ListField = require("titlescreen.components.listfield") ---@class MainMenuPage: ServicePage local MainMenuPage = { - __tostring = function() return "MainMenuPage" end, + __name = "MainMenuPage", } ---Create a new MainMenuPage instance ----@param o? table # initial parameters +---@param params? MainMenuPage # initial parameters ---@return MainMenuPage -function MainMenuPage.new(o) - o = o or {} +function MainMenuPage.new(params) + params = params or {} - o.title = o.title or "MAIN MENU" + params.title = params.title or "MAIN MENU" - local this = CreateInstance(MainMenuPage, o, ServicePage) + local self = CreateInstance(MainMenuPage, params, ServicePage) local list = ListField.new() list:addField(ServiceLinkField.new{label = "INPUT CHECK", link = InputCheckPage.new()}) @@ -29,10 +29,10 @@ function MainMenuPage.new(o) list:addField(ServiceLinkField.new{label = "VERSION INFORMATION", link = VersionInfoPage.new()}) list:refreshFields() - this:addField(list) - this:refreshFields() + self:addField(list) + self:refreshFields() - return this + return self end return MainMenuPage diff --git a/scripts/titlescreen/pages/service/screencheckpage.lua b/scripts/titlescreen/pages/service/screencheckpage.lua index 12f3806..32b743a 100644 --- a/scripts/titlescreen/pages/service/screencheckpage.lua +++ b/scripts/titlescreen/pages/service/screencheckpage.lua @@ -4,7 +4,7 @@ local ServicePage = require("titlescreen.pages.service.servicepage") ---@class ScreenCheckPage: ServicePage local ScreenCheckPage = { - __tostring = function() return "ScreenCheckPage" end, + __name = "ScreenCheckPage", BG_COLOR = {255, 255, 255, 255}, STROKE_COLOR = {255, 0, 0, 255}, @@ -17,18 +17,18 @@ local ScreenCheckPage = { } ---Create a new ScreenCheckPage instance ----@param o? table # initial parameters +---@param params? ScreenCheckPage # initial parameters ---@return ScreenCheckPage -function ScreenCheckPage.new(o) - o = o or {} +function ScreenCheckPage.new(params) + params = params or {} - o.title = o.title or "SCREEN CHECK" - o.footer = o.footer or { + params.title = params.title or "SCREEN CHECK" + params.footer = params.footer or { "START BUTTON = EXIT", "BACK BUTTON = EXIT" } - return CreateInstance(ScreenCheckPage, o, ServicePage) + return CreateInstance(ScreenCheckPage, params, ServicePage) end ---@param button integer # options are under the `game` table prefixed with `BUTTON` diff --git a/scripts/titlescreen/pages/service/servicepage.lua b/scripts/titlescreen/pages/service/servicepage.lua index 29d2b00..8576da5 100644 --- a/scripts/titlescreen/pages/service/servicepage.lua +++ b/scripts/titlescreen/pages/service/servicepage.lua @@ -17,7 +17,7 @@ local ServiceField = require("titlescreen.components.servicefield") ---@field FOOTER string|string[] ---@field FOOTER_SPACING number local ServicePage = { - __tostring = function() return "ServicePage" end, + __name = "ServicePage", FONT_SIZE = ServiceField.FONT_SIZE, FONT_FACE = ServiceField.FONT_FACE, FONT_COLOR = ServiceField.FONT_COLOR, --{r, g, b, a} @@ -34,16 +34,16 @@ local ServicePage = { } ---Create a new ServicePage instance ----@param o? table # initial parameters +---@param params? ServicePage # initial parameters ---@return ServicePage -function ServicePage.new(o) - o = o or {} +function ServicePage.new(params) + params = params or {} - o.title = o.title or "" - o.selectedIndex = o.selectedIndex or 1 - o.footer = o.footer or ServicePage.FOOTER + params.title = params.title or "" + params.selectedIndex = params.selectedIndex or 1 + params.footer = params.footer or ServicePage.FOOTER - return CreateInstance(ServicePage, o, Page) + return CreateInstance(ServicePage, params, Page) end ---Refresh content values diff --git a/scripts/titlescreen/pages/service/versioninfopage.lua b/scripts/titlescreen/pages/service/versioninfopage.lua index 102ed7d..a68aca3 100644 --- a/scripts/titlescreen/pages/service/versioninfopage.lua +++ b/scripts/titlescreen/pages/service/versioninfopage.lua @@ -14,23 +14,23 @@ end ---@class VersionInfoPage: ServicePage local VersionInfoPage = { - __tostring = function() return "VersionInfoPage" end, + __name = "VersionInfoPage", } ---Create a new VersionInfoPage instance ----@param o? table # initial parameters +---@param params? VersionInfoPage # initial parameters ---@return VersionInfoPage -function VersionInfoPage.new(o) - o = o or {} +function VersionInfoPage.new(params) + params = params or {} - o.title = o.title or "SYSTEM INFORMATION" - o.footer = o.footer or { + params.title = params.title or "SYSTEM INFORMATION" + params.footer = params.footer or { "START BUTTON = UPDATE", "BACK BUTTON = EXIT" } - o.selectedIndex = o.selectedIndex or 1 + params.selectedIndex = params.selectedIndex or 1 - local this = CreateInstance(VersionInfoPage, o, ServicePage) + local self = CreateInstance(VersionInfoPage, params, ServicePage) local logStr = ReadGameFile("log_usc-game.exe.txt") or ReadGameFile("log_usc-game.txt") @@ -45,10 +45,10 @@ function VersionInfoPage.new(o) list:addField(ServiceField.new{label = "GL VENDOR", value = getGameLogValue("OpenGL Vendor", logStr)}) list:refreshFields() - this:addField(list) - this:refreshFields() + self:addField(list) + self:refreshFields() - return this + return self end ---@param button integer # options are under the `game` table prefixed with `BUTTON` diff --git a/scripts/titlescreen/screen.lua b/scripts/titlescreen/screen.lua index a8a17ec..892d0bc 100644 --- a/scripts/titlescreen/screen.lua +++ b/scripts/titlescreen/screen.lua @@ -6,19 +6,19 @@ local PageView = require "api.page.pageview" ---@class Screen ---@field pageview PageView local Screen = { - __tostring = function() return "Screen" end + __name = "Screen" } ---Create a new Screen instance ----@param o? Screen +---@param params? Screen ---@return Screen -function Screen.new(o) - local self = CreateInstance(Screen, o) +function Screen.new(params) + local self = CreateInstance(Screen, params) self.pageview = PageView.new() return self end ----Initialize screen, override to push new page into pageview +---Initialize screen function Screen:init() end @@ -63,10 +63,6 @@ end ---@param deltaTime number # frametime in seconds function Screen:render(deltaTime) - if not self.pageview:get() then - self:deactivate() - end - self.pageview:render(deltaTime) end