dkforest

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

commit f787800a3a979448d8d852b3252a82f6c0d32ad2
parent a571e856ae5e038dd65a850d3067600bc1df9cd9
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Sat,  9 Dec 2023 01:51:09 -0500

fix stuff

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