From 1236d34c3ac182164ec7fc4af7c60b23aecb18c9 Mon Sep 17 00:00:00 2001 From: hjpalpha Date: Sat, 5 Sep 2026 13:45:26 +0200 Subject: [PATCH] feat(StageWinningsCalculation): support default result matches --- .../commons/StageWinningsCalculation.lua | 30 ++++++++++++++----- lua/wikis/commons/Widget/StageWinnings.lua | 2 ++ 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/lua/wikis/commons/StageWinningsCalculation.lua b/lua/wikis/commons/StageWinningsCalculation.lua index d583f37c8b7..2b58c6bafec 100644 --- a/lua/wikis/commons/StageWinningsCalculation.lua +++ b/lua/wikis/commons/StageWinningsCalculation.lua @@ -8,8 +8,9 @@ local Lua = require('Module:Lua') local Array = Lua.import('Module:Array') +local Logic = Lua.import('Module:Logic') +local MatchGroupInputUtil = Lua.import('Module:MatchGroup/Input/Util') local Opponent = Lua.import('Module:Opponent/Custom') -local OpponentDisplay = Lua.import('Module:OpponentDisplay/Custom') local TournamentStructure = Lua.import('Module:TournamentStructure') local Condition = Lua.import('Module:Condition') @@ -24,7 +25,8 @@ local StageWinningsCalculation = {} ---@param props {matchGroupsSpecProps: table, startDate: integer?, endDate: integer?, mode: string, ---startValue: number, valuePerWin: number, valueByScore: table?, ---pointsStart: number, pointsPerWin: number, pointsByScore: table?, ----points2Start: number, points2PerWin: number, points2ByScore: table?, hideWinnings: boolean} +---points2Start: number, points2PerWin: number, points2ByScore: table?, +---gameCountDefaultResult: number, hideWinnings: boolean} ---@return {opponent: standardOpponent, matchWins: integer, matchLosses: integer, matchDraws: integer, ---gameWins: integer, gameLosses: integer, winnings: number, scoreDetails: table, ---points: number, points2: number}[] @@ -66,8 +68,8 @@ function StageWinningsCalculation.run(props) local opponent1 = match.opponents[1] local opponent2 = match.opponents[2] - local opponent1Score = OpponentDisplay.InlineScore(opponent1) - local opponent2Score = OpponentDisplay.InlineScore(opponent2) + local opponent1Score = Opponent.getScoreValue(opponent1) + local opponent2Score = Opponent.getScoreValue(opponent2) local score = opponent1Score .. '-' .. opponent2Score local reversedScore = opponent2Score .. '-' .. opponent1Score @@ -86,10 +88,22 @@ function StageWinningsCalculation.run(props) byName[opponent2.name].matchDraws = byName[opponent2.name].matchDraws + 1 end - byName[opponent1.name].gameWins = byName[opponent1.name].gameWins + (tonumber(opponent1.score) or 0) - byName[opponent2.name].gameLosses = byName[opponent2.name].gameLosses + (tonumber(opponent1.score) or 0) - byName[opponent1.name].gameLosses = byName[opponent1.name].gameLosses + (tonumber(opponent2.score) or 0) - byName[opponent2.name].gameWins = byName[opponent2.name].gameWins + (tonumber(opponent2.score) or 0) + local numberOfGamesForScoreValue = function(scoreValue) + if Logic.isNumeric(scoreValue) then + return tonumber(scoreValue) + elseif Logic.isEmpty(scoreValue) or scoreValue ~= MatchGroupInputUtil.STATUS.DEFAULT_WIN then + return 0 + end + return props.gameCountDefaultResult + end + + local gamesWonOpponent1 = numberOfGamesForScoreValue(opponent1Score) + local gamesWonOpponent2 = numberOfGamesForScoreValue(opponent2Score) + + byName[opponent1.name].gameWins = byName[opponent1.name].gameWins + gamesWonOpponent1 + byName[opponent2.name].gameLosses = byName[opponent2.name].gameLosses + gamesWonOpponent1 + byName[opponent1.name].gameLosses = byName[opponent1.name].gameLosses + gamesWonOpponent2 + byName[opponent2.name].gameWins = byName[opponent2.name].gameWins + gamesWonOpponent2 end) local opponents = Array.extractValues(byName) diff --git a/lua/wikis/commons/Widget/StageWinnings.lua b/lua/wikis/commons/Widget/StageWinnings.lua index 3649d12b9ce..50b59cffbff 100644 --- a/lua/wikis/commons/Widget/StageWinnings.lua +++ b/lua/wikis/commons/Widget/StageWinnings.lua @@ -48,6 +48,7 @@ local NON_BREAKING_SPACE = ' ' ---@field pointsPerWin number? ---@field points2Start number? ---@field points2PerWin number? +---@field gameCountDefaultResult number? ---@field n-m number? # n amd m integers ---@field n-m_points number? # n amd m integers ---@field n-m_points2 number? # n amd m integers @@ -121,6 +122,7 @@ function StageWinnings:render() pointsPerWin = tonumber(props.pointsPerWin) or 0, points2PerWin = tonumber(props.points2PerWin) or 0, hideWinnings = Logic.readBool(props.hideWinnings), + gameCountDefaultResult = tonumber(props.gameCountDefaultResult) or 0, } if Logic.isNotEmpty(props.localcurrency) and Logic.readBool(props.autoexchange) then