dkforest

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

commit da229e68071e85b172548a3ca76a877503886347
parent dd575abce40a34e7f4fa35d9e54df51298381da8
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Tue, 19 Dec 2023 00:25:10 -0500

refactor

Diffstat:
Mpkg/web/handlers/poker/poker.go | 96++++++++++++++++++++++++++++++++++++++++----------------------------------------
1 file changed, 48 insertions(+), 48 deletions(-)

diff --git a/pkg/web/handlers/poker/poker.go b/pkg/web/handlers/poker/poker.go @@ -52,16 +52,16 @@ func (p *Poker) GetOrCreateGame(db *database.DkfDB, roomID RoomID, pokerTableID if !found { g = &PokerGame{ db: db, - RoomID: roomID, - PokerTableID: pokerTableID, - TableType: TableTypeRake, + roomID: roomID, + pokerTableID: pokerTableID, + tableType: TableTypeRake, PokerTableMinBet: pokerTableMinBet, - PokerTableIsTest: pokerTableIsTest, + pokerTableIsTest: pokerTableIsTest, playersEventCh: make(chan PlayerEvent), Players: utils.NewRWMtx(make([]*SeatedPlayer, NbPlayers)), - DealerSeatIdx: atomic.Int32{}, + dealerSeatIdx: atomic.Int32{}, } - g.DealerSeatIdx.Store(-1) + g.dealerSeatIdx.Store(-1) p.games[roomID] = g } return g @@ -207,16 +207,16 @@ type PlayerCard struct { type PokerGame struct { db *database.DkfDB - RoomID RoomID - PokerTableID int64 - TableType int + roomID RoomID + pokerTableID int64 + tableType int PokerTableMinBet database.PokerChip - PokerTableIsTest bool + pokerTableIsTest bool playersEventCh chan PlayerEvent Players utils.RWMtx[[]*SeatedPlayer] Ongoing *Ongoing - DealerSeatIdx atomic.Int32 - IsGameStarted atomic.Bool + dealerSeatIdx atomic.Int32 + isGameStarted atomic.Bool } type gameResult struct { @@ -439,7 +439,7 @@ func isRoundSettled(players []*PokerPlayer) bool { func (g *PokerGame) incrDealerIdx() (smallBlindIdx, bigBlindIdx int) { ongoing := g.Ongoing nbPlayers := len(ongoing.Players) - dealerSeatIdx := g.DealerSeatIdx.Load() + dealerSeatIdx := g.dealerSeatIdx.Load() var dealerPlayer *PokerPlayer var dealerIdx int for { @@ -448,7 +448,7 @@ func (g *PokerGame) incrDealerIdx() (smallBlindIdx, bigBlindIdx int) { break } } - g.DealerSeatIdx.Store(dealerSeatIdx) + g.dealerSeatIdx.Store(dealerSeatIdx) startIDx := utils.Ternary(ongoing.isHeadsUpGame(), 0, 1) smallBlindIdx = (dealerIdx + startIDx) % nbPlayers bigBlindIdx = (dealerIdx + startIDx + 1) % nbPlayers @@ -476,7 +476,7 @@ func (g *PokerGame) UnSitPlayer(userID database.UserID) error { func (g *PokerGame) unSitPlayer1(gPlayers *[]*SeatedPlayer, seatedPlayer *SeatedPlayer) { ongoing := g.Ongoing - roomTopic := g.RoomID.Topic() + roomTopic := g.roomID.Topic() seatedPlayerUserID := seatedPlayer.UserID if ongoing != nil { if player := ongoing.getPlayer(seatedPlayerUserID); player != nil { @@ -521,7 +521,7 @@ func newOngoing(g *PokerGame) *Ongoing { func (g *PokerGame) newLogEvent(msg string) { ongoing := g.Ongoing logEvt := LogEvent{Message: msg} - PokerPubSub.Pub(g.RoomID.LogsTopic(), logEvt) + PokerPubSub.Pub(g.roomID.LogsTopic(), logEvt) if ongoing != nil { ongoing.LogEvents.With(func(v *[]LogEvent) { *v = append(*v, logEvt) @@ -531,7 +531,7 @@ func (g *PokerGame) newLogEvent(msg string) { func showCards(g *PokerGame, seats []Seat) { ongoing := g.Ongoing - roomTopic := g.RoomID.Topic() + roomTopic := g.roomID.Topic() for _, p := range ongoing.Players { if !p.Folded.Load() { var firstCard, secondCard PlayerCard @@ -558,7 +558,7 @@ func showCards(g *PokerGame, seats []Seat) { func setWaitTurn(g *PokerGame, seatIdx int) { evt := PokerWaitTurnEvent{Idx: seatIdx, CreatedAt: time.Now()} - PokerPubSub.Pub(g.RoomID.Topic(), evt) + PokerPubSub.Pub(g.roomID.Topic(), evt) g.Ongoing.WaitTurnEvent.With(func(v *PokerWaitTurnEvent) { *v = evt }) } @@ -610,7 +610,7 @@ type AutoAction struct { } func foldPlayer(g *PokerGame, p *PokerPlayer) { - roomTopic := g.RoomID.Topic() + roomTopic := g.roomID.Topic() p.Folded.Store(true) var firstCardIdx, secondCardIdx int p.Cards.RWith(func(pCards *[]PlayerCard) { @@ -655,7 +655,7 @@ func doFold(g *PokerGame, p *PokerPlayer, playerAlive *int) int { *playerAlive-- if *playerAlive == 1 { - PokerPubSub.Pub(g.RoomID.UserTopic(p.UserID), ErrorMsgEvent{Message: ""}) + PokerPubSub.Pub(g.roomID.UserTopic(p.UserID), ErrorMsgEvent{Message: ""}) return breakRoundIsSettledLoop } return doNothing @@ -664,7 +664,7 @@ func doFold(g *PokerGame, p *PokerPlayer, playerAlive *int) int { func doCheck(g *PokerGame, p *PokerPlayer, minBet *database.PokerChip) int { if p.GetBet() < *minBet { msg := fmt.Sprintf("Need to bet %d", *minBet-p.GetBet()) - PokerPubSub.Pub(g.RoomID.UserTopic(p.UserID), ErrorMsgEvent{Message: msg}) + PokerPubSub.Pub(g.roomID.UserTopic(p.UserID), ErrorMsgEvent{Message: msg}) return continueGetPlayerEventLoop } g.newLogEvent(fmt.Sprintf("%s check", p.Username)) @@ -678,7 +678,7 @@ func doCall(g *PokerGame, p *PokerPlayer, db *database.DkfDB, minBet *database.P if bet == 0 { g.newLogEvent(fmt.Sprintf("%s check", pUsername)) } else { - p.doBetAndNotif(db, g.PokerTableID, bet, g.RoomID.Topic()) + p.doBetAndNotif(db, g.pokerTableID, bet, g.roomID.Topic()) logMsg := fmt.Sprintf("%s call (%d)", pUsername, bet) if p.isAllIn() { logMsg += " (all-in)" @@ -696,7 +696,7 @@ func doAllIn(g *PokerGame, p *PokerPlayer, db *database.DkfDB, minBet *database. *lastRaisePlayerIdx = playerToPlayIdx } *minBet = utils.MaxInt(p.GetBet()+bet, *minBet) - p.doBetAndNotif(db, g.PokerTableID, bet, g.RoomID.Topic()) + p.doBetAndNotif(db, g.pokerTableID, bet, g.roomID.Topic()) logMsg := fmt.Sprintf("%s all-in (%d)", p.Username, bet) if p.isAllIn() { *newlyAllInPlayers = append(*newlyAllInPlayers, p) @@ -707,8 +707,8 @@ func doAllIn(g *PokerGame, p *PokerPlayer, db *database.DkfDB, minBet *database. func doBet(g *PokerGame, p *PokerPlayer, db *database.DkfDB, minBet *database.PokerChip, newlyAllInPlayers *[]*PokerPlayer, lastRaisePlayerIdx *int, playerToPlayIdx int, evt PlayerEvent) int { - roomTopic := g.RoomID.Topic() - roomUserTopic := g.RoomID.UserTopic(p.UserID) + roomTopic := g.roomID.Topic() + roomUserTopic := g.roomID.UserTopic(p.UserID) pokerTableMinBet := g.PokerTableMinBet bet := evt.Bet // Ensure the player cannot bet below the table minimum bet (amount of the big blind) @@ -731,7 +731,7 @@ func doBet(g *PokerGame, p *PokerPlayer, db *database.DkfDB, minBet *database.Po *lastRaisePlayerIdx = playerToPlayIdx } *minBet = utils.MaxInt(p.GetBet()+bet, *minBet) - p.doBetAndNotif(db, g.PokerTableID, bet, roomTopic) + p.doBetAndNotif(db, g.pokerTableID, bet, roomTopic) logMsg := fmt.Sprintf("%s bet %d", p.Username, bet) if p.isAllIn() { logMsg += " (all-in)" @@ -742,7 +742,7 @@ func doBet(g *PokerGame, p *PokerPlayer, db *database.DkfDB, minBet *database.Po } func handleAutoActionReceived(g *PokerGame, autoCache map[database.UserID]AutoAction, evt PlayerEvent) int { - roomUserTopic := g.RoomID.UserTopic(evt.UserID) + roomUserTopic := g.roomID.UserTopic(evt.UserID) autoAction := autoCache[evt.UserID] if evt.Fold && autoAction.action == FoldAction || evt.Call && autoAction.action == CallAction || @@ -766,7 +766,7 @@ func applyAutoAction(g *PokerGame, p *PokerPlayer, db *database.DkfDB, minBet *d autoCache map[database.UserID]AutoAction) (actionResult int) { pUserID := p.UserID - roomUserTopic := g.RoomID.UserTopic(pUserID) + roomUserTopic := g.roomID.UserTopic(pUserID) if autoAction.action > NoAction { time.Sleep(500 * time.Millisecond) p.LastActionTS = time.Now() @@ -814,9 +814,9 @@ func handlePlayerActionEvent(g *PokerGame, p *PokerPlayer, db *database.DkfDB, m func execBettingRound(g *PokerGame, skip int, minBet database.PokerChip) bool { db := g.db ongoing := g.Ongoing - roomID := g.RoomID + roomID := g.roomID roomTopic := roomID.Topic() - _, dealerIdx := ongoing.getPlayerBySeatIdx(int(g.DealerSeatIdx.Load())) + _, dealerIdx := ongoing.getPlayerBySeatIdx(int(g.dealerSeatIdx.Load())) playerToPlayIdx := (dealerIdx + skip) % len(ongoing.Players) lastRaisePlayerIdx := -1 newlyAllInPlayers := make([]*PokerPlayer, 0) @@ -927,7 +927,7 @@ RoundIsSettled: // Always refund the difference between the first-biggest bet and the second-biggest bet. // We refund the "uncalled bet" so that it does not go in the main pot and does not get raked. // Also, if a player goes all-in and a fraction of his bet is not matched, it will be refunded. - refundUncalledBet(db, ongoing, g.PokerTableID, roomTopic) + refundUncalledBet(db, ongoing, g.pokerTableID, roomTopic) // Transfer players bets into the main pot mainPot += resetPlayersBet(ongoing) @@ -988,7 +988,7 @@ func burnCard(g *PokerGame, idx, burnIdx *int) { Top: BurnStackY + (*burnIdx * 2), Left: BurnStackX + (*burnIdx * 4), } - PokerPubSub.Pub(g.RoomID.Topic(), evt) + PokerPubSub.Pub(g.roomID.Topic(), evt) ongoing.addEvent(evt) *burnIdx++ } @@ -1005,13 +1005,13 @@ func dealCard(g *PokerGame, idx *int, dealCardIdx int) { Left: DealX + (dealCardIdx * DealSpacing), Reveal: true, } - PokerPubSub.Pub(g.RoomID.Topic(), evt) + PokerPubSub.Pub(g.roomID.Topic(), evt) ongoing.addEvent(evt) ongoing.communityCards = append(ongoing.communityCards, card) } func dealPlayersCards(g *PokerGame, seats []Seat, idx *int) { - roomID := g.RoomID + roomID := g.roomID ongoing := g.Ongoing roomTopic := roomID.Topic() var card string @@ -1071,7 +1071,7 @@ func computeAllInMaxGain(ongoing *Ongoing, newlyAllInPlayers []*PokerPlayer, mai } func dealerThread(g *PokerGame) { - roomID := g.RoomID + roomID := g.roomID roomTopic := roomID.Topic() bigBlindBet := g.PokerTableMinBet collectRake := false @@ -1092,7 +1092,7 @@ func dealerThread(g *PokerGame) { sbIdx, bbIdx := g.incrDealerIdx() - PokerPubSub.Pub(roomTopic, GameStartedEvent{DealerSeatIdx: int(g.DealerSeatIdx.Load())}) + PokerPubSub.Pub(roomTopic, GameStartedEvent{DealerSeatIdx: int(g.dealerSeatIdx.Load())}) g.newLogEvent(fmt.Sprintf("-- New game --")) applySmallBlindBet(g, bigBlindBet, sbIdx) @@ -1120,7 +1120,7 @@ func dealerThread(g *PokerGame) { } // No flop, no drop - if g.TableType == TableTypeRake { + if g.tableType == TableTypeRake { collectRake = true } @@ -1177,7 +1177,7 @@ END: // Auto unsit inactive players autoUnsitInactivePlayers(g) - g.IsGameStarted.Store(false) + g.isGameStarted.Store(false) } func applySmallBlindBet(g *PokerGame, bigBlindBet database.PokerChip, sbIdx int) { @@ -1190,14 +1190,14 @@ func applyBigBlindBet(g *PokerGame, bigBlindBet database.PokerChip, bbIdx int) { func applyBlindBet(g *PokerGame, playerIdx int, bet database.PokerChip, name string) { p := g.Ongoing.Players[playerIdx] - p.doBetAndNotif(g.db, g.PokerTableID, bet, g.RoomID.Topic()) + p.doBetAndNotif(g.db, g.pokerTableID, bet, g.roomID.Topic()) g.newLogEvent(fmt.Sprintf("%s %s %d", p.Username, name, bet)) } func autoUnsitInactivePlayers(g *PokerGame) { ongoing := g.Ongoing pokerTableMinBet := g.PokerTableMinBet - roomTopic := g.RoomID.Topic() + roomTopic := g.roomID.Topic() g.Players.With(func(gPlayers *[]*SeatedPlayer) { for _, p := range *gPlayers { if p != nil { @@ -1229,14 +1229,14 @@ const ( func applyGains(g *PokerGame, playersGain []PlayerGain, mainPot, rake database.PokerChip) (winnersStr, winnerHand string) { ongoing := g.Ongoing - pokerTableID := g.PokerTableID + pokerTableID := g.pokerTableID nbPlayersGain := len(playersGain) g.db.With(func(tx *database.DkfDB) { if nbPlayersGain >= 1 { winnerHand = utils.Ternary(nbPlayersGain == 1, playersGain[0].HandStr, "Split pot") - if g.TableType == TableTypeRake { - if !g.PokerTableIsTest { + if g.tableType == TableTypeRake { + if !g.pokerTableIsTest { _ = tx.IncrPokerCasinoRake(rake) } g.newLogEvent(fmt.Sprintf("Rake %d (%.2f%%)", rake, (float64(rake)/float64(mainPot))*100)) @@ -1403,7 +1403,7 @@ func (g *PokerGame) Deal(roomID RoomID, authUser *database.User) { PokerPubSub.Pub(roomUserTopic, ErrorMsgEvent{Message: "need at least 2 players"}) return } - if !g.IsGameStarted.CompareAndSwap(false, true) { + if !g.isGameStarted.CompareAndSwap(false, true) { PokerPubSub.Pub(roomUserTopic, ErrorMsgEvent{Message: "game already ongoing"}) return } @@ -1555,7 +1555,7 @@ func colorForCard(name string) string { func buildDealerTokenHtml(g *PokerGame) (html string) { html += `<div id="dealerToken"><div class="inner"></div></div>` if g.Ongoing != nil { - pos := dealerTokenPos[g.DealerSeatIdx.Load()] + pos := dealerTokenPos[g.dealerSeatIdx.Load()] html += `<style>#dealerToken { top: ` + itoa(pos[0]) + `px; left: ` + itoa(pos[1]) + `px; }</style>` } return @@ -1611,7 +1611,7 @@ func BuildPayloadHtml(g *PokerGame, authUser *database.User, payload any) (html } func buildGameDiv(g *PokerGame, authUser *database.User) (html string) { - roomID := g.RoomID + roomID := g.roomID html += `<div id="game">` html += `<div id="table"></div>` html += buildSeatsHtml(g, authUser) @@ -1627,7 +1627,7 @@ func buildGameDiv(g *PokerGame, authUser *database.User) (html string) { func BuildBaseHtml(g *PokerGame, authUser *database.User) (html string) { ongoing := g.Ongoing - roomID := g.RoomID + roomID := g.roomID html += hutils.HtmlCssReset html += pokerCss //html += `<script>document.onclick = function(e) { console.log(e.x, e.y); };</script>` // TODO: dev only @@ -1819,7 +1819,7 @@ func buildSeatsHtml(g *PokerGame, authUser *database.User) (html string) { html += `<div>` for i := range *gPlayers { html += `<div class="seat" id="seat` + itoa(i+1) + `"> -<iframe src="/poker/` + g.RoomID.String() + `/sit/` + itoa(i+1) + `" class="takeSeat takeSeat` + itoa(i+1) + `"></iframe>` +<iframe src="/poker/` + g.roomID.String() + `/sit/` + itoa(i+1) + `" class="takeSeat takeSeat` + itoa(i+1) + `"></iframe>` html += ` <div class="inner"></div>` html += ` <div id="seat` + itoa(i+1) + `_cash" class="cash"></div>` html += `</div>`