commit f787800a3a979448d8d852b3252a82f6c0d32ad2
parent a571e856ae5e038dd65a850d3067600bc1df9cd9
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Sat, 9 Dec 2023 01:51:09 -0500
fix stuff
Diffstat:
2 files changed, 18 insertions(+), 39 deletions(-)
diff --git a/pkg/web/handlers/poker/poker.go b/pkg/web/handlers/poker/poker.go
@@ -142,7 +142,6 @@ type PokerGame struct {
DealerIdx atomic.Int32 // Dealer seat idx
smallBlindIdx int
bigBlindIdx int
- underTheGunIdx int
IsGameStarted atomic.Bool
}
@@ -151,6 +150,15 @@ type GameResult struct {
Players []*PokerPlayer
}
+func (g *Ongoing) getPlayerIdxBySeatIdx(seatIdx int) (idx int) {
+ for i, p := range g.Players {
+ if p.SeatIdx == seatIdx {
+ return i
+ }
+ }
+ return -1
+}
+
func (g *Ongoing) computeWinners() (winner []GameResult) {
countAlive := 0
var lastAlive *PokerPlayer
@@ -233,11 +241,6 @@ func (g *Ongoing) GetDeckHash() string {
return utils.MD5([]byte(g.getDeckStr()))
}
-func (g *Ongoing) GetNextPlayer() *PokerPlayer {
-
- return nil
-}
-
func (g *Ongoing) GetPlayerBySeatIdx(seatIdx int) *PokerPlayer {
for _, p := range g.Players {
if p.SeatIdx == seatIdx {
@@ -282,20 +285,18 @@ func isRoundSettled(players []*PokerPlayer) bool {
func (g *PokerGame) incrDealerIdx() {
nbPlayers := len(g.Ongoing.Players)
dealerIdx := g.DealerIdx.Load()
+ var dealerPlayer *PokerPlayer
for {
dealerIdx = (dealerIdx + 1) % NbPlayers
- if p := g.Ongoing.GetPlayerBySeatIdx(int(dealerIdx)); p != nil {
+ dealerPlayer = g.Ongoing.GetPlayerBySeatIdx(int(dealerIdx))
+ if dealerPlayer != nil {
break
}
}
g.DealerIdx.Store(dealerIdx)
- g.smallBlindIdx = (int(dealerIdx) + 1) % nbPlayers
- g.bigBlindIdx = (int(dealerIdx) + 2) % nbPlayers
- g.underTheGunIdx = (int(dealerIdx) + 3) % nbPlayers
-}
-
-func incrDealerIdx(dealerIdx int32, nbPlayers int) int32 {
- return (dealerIdx + 1) % int32(nbPlayers)
+ dealerIdx1 := g.Ongoing.getPlayerIdxBySeatIdx(int(dealerIdx))
+ g.smallBlindIdx = (int(dealerIdx1) + 1) % nbPlayers
+ g.bigBlindIdx = (int(dealerIdx1) + 2) % nbPlayers
}
func (g *PokerGame) UnSitPlayer(authUser *database.User, roomID string) error {
@@ -409,9 +410,9 @@ func waitPlayersActionFn(g *PokerGame, roomID string, skip, minBet int) bool {
roomTopic := "room_" + roomID
roomLogsTopic := "room_" + roomID + "_logs"
playerAlive := 0
- dealerIdx := int(g.DealerIdx.Load())
- dealerPlayer := g.Ongoing.GetPlayerBySeatIdx(dealerIdx)
- playerToPlayIdx := (dealerPlayer.SeatIdx + skip) % len(g.Ongoing.Players)
+ dealerSeatIdx := int(g.DealerIdx.Load())
+ dealerIdx := g.Ongoing.getPlayerIdxBySeatIdx(dealerSeatIdx)
+ playerToPlayIdx := (dealerIdx + skip) % len(g.Ongoing.Players)
lastRaisePlayerIdx := -1
newlyAllInPlayers := make([]*PokerPlayer, 0)
diff --git a/pkg/web/handlers/poker/poker_test.go b/pkg/web/handlers/poker/poker_test.go
@@ -114,25 +114,3 @@ func Test_isRoundSettled(t *testing.T) {
})
}
}
-
-func Test_incrDealerIdx(t *testing.T) {
- type args struct {
- dealerIdx int32
- nbPlayers int
- }
- tests := []struct {
- name string
- args args
- want int32
- }{
- {"1", args{-1, 3}, 0},
- {"1", args{0, 3}, 1},
- {"1", args{1, 3}, 2},
- {"1", args{2, 3}, 0},
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- assert.Equalf(t, tt.want, incrDealerIdx(tt.args.dealerIdx, tt.args.nbPlayers), "incrDealerIdx(%v, %v)", tt.args.dealerIdx, tt.args.nbPlayers)
- })
- }
-}