dkforest

A forum and chat platform (onion)
git clone https://git.dasho.dev/n0tr1v/dkforest.git
Log | Files | Refs | LICENSE

commit 44fbe129154afbd880bfb120a21bbb3e3581c11a
parent 2d732bed441c0302821148ec08affb548f86d33b
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Thu,  7 Dec 2023 22:48:24 -0500

improve winner string

Diffstat:
Mpkg/web/handlers/poker/poker.go | 34+++++++++++++++++++---------------
Mpkg/web/handlers/poker/poker_test.go | 6+++---
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)