commit 44fbe129154afbd880bfb120a21bbb3e3581c11a
parent 2d732bed441c0302821148ec08affb548f86d33b
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Thu, 7 Dec 2023 22:48:24 -0500
improve winner string
Diffstat:
2 files changed, 22 insertions(+), 18 deletions(-)
diff --git a/pkg/web/handlers/poker/poker.go b/pkg/web/handlers/poker/poker.go
@@ -721,8 +721,16 @@ END:
mainPot := g.Ongoing.MainPot
g.Ongoing.MainPotMtx.RUnlock()
- winnersStr, winnerHand, playersGain := processPot(winners, len(g.Ongoing.Players), mainPot)
+ playersGain := processPot(winners, len(g.Ongoing.Players), mainPot)
+ winnersStr := ""
+ winnerHand := ""
+ if len(playersGain) == 1 {
+ winnerHand = playersGain[0].HandStr
+ } else if len(playersGain) > 1 {
+ winnerHand = "Split pot"
+ }
for _, el := range playersGain {
+ winnersStr += el.Player.Username + " "
el.Player.Cash += el.Gain
}
@@ -758,19 +766,19 @@ END:
}
type PlayerGain struct {
- Player *PokerPlayer
- Gain int
+ Player *PokerPlayer
+ Gain int
+ HandStr string
}
-func processPot(winners []GameResult, nbPlayers, mainPot int) (winnersStr, winnerHand string, res []PlayerGain) {
+func processPot(winners []GameResult, nbPlayers, mainPot int) (res []PlayerGain) {
winnersStrArr := make([]string, 0)
if len(winners) == 0 {
logrus.Error("winners has len 0")
} else if len(winners) == 1 && len(winners[0].Players) == 1 {
// Everyone fold but 1 player
player := winners[0].Players[0]
- winnerHand = "Only player alive"
- res = append(res, PlayerGain{player, mainPot})
+ res = append(res, PlayerGain{player, mainPot, "Only player alive"})
winnersStrArr = append(winnersStrArr, player.Username)
} else {
isDone := true
@@ -782,16 +790,14 @@ func processPot(winners []GameResult, nbPlayers, mainPot int) (winnersStr, winne
if len(group.Players) == 1 && group.Players[0].Cash > 0 {
// Only 1 player win and is not all-in
player := group.Players[0]
- winnerHand = poker.RankString(group.HandScore)
- res = append(res, PlayerGain{player, mainPot})
+ res = append(res, PlayerGain{player, mainPot, poker.RankString(group.HandScore)})
winnersStrArr = append(winnersStrArr, player.Username)
} else if len(group.Players) == 1 && group.Players[0].Cash == 0 {
// Only 1 player win but is all-in
player := group.Players[0]
maxGain := player.RoundTotalBet * nbPlayers
piece := utils.MinInt(maxGain, mainPot)
- winnerHand = poker.RankString(group.HandScore)
- res = append(res, PlayerGain{player, piece})
+ res = append(res, PlayerGain{player, piece, poker.RankString(group.HandScore)})
winnersStrArr = append(winnersStrArr, player.Username)
mainPot -= piece
isDone = false
@@ -805,7 +811,7 @@ func processPot(winners []GameResult, nbPlayers, mainPot int) (winnersStr, winne
allInCount++
maxGain := p.RoundTotalBet * nbPlayers
piece := utils.MinInt(maxGain, expectedSplit)
- res = append(res, PlayerGain{p, piece})
+ res = append(res, PlayerGain{p, piece, poker.RankString(group.HandScore)})
mainPot -= piece
winnersStrArr = append(winnersStrArr, p.Username)
if nbPlayersInGroup-allInCount > 0 {
@@ -822,19 +828,17 @@ func processPot(winners []GameResult, nbPlayers, mainPot int) (winnersStr, winne
piece := mainPot / (nbPlayersInGroup - allInCount) // TODO: fix this
for _, p := range group.Players {
if p.Cash > 0 {
- res = append(res, PlayerGain{p, piece})
+ res = append(res, PlayerGain{p, piece, poker.RankString(group.HandScore)})
winnersStrArr = append(winnersStrArr, p.Username)
}
}
- winnerHand = poker.RankString(group.HandScore)
}
if isDone {
break
}
}
}
- winnersStr = strings.Join(winnersStrArr, ", ")
- return winnersStr, winnerHand, res
+ return res
}
func cardToPokerCard(name string) string {
diff --git a/pkg/web/handlers/poker/poker_test.go b/pkg/web/handlers/poker/poker_test.go
@@ -58,7 +58,7 @@ func Test_processPot(t *testing.T) {
{1, []*PokerPlayer{p2, p4, p1, p3}},
}
sortGameResults(arr)
- _, _, res = processPot(arr, 4, 1000)
+ res = processPot(arr, 4, 1000)
assert.Equal(t, 250, res[0].Gain)
assert.Equal(t, 250, res[1].Gain)
assert.Equal(t, 250, res[2].Gain)
@@ -72,7 +72,7 @@ func Test_processPot(t *testing.T) {
{1, []*PokerPlayer{p2, p4, p1, p3}},
}
sortGameResults(arr)
- _, _, res = processPot(arr, 4, 1000)
+ res = processPot(arr, 4, 1000)
assert.Equal(t, 40, res[0].Gain)
assert.Equal(t, 80, res[1].Gain)
assert.Equal(t, 440, res[2].Gain)
@@ -85,7 +85,7 @@ func Test_processPot(t *testing.T) {
{2, []*PokerPlayer{p1}},
}
sortGameResults(arr)
- _, _, res = processPot(arr, 3, 1000)
+ res = processPot(arr, 3, 1000)
assert.Equal(t, 1, len(res))
assert.Equal(t, "p2", res[0].Player.Username)
assert.Equal(t, 1000, res[0].Gain)