commit f135880f5a05976fec949a06097ca6ad0dd1e615
parent 0067ba71f6e44437b35591df670603ee8b2836bd
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Fri, 8 Dec 2023 05:56:36 -0500
handle odd chips
Diffstat:
2 files changed, 27 insertions(+), 1 deletion(-)
diff --git a/pkg/web/handlers/poker/poker.go b/pkg/web/handlers/poker/poker.go
@@ -798,7 +798,9 @@ func processPot(winners []GameResult, mainPot int) (res []PlayerGain) {
if len(group.Players) == 1 && group.Players[0].Cash > 0 {
// Only 1 player win and is not all-in
player := group.Players[0]
- res = append(res, PlayerGain{player, mainPot, groupIdx, handStr})
+ piece := mainPot
+ res = append(res, PlayerGain{player, piece, groupIdx, handStr})
+ mainPot -= piece
} else if len(group.Players) == 1 && group.Players[0].Cash == 0 {
// Only 1 player win but is all-in
player := group.Players[0]
@@ -834,6 +836,7 @@ func processPot(winners []GameResult, mainPot int) (res []PlayerGain) {
for _, p := range group.Players {
if p.Cash > 0 {
res = append(res, PlayerGain{p, piece, groupIdx, handStr})
+ mainPot -= piece
}
}
}
@@ -842,6 +845,13 @@ func processPot(winners []GameResult, mainPot int) (res []PlayerGain) {
}
}
}
+
+ idx := 0
+ for mainPot > 0 {
+ res[idx].Gain += 1
+ idx = (idx + 1) % len(res)
+ mainPot--
+ }
return res
}
diff --git a/pkg/web/handlers/poker/poker_test.go b/pkg/web/handlers/poker/poker_test.go
@@ -89,6 +89,22 @@ func Test_processPot(t *testing.T) {
assert.Equal(t, 1, len(res))
assert.Equal(t, "p2", res[0].Player.Username)
assert.Equal(t, 1000, res[0].Gain)
+
+ p1 = &PokerPlayer{Cash: 1, RoundTotalBet: 5, Username: "p1"}
+ p2 = &PokerPlayer{Cash: 1, RoundTotalBet: 5, Username: "p2"}
+ p3 = &PokerPlayer{Cash: 1, RoundTotalBet: 5, Username: "p3"}
+ p4 = &PokerPlayer{Cash: 1, RoundTotalBet: 5, Username: "p4"}
+ //p5 = &PokerPlayer{Cash: 1, RoundTotalBet: 3, Folded: true, Username: "p5"}
+ arr = []GameResult{
+ {1, []*PokerPlayer{p1, p2, p3}},
+ {2, []*PokerPlayer{p4}},
+ }
+ sortGameResults(arr)
+ res = processPot(arr, 23)
+ assert.Equal(t, 3, len(res))
+ assert.Equal(t, 8, res[0].Gain)
+ assert.Equal(t, 8, res[1].Gain)
+ assert.Equal(t, 7, res[2].Gain)
}
func Test_isRoundSettled(t *testing.T) {