commit da229e68071e85b172548a3ca76a877503886347
parent dd575abce40a34e7f4fa35d9e54df51298381da8
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Tue, 19 Dec 2023 00:25:10 -0500
refactor
Diffstat:
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>`