From 597df93ce35816b79ed0474484c6344b2714032b Mon Sep 17 00:00:00 2001 From: Soba Date: Tue, 31 Mar 2026 01:06:11 +0300 Subject: [PATCH 1/5] feat(infobox): add input and camera fields for players --- .../Infobox/Person/Player/Custom.lua | 52 ++++++++++++++++++- 1 file changed, 50 insertions(+), 2 deletions(-) diff --git a/lua/wikis/trackmania/Infobox/Person/Player/Custom.lua b/lua/wikis/trackmania/Infobox/Person/Player/Custom.lua index 04ea66c3ed1..ec5b87b3ef8 100644 --- a/lua/wikis/trackmania/Infobox/Person/Player/Custom.lua +++ b/lua/wikis/trackmania/Infobox/Person/Player/Custom.lua @@ -11,11 +11,34 @@ local Class = Lua.import('Module:Class') local Achievements = Lua.import('Module:Infobox/Extension/Achievements') local Injector = Lua.import('Module:Widget/Injector') +local Logic = Lua.import('Module:Logic') local Player = Lua.import('Module:Infobox/Person') local Widgets = Lua.import('Module:Widget/All') local Cell = Widgets.Cell +---@type table +local INPUTS = { + gamepad = 'Gamepad', + joystick = 'Joystick', + kbm = 'Keyboard & Mouse', + keyboard = 'Keyboard', + wheel = 'Wheel', +} + +---@type table +local CAMERAS = { + ['1'] = '1', + ['2'] = '2', + ['3'] = '3', + ['alt1'] = '1 (Alternate)', + ['alt2'] = '2 (Alternate)', + ['alt3'] = '3 (Alternate)', + ['1alt'] = '1 (Alternate)', + ['2alt'] = '2 (Alternate)', + ['3alt'] = '3 (Alternate)', +} + ---@class TrackmaniaInfoboxPlayer: Person local CustomPlayer = Class.new(Player) local CustomInjector = Class.new(Injector) @@ -35,11 +58,36 @@ end ---@param widgets Widget[] ---@return Widget[] function CustomInjector:parse(id, widgets) - if id == 'status' then - table.insert(widgets, Cell{name = 'Years Active (Player)', children = {self.caller.args.years_active}}) + local caller = self.caller + local args = caller.args + if id == 'custom' then + table.insert(widgets, Cell{name = 'Input Device', children = {caller:formatInput()}}) + table.insert(widgets, Cell{name = 'Main Camera', children = {caller:formatCamera()}}) + elseif id == 'status' then + table.insert(widgets, Cell{name = 'Years Active (Player)', children = {args.years_active}}) end return widgets end +---@param lpdbData table +---@return table +function CustomPlayer:adjustLPDB(lpdbData) + lpdbData.extradata.input = self:formatInput() + lpdbData.extradata.camera = self:formatCamera() + return lpdbData +end + +---@return string? +function CustomPlayer:formatInput() + local lowercaseInput = self.args.input and self.args.input:lower() or nil + return Logic.nilOr(INPUTS[lowercaseInput]) +end + +---@return string? +function CustomPlayer:formatCamera() + local lowercaseCamera = self.args.camera and self.args.camera:lower() or nil + return Logic.nilOr(CAMERAS[lowercaseCamera]) +end + return CustomPlayer From b08eb52e5aee2219d191e6d726e7955bbbc1fab0 Mon Sep 17 00:00:00 2001 From: SobakaPirat <40334641+SobakaPirat@users.noreply.github.com> Date: Tue, 31 Mar 2026 15:36:39 +0300 Subject: [PATCH 2/5] change nilOr to nilIfEmpty Co-authored-by: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github.com> --- lua/wikis/trackmania/Infobox/Person/Player/Custom.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lua/wikis/trackmania/Infobox/Person/Player/Custom.lua b/lua/wikis/trackmania/Infobox/Person/Player/Custom.lua index ec5b87b3ef8..7590701e556 100644 --- a/lua/wikis/trackmania/Infobox/Person/Player/Custom.lua +++ b/lua/wikis/trackmania/Infobox/Person/Player/Custom.lua @@ -81,13 +81,13 @@ end ---@return string? function CustomPlayer:formatInput() local lowercaseInput = self.args.input and self.args.input:lower() or nil - return Logic.nilOr(INPUTS[lowercaseInput]) + return Logic.nilIfEmpty(INPUTS[lowercaseInput]) end ---@return string? function CustomPlayer:formatCamera() local lowercaseCamera = self.args.camera and self.args.camera:lower() or nil - return Logic.nilOr(CAMERAS[lowercaseCamera]) + return Logic.nilIfEmpty(CAMERAS[lowercaseCamera]) end return CustomPlayer From 24d5e9d89e5069add0b16dc309be79938d408970 Mon Sep 17 00:00:00 2001 From: SobakaPirat <40334641+SobakaPirat@users.noreply.github.com> Date: Tue, 31 Mar 2026 15:42:51 +0300 Subject: [PATCH 3/5] clean up imports Co-authored-by: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github.com> --- lua/wikis/trackmania/Infobox/Person/Player/Custom.lua | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lua/wikis/trackmania/Infobox/Person/Player/Custom.lua b/lua/wikis/trackmania/Infobox/Person/Player/Custom.lua index 7590701e556..68cc7713e11 100644 --- a/lua/wikis/trackmania/Infobox/Person/Player/Custom.lua +++ b/lua/wikis/trackmania/Infobox/Person/Player/Custom.lua @@ -12,6 +12,11 @@ local Class = Lua.import('Module:Class') local Achievements = Lua.import('Module:Infobox/Extension/Achievements') local Injector = Lua.import('Module:Widget/Injector') local Logic = Lua.import('Module:Logic') +local Class = Lua.import('Module:Class') +local Logic = Lua.import('Module:Logic') + +local Achievements = Lua.import('Module:Infobox/Extension/Achievements') +local Injector = Lua.import('Module:Widget/Injector') local Player = Lua.import('Module:Infobox/Person') local Widgets = Lua.import('Module:Widget/All') From 33233b856bc0bf57454992d82245b88cb5a0f93e Mon Sep 17 00:00:00 2001 From: Soba Date: Tue, 31 Mar 2026 15:51:47 +0300 Subject: [PATCH 4/5] remove recurring imports --- lua/wikis/trackmania/Infobox/Person/Player/Custom.lua | 5 ----- 1 file changed, 5 deletions(-) diff --git a/lua/wikis/trackmania/Infobox/Person/Player/Custom.lua b/lua/wikis/trackmania/Infobox/Person/Player/Custom.lua index 68cc7713e11..179cdd0ae6d 100644 --- a/lua/wikis/trackmania/Infobox/Person/Player/Custom.lua +++ b/lua/wikis/trackmania/Infobox/Person/Player/Custom.lua @@ -7,11 +7,6 @@ local Lua = require('Module:Lua') -local Class = Lua.import('Module:Class') - -local Achievements = Lua.import('Module:Infobox/Extension/Achievements') -local Injector = Lua.import('Module:Widget/Injector') -local Logic = Lua.import('Module:Logic') local Class = Lua.import('Module:Class') local Logic = Lua.import('Module:Logic') From e73d675552e29364e253d56d9b0f178d6b5745d0 Mon Sep 17 00:00:00 2001 From: SobakaPirat <40334641+SobakaPirat@users.noreply.github.com> Date: Thu, 2 Apr 2026 19:35:19 +0300 Subject: [PATCH 5/5] remove aliases Co-authored-by: SyntacticSalt --- lua/wikis/trackmania/Infobox/Person/Player/Custom.lua | 3 --- 1 file changed, 3 deletions(-) diff --git a/lua/wikis/trackmania/Infobox/Person/Player/Custom.lua b/lua/wikis/trackmania/Infobox/Person/Player/Custom.lua index 179cdd0ae6d..5657cdb91f6 100644 --- a/lua/wikis/trackmania/Infobox/Person/Player/Custom.lua +++ b/lua/wikis/trackmania/Infobox/Person/Player/Custom.lua @@ -34,9 +34,6 @@ local CAMERAS = { ['alt1'] = '1 (Alternate)', ['alt2'] = '2 (Alternate)', ['alt3'] = '3 (Alternate)', - ['1alt'] = '1 (Alternate)', - ['2alt'] = '2 (Alternate)', - ['3alt'] = '3 (Alternate)', } ---@class TrackmaniaInfoboxPlayer: Person