commit 8e061cc7d0a366459441f31457e153d1d8f4fad1
parent 59c1b8c3c132dd61e73215e55ab85a5b99d3a0e5
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Sun, 24 Dec 2023 17:14:58 -0500
refactor
Diffstat:
2 files changed, 117 insertions(+), 117 deletions(-)
diff --git a/pkg/web/handlers/poker.go b/pkg/web/handlers/poker.go
@@ -356,7 +356,7 @@ func PokerStreamHandler(c echo.Context) error {
}
defer usersStreamsManager.Inst.Remove(authUser.ID, roomTopic)
- sub := poker.PokerPubSub.Subscribe([]string{roomTopic, roomUserTopic})
+ sub := poker.PubSub.Subscribe([]string{roomTopic, roomUserTopic})
defer sub.Close()
send(poker.BuildBaseHtml(g, authUser, chatRoomSlug))
@@ -380,7 +380,7 @@ func PokerLogsHandler(c echo.Context) error {
return c.Redirect(http.StatusFound, "/")
}
roomLogsTopic := roomID.LogsTopic()
- sub := poker.PokerPubSub.Subscribe([]string{roomLogsTopic})
+ sub := poker.PubSub.Subscribe([]string{roomLogsTopic})
defer sub.Close()
quit := hutils.CloseSignalChan(c)
hutils.SetStreamingHeaders(c)
@@ -420,7 +420,7 @@ func PokerBetHandler(c echo.Context) error {
}
roomUserTopic := roomID.UserTopic(authUser.ID)
- sub := poker.PokerPubSub.Subscribe([]string{roomID.Topic(), roomUserTopic})
+ sub := poker.PubSub.Subscribe([]string{roomID.Topic(), roomUserTopic})
defer sub.Close()
quit := hutils.CloseSignalChan(c)
hutils.SetStreamingHeaders(c)
diff --git a/pkg/web/handlers/poker/poker.go b/pkg/web/handlers/poker/poker.go
@@ -38,16 +38,16 @@ const animationTime = 1000 * time.Millisecond
type Poker struct {
sync.Mutex
- games map[RoomID]*PokerGame
+ games map[RoomID]*Game
}
func newPoker() *Poker {
p := &Poker{}
- p.games = make(map[RoomID]*PokerGame)
+ p.games = make(map[RoomID]*Game)
return p
}
-func (p *Poker) GetGame(roomID RoomID) *PokerGame {
+func (p *Poker) GetGame(roomID RoomID) *Game {
p.Lock()
defer p.Unlock()
g, found := PokerInstance.games[roomID]
@@ -58,7 +58,7 @@ func (p *Poker) GetGame(roomID RoomID) *PokerGame {
}
func (p *Poker) GetOrCreateGame(db *database.DkfDB, roomID RoomID, pokerTableID int64,
- pokerTableMinBet database.PokerChip, pokerTableIsTest bool) *PokerGame {
+ pokerTableMinBet database.PokerChip, pokerTableIsTest bool) *Game {
p.Lock()
defer p.Unlock()
g, found := p.games[roomID]
@@ -69,22 +69,22 @@ func (p *Poker) GetOrCreateGame(db *database.DkfDB, roomID RoomID, pokerTableID
}
func (p *Poker) CreateGame(db *database.DkfDB, roomID RoomID, pokerTableID int64,
- pokerTableMinBet database.PokerChip, pokerTableIsTest bool) *PokerGame {
+ pokerTableMinBet database.PokerChip, pokerTableIsTest bool) *Game {
p.Lock()
defer p.Unlock()
return p.createGame(db, roomID, pokerTableID, pokerTableMinBet, pokerTableIsTest)
}
func (p *Poker) createGame(db *database.DkfDB, roomID RoomID, pokerTableID int64,
- pokerTableMinBet database.PokerChip, pokerTableIsTest bool) *PokerGame {
+ pokerTableMinBet database.PokerChip, pokerTableIsTest bool) *Game {
g := p.newGame(db, roomID, pokerTableID, pokerTableMinBet, pokerTableIsTest)
p.games[roomID] = g
return g
}
func (p *Poker) newGame(db *database.DkfDB, roomID RoomID, pokerTableID int64,
- pokerTableMinBet database.PokerChip, pokerTableIsTest bool) *PokerGame {
- g := &PokerGame{
+ pokerTableMinBet database.PokerChip, pokerTableIsTest bool) *Game {
+ g := &Game{
db: db,
roomID: roomID,
pokerTableID: pokerTableID,
@@ -182,7 +182,7 @@ func (p seatedPlayers) toPokerPlayers() pokerPlayers {
return players
}
-func (g *PokerGame) getEligibles() (out seatedPlayers) {
+func (g *Game) getEligibles() (out seatedPlayers) {
eligiblePlayers := make(seatedPlayers, 0)
g.Players.RWith(func(gPlayers seatedPlayers) {
for _, p := range gPlayers {
@@ -228,42 +228,42 @@ type PokerPlayer struct {
countChancesToAction int
}
-func (g *PokerGame) IsBet() (out bool) {
+func (g *Game) IsBet() (out bool) {
if g.ongoing != nil {
return !g.ongoing.hasBet.Get()
}
return
}
-func (g *PokerGame) IsYourTurn(player *PokerPlayer) (out bool) {
+func (g *Game) IsYourTurn(player *PokerPlayer) (out bool) {
if g.ongoing != nil {
return player.userID == g.ongoing.playerToPlay.Get()
}
return
}
-func (g *PokerGame) CanCheck(player *PokerPlayer) (out bool) {
+func (g *Game) CanCheck(player *PokerPlayer) (out bool) {
if g.ongoing != nil {
return player.bet.Get() == g.ongoing.MinBet.Get()
}
return
}
-func (g *PokerGame) CanFold(player *PokerPlayer) (out bool) {
+func (g *Game) CanFold(player *PokerPlayer) (out bool) {
if g.ongoing != nil {
return player.bet.Get() < g.ongoing.MinBet.Get()
}
return
}
-func (g *PokerGame) MinBet() (out database.PokerChip) {
+func (g *Game) MinBet() (out database.PokerChip) {
if g.ongoing != nil {
return g.ongoing.MinBet.Get()
}
return
}
-func (p *PokerGame) MinRaise() (out database.PokerChip) {
+func (p *Game) MinRaise() (out database.PokerChip) {
if p.ongoing != nil {
return p.ongoing.MinRaise.Get()
}
@@ -317,7 +317,7 @@ func (p *PokerPlayer) refundBet(db *database.DkfDB, pokerTableID int64) {
func (p *PokerPlayer) doBetAndNotif(db *database.DkfDB, pokerTableID int64, bet database.PokerChip, roomTopic string) {
p.doBet(db, pokerTableID, bet)
- PokerPubSub.Pub(roomTopic, PlayerBetEvent{PlayerSeatIdx: p.seatIdx, Player: p.username, Bet: bet, TotalBet: p.GetBet(), Cash: p.getCash()})
+ PubSub.Pub(roomTopic, PlayerBetEvent{PlayerSeatIdx: p.seatIdx, Player: p.username, Bet: bet, TotalBet: p.GetBet(), Cash: p.getCash()})
}
type playerCard struct {
@@ -325,7 +325,7 @@ type playerCard struct {
name string
}
-type PokerGame struct {
+type Game struct {
Players rwmtx.RWMtx[seatedPlayers]
ongoing *ongoingGame
db *database.DkfDB
@@ -344,42 +344,42 @@ type gameResult struct {
players []*PokerPlayer
}
-func (g *PokerGame) GetLogs() (out []LogEvent) {
+func (g *Game) GetLogs() (out []LogEvent) {
if g.ongoing != nil {
out = g.ongoing.logEvents.Clone()
}
return
}
-func (g *PokerGame) Check(userID database.UserID) {
+func (g *Game) Check(userID database.UserID) {
g.sendPlayerEvent(playerEvent{UserID: userID, Check: true})
}
-func (g *PokerGame) AllIn(userID database.UserID) {
+func (g *Game) AllIn(userID database.UserID) {
g.sendPlayerEvent(playerEvent{UserID: userID, AllIn: true})
}
-func (g *PokerGame) Raise(userID database.UserID) {
+func (g *Game) Raise(userID database.UserID) {
g.sendPlayerEvent(playerEvent{UserID: userID, Raise: true})
}
-func (g *PokerGame) Bet(userID database.UserID, bet database.PokerChip) {
+func (g *Game) Bet(userID database.UserID, bet database.PokerChip) {
g.sendPlayerEvent(playerEvent{UserID: userID, Bet: bet})
}
-func (g *PokerGame) Call(userID database.UserID) {
+func (g *Game) Call(userID database.UserID) {
g.sendPlayerEvent(playerEvent{UserID: userID, Call: true})
}
-func (g *PokerGame) Fold(userID database.UserID) {
+func (g *Game) Fold(userID database.UserID) {
g.sendPlayerEvent(playerEvent{UserID: userID, Fold: true})
}
-func (g *PokerGame) sendUnsitPlayerEvent(userID database.UserID) {
+func (g *Game) sendUnsitPlayerEvent(userID database.UserID) {
g.sendPlayerEvent(playerEvent{UserID: userID, Unsit: true})
}
-func (g *PokerGame) sendPlayerEvent(evt playerEvent) {
+func (g *Game) sendPlayerEvent(evt playerEvent) {
select {
case g.playersEventCh <- evt:
default:
@@ -479,8 +479,8 @@ func (g *ongoingGame) GetDeckHash() string {
return utils.MD5([]byte(g.getDeckStr()))
}
-// Get the player index in ongoingGame.Players from a seat index (index in PokerGame.Players)
-// [nil p1 nil nil p2 nil] -> PokerGame.Players
+// Get the player index in ongoingGame.Players from a seat index (index in Game.Players)
+// [nil p1 nil nil p2 nil] -> Game.Players
// [p1 p2] -> ongoingGame.Players
func (g *ongoingGame) getPlayerBySeatIdx(seatIdx int) (*PokerPlayer, int) {
for idx, p := range g.players {
@@ -511,15 +511,15 @@ func (g *ongoingGame) countAlivePlayers() (playerAlive int) {
// IsSeatedUnsafe returns either or not a userID is seated at the table.
// WARN: The caller of this function needs to ensure that g.Players has been Lock/RLock
-func (g *PokerGame) IsSeatedUnsafe(userID database.UserID) bool {
+func (g *Game) IsSeatedUnsafe(userID database.UserID) bool {
return isSeated(*g.Players.Val(), userID)
}
-func (g *PokerGame) IsSeated(userID database.UserID) bool {
+func (g *Game) IsSeated(userID database.UserID) bool {
return isSeated(g.Players.Get(), userID)
}
-func (g *PokerGame) isSeated(userID database.UserID) (out bool) {
+func (g *Game) isSeated(userID database.UserID) (out bool) {
g.Players.RWith(func(gPlayers seatedPlayers) { out = isSeated(gPlayers, userID) })
return
}
@@ -551,7 +551,7 @@ func isRoundSettled(players []*PokerPlayer) bool {
return true
}
-func (g *PokerGame) incrDealerIdx() (smallBlindIdx, bigBlindIdx int) {
+func (g *Game) incrDealerIdx() (smallBlindIdx, bigBlindIdx int) {
ongoing := g.ongoing
nbPlayers := len(ongoing.players)
dealerSeatIdx := g.dealerSeatIdx.Load()
@@ -570,7 +570,7 @@ func (g *PokerGame) incrDealerIdx() (smallBlindIdx, bigBlindIdx int) {
return
}
-func (g *PokerGame) Sit(userID database.UserID, username database.Username, pos int) {
+func (g *Game) Sit(userID database.UserID, username database.Username, pos int) {
if err := g.Players.WithE(func(gPlayers *seatedPlayers) error {
pokerTable, err := g.db.GetPokerTableBySlug(g.roomID.String())
if err != nil {
@@ -600,17 +600,17 @@ func (g *PokerGame) Sit(userID database.UserID, username database.Username, pos
lastActionTS: time.Now(),
}
- PokerPubSub.Pub(g.roomID.Topic(), PokerSeatTakenEvent{})
+ PubSub.Pub(g.roomID.Topic(), PokerSeatTakenEvent{})
g.newLogEvent(fmt.Sprintf("%s sit", username.String()))
return nil
}); err != nil {
- PokerPubSub.Pub(g.roomID.UserTopic(userID), NewErrorMsgEvent(err.Error()))
+ PubSub.Pub(g.roomID.UserTopic(userID), NewErrorMsgEvent(err.Error()))
return
}
}
-func (g *PokerGame) UnSit(userID database.UserID) {
+func (g *Game) UnSit(userID database.UserID) {
g.Players.With(func(gPlayers *seatedPlayers) {
if p := gPlayers.get(userID); p != nil {
g.unSitPlayer(gPlayers, p)
@@ -619,7 +619,7 @@ func (g *PokerGame) UnSit(userID database.UserID) {
})
}
-func (g *PokerGame) unSitPlayer(gPlayers *seatedPlayers, seatedPlayer *seatedPlayer) {
+func (g *Game) unSitPlayer(gPlayers *seatedPlayers, seatedPlayer *seatedPlayer) {
ongoing := g.ongoing
if ongoing != nil {
if player := ongoing.players.get(seatedPlayer.userID); player != nil {
@@ -629,14 +629,14 @@ func (g *PokerGame) unSitPlayer(gPlayers *seatedPlayers, seatedPlayer *seatedPla
player.cards.RWith(func(playerCards []playerCard) {
for _, card := range playerCards {
evt := PokerEvent{ID: "card" + itoa(card.idx), Name: "", Idx: card.idx, Top: BurnStackY, Left: BurnStackX, Angle: "0deg", Reveal: false}
- PokerPubSub.Pub(g.roomID.Topic(), evt)
+ PubSub.Pub(g.roomID.Topic(), evt)
ongoing.events.Append(evt)
}
})
}
}
(*gPlayers)[seatedPlayer.seatIdx] = nil
- PokerPubSub.Pub(g.roomID.Topic(), PokerSeatLeftEvent{})
+ PubSub.Pub(g.roomID.Topic(), PokerSeatLeftEvent{})
}
func generateDeck() []string {
@@ -660,16 +660,16 @@ func newOngoing(eligiblePlayers seatedPlayers) *ongoingGame {
}
}
-func (g *PokerGame) newLogEvent(msg string) {
+func (g *Game) newLogEvent(msg string) {
ongoing := g.ongoing
logEvt := LogEvent{Message: msg}
- PokerPubSub.Pub(g.roomID.LogsTopic(), logEvt)
+ PubSub.Pub(g.roomID.LogsTopic(), logEvt)
if ongoing != nil {
ongoing.logEvents.Append(logEvt)
}
}
-func showCards(g *PokerGame, seats []Seat) {
+func showCards(g *Game, seats []Seat) {
ongoing := g.ongoing
roomTopic := g.roomID.Topic()
for _, p := range ongoing.players {
@@ -689,22 +689,22 @@ func showCards(g *PokerGame, seats []Seat) {
}
evt1 := PokerEvent{ID: "card" + itoa(firstCard.idx), Name: firstCard.name, Idx: firstCard.idx, Top: seatData.Top, Left: seatData.Left, Reveal: true}
evt2 := PokerEvent{ID: "card" + itoa(secondCard.idx), Name: secondCard.name, Idx: secondCard.idx, Top: seatData.Top, Left: seatData.Left + 53, Reveal: true}
- PokerPubSub.Pub(roomTopic, evt1)
- PokerPubSub.Pub(roomTopic, evt2)
+ PubSub.Pub(roomTopic, evt1)
+ PubSub.Pub(roomTopic, evt2)
ongoing.events.Append(evt1, evt2)
}
}
}
-func setWaitTurn(g *PokerGame, seatIdx int) {
+func setWaitTurn(g *Game, seatIdx int) {
evt := PokerWaitTurnEvent{Idx: seatIdx, CreatedAt: time.Now()}
- PokerPubSub.Pub(g.roomID.Topic(), evt)
+ PubSub.Pub(g.roomID.Topic(), evt)
g.ongoing.waitTurnEvent.Set(evt)
}
-func setAutoAction(g *PokerGame, roomUserTopic, msg string) {
+func setAutoAction(g *Game, roomUserTopic, msg string) {
evt := AutoActionEvent{Message: msg}
- PokerPubSub.Pub(roomUserTopic, evt)
+ PubSub.Pub(roomUserTopic, evt)
g.ongoing.autoActionEvent.Set(evt)
}
@@ -752,7 +752,7 @@ type autoAction struct {
evt playerEvent
}
-func foldPlayer(g *PokerGame, p *PokerPlayer) {
+func foldPlayer(g *Game, p *PokerPlayer) {
roomTopic := g.roomID.Topic()
p.folded.Store(true)
var firstCardIdx, secondCardIdx int
@@ -762,12 +762,12 @@ func foldPlayer(g *PokerGame, p *PokerPlayer) {
})
evt1 := PokerEvent{ID: "card" + itoa(firstCardIdx), Name: "", Idx: firstCardIdx, Top: BurnStackY, Left: BurnStackX, Angle: "0deg", Reveal: false}
evt2 := PokerEvent{ID: "card" + itoa(secondCardIdx), Name: "", Idx: secondCardIdx, Top: BurnStackY, Left: BurnStackX, Angle: "0deg", Reveal: false}
- PokerPubSub.Pub(roomTopic, evt1)
- PokerPubSub.Pub(roomTopic, evt2)
+ PubSub.Pub(roomTopic, evt1)
+ PubSub.Pub(roomTopic, evt2)
g.ongoing.events.Append(evt1, evt2)
}
-func doUnsit(g *PokerGame, p *PokerPlayer, playerAlive *int) int {
+func doUnsit(g *Game, p *PokerPlayer, playerAlive *int) int {
*playerAlive = g.ongoing.countAlivePlayers()
if *playerAlive == 1 {
p.countChancesToAction--
@@ -776,7 +776,7 @@ func doUnsit(g *PokerGame, p *PokerPlayer, playerAlive *int) int {
return continueGetPlayerEventLoop
}
-func doTimeout(g *PokerGame, p *PokerPlayer, playerAlive *int) int {
+func doTimeout(g *Game, p *PokerPlayer, playerAlive *int) int {
pUsername := p.username
if p.GetBet() < g.ongoing.MinBet.Get() {
foldPlayer(g, p)
@@ -795,11 +795,11 @@ func doTimeout(g *PokerGame, p *PokerPlayer, playerAlive *int) int {
return breakGetPlayerEventLoop
}
-func doCheck(g *PokerGame, p *PokerPlayer) int {
+func doCheck(g *Game, p *PokerPlayer) int {
minBet := g.ongoing.MinBet.Get()
if p.GetBet() < minBet {
msg := fmt.Sprintf("Need to bet %d", minBet-p.GetBet())
- PokerPubSub.Pub(g.roomID.UserTopic(p.userID), NewErrorMsgEvent(msg))
+ PubSub.Pub(g.roomID.UserTopic(p.userID), NewErrorMsgEvent(msg))
return continueGetPlayerEventLoop
}
p.hasChecked = true
@@ -808,11 +808,11 @@ func doCheck(g *PokerGame, p *PokerPlayer) int {
return doNothing
}
-func doFold(g *PokerGame, p *PokerPlayer, playerAlive *int) int {
+func doFold(g *Game, p *PokerPlayer, playerAlive *int) int {
roomUserTopic := g.roomID.UserTopic(p.userID)
if p.GetBet() == g.ongoing.MinBet.Get() {
msg := fmt.Sprintf("Cannot fold if there is no bet; check")
- PokerPubSub.Pub(roomUserTopic, NewErrorMsgEvent(msg))
+ PubSub.Pub(roomUserTopic, NewErrorMsgEvent(msg))
return doCheck(g, p)
}
foldPlayer(g, p)
@@ -821,13 +821,13 @@ func doFold(g *PokerGame, p *PokerPlayer, playerAlive *int) int {
*playerAlive--
if *playerAlive == 1 {
- PokerPubSub.Pub(roomUserTopic, NewErrorMsgEvent(""))
+ PubSub.Pub(roomUserTopic, NewErrorMsgEvent(""))
return breakRoundIsSettledLoop
}
return doNothing
}
-func doCall(g *PokerGame, p *PokerPlayer,
+func doCall(g *Game, p *PokerPlayer,
newlyAllInPlayers *[]*PokerPlayer, lastBetPlayerIdx *int, playerToPlayIdx int) int {
pUsername := p.username
bet := utils.MinInt(g.ongoing.MinBet.Get()-p.GetBet(), p.getCash())
@@ -844,14 +844,14 @@ func doCall(g *PokerGame, p *PokerPlayer,
return doNothing
}
-func doAllIn(g *PokerGame, p *PokerPlayer,
+func doAllIn(g *Game, p *PokerPlayer,
newlyAllInPlayers *[]*PokerPlayer, lastBetPlayerIdx *int, playerToPlayIdx int) int {
bet := p.getCash()
minBet := g.ongoing.MinBet.Get()
if (p.GetBet() + bet) > minBet {
*lastBetPlayerIdx = playerToPlayIdx
g.ongoing.MinRaise.Set(bet)
- PokerPubSub.Pub(g.roomID.Topic(), PokerMinRaiseUpdatedEvent{MinRaise: bet})
+ PubSub.Pub(g.roomID.Topic(), PokerMinRaiseUpdatedEvent{MinRaise: bet})
}
g.ongoing.MinBet.Set(utils.MaxInt(p.GetBet()+bet, minBet))
p.doBetAndNotif(g.db, g.pokerTableID, bet, g.roomID.Topic())
@@ -864,13 +864,13 @@ func doAllIn(g *PokerGame, p *PokerPlayer,
return doNothing
}
-func doRaise(g *PokerGame, p *PokerPlayer,
+func doRaise(g *Game, p *PokerPlayer,
newlyAllInPlayers *[]*PokerPlayer, lastBetPlayerIdx *int, playerToPlayIdx int, evt playerEvent) int {
evt.Bet = g.ongoing.MinRaise.Get()
return doBet(g, p, newlyAllInPlayers, lastBetPlayerIdx, playerToPlayIdx, evt)
}
-func doBet(g *PokerGame, p *PokerPlayer,
+func doBet(g *Game, p *PokerPlayer,
newlyAllInPlayers *[]*PokerPlayer, lastBetPlayerIdx *int, playerToPlayIdx int, evt playerEvent) int {
roomTopic := g.roomID.Topic()
roomUserTopic := g.roomID.UserTopic(p.userID)
@@ -887,11 +887,11 @@ func doBet(g *PokerGame, p *PokerPlayer,
// Ensure the player cannot bet below the table minimum bet (amount of the big blind)
if evt.Bet < minRaise {
msg := fmt.Sprintf("%s (%d) is too low. Must %s at least %d", betLbl, evt.Bet, betLbl, minRaise)
- PokerPubSub.Pub(roomUserTopic, NewErrorMsgEvent(msg))
+ PubSub.Pub(roomUserTopic, NewErrorMsgEvent(msg))
return continueGetPlayerEventLoop
}
*lastBetPlayerIdx = playerToPlayIdx
- PokerPubSub.Pub(g.roomID.Topic(), PokerMinRaiseUpdatedEvent{MinRaise: evt.Bet})
+ PubSub.Pub(g.roomID.Topic(), PokerMinRaiseUpdatedEvent{MinRaise: evt.Bet})
g.ongoing.MinRaise.Set(evt.Bet)
g.ongoing.MinBet.Set(playerTotalBet)
@@ -907,7 +907,7 @@ func doBet(g *PokerGame, p *PokerPlayer,
return doNothing
}
-func handleAutoActionReceived(g *PokerGame, autoCache map[database.UserID]autoAction, evt playerEvent) int {
+func handleAutoActionReceived(g *Game, autoCache map[database.UserID]autoAction, evt playerEvent) int {
roomUserTopic := g.roomID.UserTopic(evt.UserID)
autoActionVal := autoCache[evt.UserID]
if evt.Fold && autoActionVal.action == FoldAction ||
@@ -935,7 +935,7 @@ func handleAutoActionReceived(g *PokerGame, autoCache map[database.UserID]autoAc
return continueGetPlayerEventLoop
}
-func applyAutoAction(g *PokerGame, p *PokerPlayer,
+func applyAutoAction(g *Game, p *PokerPlayer,
newlyAllInPlayers *[]*PokerPlayer,
lastBetPlayerIdx, playerAlive *int, playerToPlayIdx int, autoAction autoAction,
autoCache map[database.UserID]autoAction) (actionResult int) {
@@ -951,7 +951,7 @@ func applyAutoAction(g *PokerGame, p *PokerPlayer,
return actionResult
}
-func handlePlayerActionEvent(g *PokerGame, p *PokerPlayer,
+func handlePlayerActionEvent(g *Game, p *PokerPlayer,
newlyAllInPlayers *[]*PokerPlayer,
lastBetPlayerIdx, playerAlive *int, playerToPlayIdx int, evt playerEvent) (actionResult int) {
@@ -975,12 +975,12 @@ func handlePlayerActionEvent(g *PokerGame, p *PokerPlayer,
}
// Return either or not the game ended because only 1 player left playing (or none)
-func execBettingRound(g *PokerGame, skip int, minBet database.PokerChip) bool {
+func execBettingRound(g *Game, skip int, minBet database.PokerChip) bool {
roomID := g.roomID
roomTopic := roomID.Topic()
g.ongoing.MinBet.Set(minBet)
g.ongoing.MinRaise.Set(g.PokerTableMinBet)
- PokerPubSub.Pub(roomTopic, PokerMinRaiseUpdatedEvent{MinRaise: g.PokerTableMinBet})
+ PubSub.Pub(roomTopic, PokerMinRaiseUpdatedEvent{MinRaise: g.PokerTableMinBet})
db := g.db
ongoing := g.ongoing
_, dealerIdx := ongoing.getPlayerBySeatIdx(int(g.dealerSeatIdx.Load()))
@@ -995,7 +995,7 @@ func execBettingRound(g *PokerGame, skip int, minBet database.PokerChip) bool {
p.status.Set("")
}
}
- PokerPubSub.Pub(roomTopic, RedrawSeatsEvent{})
+ PubSub.Pub(roomTopic, RedrawSeatsEvent{})
playerAlive := ongoing.countAlivePlayers()
@@ -1028,10 +1028,10 @@ RoundIsSettledLoop:
minBet = g.ongoing.MinBet.Get()
- PokerPubSub.Pub(roomUserTopic, RefreshButtonsEvent{})
+ PubSub.Pub(roomUserTopic, RefreshButtonsEvent{})
setWaitTurn(g, p.seatIdx)
- PokerPubSub.Pub(roomUserTopic, PokerYourTurnEvent{})
+ PubSub.Pub(roomUserTopic, PokerYourTurnEvent{})
// Maximum time allowed for the player to send his action
waitCh := time.After(MaxUserCountdown * time.Second)
@@ -1073,8 +1073,8 @@ RoundIsSettledLoop:
case breakRoundIsSettledLoop:
break RoundIsSettledLoop
}
- PokerPubSub.Pub(roomUserTopic, NewErrorMsgEvent(""))
- PokerPubSub.Pub(roomTopic, RedrawSeatsEvent{})
+ PubSub.Pub(roomUserTopic, NewErrorMsgEvent(""))
+ PubSub.Pub(roomTopic, RedrawSeatsEvent{})
break GetPlayerEventLoop
} // End of repeat until we get an event from the player we're interested in
} // End of repeat until all players have played
@@ -1087,7 +1087,7 @@ RoundIsSettledLoop:
RoundIsSettled:
setAutoAction(g, roomTopic, "")
- PokerPubSub.Pub(roomTopic, NewErrorMsgEvent(""))
+ PubSub.Pub(roomTopic, NewErrorMsgEvent(""))
g.newLogEvent(fmt.Sprintf("--"))
setWaitTurn(g, -1)
@@ -1106,7 +1106,7 @@ RoundIsSettled:
// Transfer players bets into the main pot
mainPot += resetPlayersBet(ongoing)
- PokerPubSub.Pub(roomTopic, PokerMainPotUpdatedEvent{MainPot: mainPot})
+ PubSub.Pub(roomTopic, PokerMainPotUpdatedEvent{MainPot: mainPot})
ongoing.setMainPot(mainPot)
g.ongoing.hasBet.Set(false)
@@ -1134,7 +1134,7 @@ func refundUncalledBet(db *database.DkfDB, ongoing *ongoingGame, pokerTableID in
diff := firstPlayer.GetBet() - secondPlayer.GetBet()
if diff > 0 {
firstPlayer.refundPartialBet(db, pokerTableID, diff)
- PokerPubSub.Pub(roomTopic, RedrawSeatsEvent{})
+ PubSub.Pub(roomTopic, RedrawSeatsEvent{})
time.Sleep(animationTime)
}
}
@@ -1157,7 +1157,7 @@ var dealerTokenPos = [][]int{
{363, 123},
}
-func burnCard(g *PokerGame, idx, burnIdx *int) {
+func burnCard(g *Game, idx, burnIdx *int) {
ongoing := g.ongoing
*idx++
evt := PokerEvent{
@@ -1167,12 +1167,12 @@ func burnCard(g *PokerGame, idx, burnIdx *int) {
Top: BurnStackY + (*burnIdx * 2),
Left: BurnStackX + (*burnIdx * 4),
}
- PokerPubSub.Pub(g.roomID.Topic(), evt)
+ PubSub.Pub(g.roomID.Topic(), evt)
ongoing.events.Append(evt)
*burnIdx++
}
-func dealCard(g *PokerGame, idx *int, dealCardIdx int) {
+func dealCard(g *Game, idx *int, dealCardIdx int) {
ongoing := g.ongoing
card := ongoing.deck[*idx]
*idx++
@@ -1184,12 +1184,12 @@ func dealCard(g *PokerGame, idx *int, dealCardIdx int) {
Left: DealX + (dealCardIdx * DealSpacing),
Reveal: true,
}
- PokerPubSub.Pub(g.roomID.Topic(), evt)
+ PubSub.Pub(g.roomID.Topic(), evt)
ongoing.events.Append(evt)
ongoing.communityCards = append(ongoing.communityCards, card)
}
-func dealPlayersCards(g *PokerGame, seats []Seat, idx *int) {
+func dealPlayersCards(g *Game, seats []Seat, idx *int) {
roomID := g.roomID
ongoing := g.ongoing
roomTopic := roomID.Topic()
@@ -1230,8 +1230,8 @@ func dealPlayersCards(g *PokerGame, seats []Seat, idx *int) {
evt := PokerEvent{ID: "card" + itoa(*idx), Name: "", Idx: *idx, Top: top, Left: left, Angle: seatData.Angle}
evt1 := PokerEvent{ID: "card" + itoa(*idx), Name: card, Idx: *idx, Top: seatData1.Top, Left: seatData1.Left, Reveal: true, UserID: pUserID}
- PokerPubSub.Pub(roomTopic, evt)
- PokerPubSub.Pub(roomUserTopic, evt1)
+ PubSub.Pub(roomTopic, evt)
+ PubSub.Pub(roomUserTopic, evt1)
p.cards.With(func(pCards *[]playerCard) {
*pCards = append(*pCards, playerCard{idx: *idx, name: card})
@@ -1252,7 +1252,7 @@ func computeAllInMaxGain(ongoing *ongoingGame, newlyAllInPlayers []*PokerPlayer,
}
}
-func dealerThread(g *PokerGame, eligiblePlayers seatedPlayers) {
+func dealerThread(g *Game, eligiblePlayers seatedPlayers) {
eligiblePlayers.resetStatuses()
g.ongoing = newOngoing(eligiblePlayers)
@@ -1277,7 +1277,7 @@ func dealerThread(g *PokerGame, eligiblePlayers seatedPlayers) {
sbIdx, bbIdx := g.incrDealerIdx()
- PokerPubSub.Pub(roomTopic, GameStartedEvent{DealerSeatIdx: int(g.dealerSeatIdx.Load())})
+ PubSub.Pub(roomTopic, GameStartedEvent{DealerSeatIdx: int(g.dealerSeatIdx.Load())})
g.newLogEvent(fmt.Sprintf("-- New game --"))
applySmallBlindBet(g, bigBlindBet, sbIdx)
@@ -1291,7 +1291,7 @@ func dealerThread(g *PokerGame, eligiblePlayers seatedPlayers) {
// Deal players cards
dealPlayersCards(g, seats, &idx)
- PokerPubSub.Pub(roomTopic, RefreshButtonsEvent{})
+ PubSub.Pub(roomTopic, RefreshButtonsEvent{})
// Wait for players to bet/call/check/fold...
time.Sleep(animationTime)
@@ -1358,7 +1358,7 @@ END:
ongoing.setMainPot(0)
- PokerPubSub.Pub(roomTopic, GameIsDoneEvent{Winner: winnersStr, WinnerHand: winnerHand})
+ PubSub.Pub(roomTopic, GameIsDoneEvent{Winner: winnersStr, WinnerHand: winnerHand})
g.newLogEvent(fmt.Sprintf("-- Game ended --"))
// Wait a minimum of X seconds before allowing a new game
@@ -1367,7 +1367,7 @@ END:
// Auto unsit inactive players
autoUnsitInactivePlayers(g)
- PokerPubSub.Pub(roomTopic, GameIsOverEvent{})
+ PubSub.Pub(roomTopic, GameIsOverEvent{})
g.isGameStarted.Store(false)
}
@@ -1385,21 +1385,21 @@ func (g *ongoingGame) gameStr() string {
return out
}
-func applySmallBlindBet(g *PokerGame, bigBlindBet database.PokerChip, sbIdx int) {
+func applySmallBlindBet(g *Game, bigBlindBet database.PokerChip, sbIdx int) {
applyBlindBet(g, sbIdx, bigBlindBet/2, "small blind")
}
-func applyBigBlindBet(g *PokerGame, bigBlindBet database.PokerChip, bbIdx int) {
+func applyBigBlindBet(g *Game, bigBlindBet database.PokerChip, bbIdx int) {
applyBlindBet(g, bbIdx, bigBlindBet, "big blind")
}
-func applyBlindBet(g *PokerGame, playerIdx int, bet database.PokerChip, name string) {
+func applyBlindBet(g *Game, playerIdx int, bet database.PokerChip, name string) {
p := g.ongoing.players[playerIdx]
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) {
+func autoUnsitInactivePlayers(g *Game) {
ongoing := g.ongoing
pokerTableMinBet := g.PokerTableMinBet
g.Players.With(func(gPlayers *seatedPlayers) {
@@ -1436,7 +1436,7 @@ const (
TableType2
)
-func applyGains(g *PokerGame, playersGain []PlayerGain, mainPot, rake database.PokerChip) (winnersStr, winnerHand string) {
+func applyGains(g *Game, playersGain []PlayerGain, mainPot, rake database.PokerChip) (winnersStr, winnerHand string) {
ongoing := g.ongoing
pokerTableID := g.pokerTableID
nbPlayersGain := len(playersGain)
@@ -1605,38 +1605,38 @@ func cardToPokerCard(name string) string {
return r.Replace(name)
}
-func (g *PokerGame) OngoingPlayer(userID database.UserID) *PokerPlayer {
+func (g *Game) OngoingPlayer(userID database.UserID) *PokerPlayer {
if g.ongoing != nil {
return g.ongoing.players.get(userID)
}
return nil
}
-func (g *PokerGame) Deal(userID database.UserID) {
+func (g *Game) Deal(userID database.UserID) {
roomTopic := g.roomID.Topic()
roomUserTopic := g.roomID.UserTopic(userID)
eligiblePlayers := g.getEligibles()
if !g.IsSeated(userID) {
- PokerPubSub.Pub(roomUserTopic, NewErrorMsgEvent("you need to be seated"))
+ PubSub.Pub(roomUserTopic, NewErrorMsgEvent("you need to be seated"))
return
}
if len(eligiblePlayers) < 2 {
- PokerPubSub.Pub(roomUserTopic, NewErrorMsgEvent("need at least 2 players"))
+ PubSub.Pub(roomUserTopic, NewErrorMsgEvent("need at least 2 players"))
return
}
if !g.isGameStarted.CompareAndSwap(false, true) {
- PokerPubSub.Pub(roomUserTopic, NewErrorMsgEvent("game already ongoing"))
+ PubSub.Pub(roomUserTopic, NewErrorMsgEvent("game already ongoing"))
return
}
- PokerPubSub.Pub(roomUserTopic, NewErrorMsgEvent(""))
- PokerPubSub.Pub(roomTopic, ResetCardsEvent{})
+ PubSub.Pub(roomUserTopic, NewErrorMsgEvent(""))
+ PubSub.Pub(roomTopic, ResetCardsEvent{})
time.Sleep(animationTime)
go dealerThread(g, eligiblePlayers)
}
-func (g *PokerGame) CountSeated() (count int) {
+func (g *Game) CountSeated() (count int) {
g.Players.RWith(func(gPlayers seatedPlayers) {
for _, p := range gPlayers {
if p != nil {
@@ -1647,7 +1647,7 @@ func (g *PokerGame) CountSeated() (count int) {
return
}
-var PokerPubSub = pubsub.NewPubSub[any]()
+var PubSub = pubsub.NewPubSub[any]()
func Refund(db *database.DkfDB) {
accounts, _ := db.GetPositivePokerTableAccounts()
@@ -1676,7 +1676,7 @@ func colorForCard(name string) string {
return utils.Ternary(isHeartOrDiamond(name), "red", "black")
}
-func buildDealerTokenHtml(g *PokerGame) (html string) {
+func buildDealerTokenHtml(g *Game) (html string) {
html += `<div id="dealerToken"><div class="inner"></div></div>`
if g.ongoing != nil {
pos := dealerTokenPos[g.dealerSeatIdx.Load()]
@@ -1687,7 +1687,7 @@ func buildDealerTokenHtml(g *PokerGame) (html string) {
return
}
-func BuildPayloadHtml(g *PokerGame, authUser *database.User, payload any) (html string) {
+func BuildPayloadHtml(g *Game, authUser *database.User, payload any) (html string) {
switch evt := payload.(type) {
case GameStartedEvent:
html += drawGameStartedEvent(evt, authUser)
@@ -1726,7 +1726,7 @@ func BuildPayloadHtml(g *PokerGame, authUser *database.User, payload any) (html
return
}
-func buildGameDiv(g *PokerGame, authUser *database.User) (html string) {
+func buildGameDiv(g *Game, authUser *database.User) (html string) {
roomID := g.roomID
html += `<div id="game">`
html += `<div id="table"><div class="inner"></div><div class="cards-outline"></div></div>`
@@ -1742,7 +1742,7 @@ func buildGameDiv(g *PokerGame, authUser *database.User) (html string) {
return
}
-func BuildBaseHtml(g *PokerGame, authUser *database.User, chatRoomSlug string) (html string) {
+func BuildBaseHtml(g *Game, authUser *database.User, chatRoomSlug string) (html string) {
ongoing := g.ongoing
roomID := g.roomID
html += hutils.HtmlCssReset
@@ -1803,7 +1803,7 @@ func buildCardsHtml() (html string) {
return
}
-func buildMainPotHtml(g *PokerGame) string {
+func buildMainPotHtml(g *Game) string {
ongoing := g.ongoing
html := `<div id="mainPot"></div>`
mainPot := uint64(0)
@@ -1814,7 +1814,7 @@ func buildMainPotHtml(g *PokerGame) string {
return html
}
-func buildMinRaiseHtml(g *PokerGame) string {
+func buildMinRaiseHtml(g *Game) string {
ongoing := g.ongoing
html := `<div id="minRaise"></div>`
minRaise := uint64(0)
@@ -1865,7 +1865,7 @@ func simpleTmpl(htmlTmpl string, data any) string {
return buf.String()
}
-func buildSeatsHtml(g *PokerGame, authUser *database.User) (html string) {
+func buildSeatsHtml(g *Game, authUser *database.User) (html string) {
g.Players.RWith(func(gPlayers seatedPlayers) {
for i := range gPlayers {
html += `<div id="seat` + itoa(i+1) + `Pot" class="seatPot"></div>`
@@ -1887,7 +1887,7 @@ func buildSeatsHtml(g *PokerGame, authUser *database.User) (html string) {
return html
}
-func drawSeatsStyle(authUser *database.User, g *PokerGame) string {
+func drawSeatsStyle(authUser *database.User, g *Game) string {
ongoing := g.ongoing
html := "<style>"
seated := g.isSeated(authUser.ID)
@@ -1975,7 +1975,7 @@ func buildWinnerHtml() string {
return html
}
-func drawGameIsDoneHtml(g *PokerGame, evt GameIsDoneEvent) (html string) {
+func drawGameIsDoneHtml(g *Game, evt GameIsDoneEvent) (html string) {
html += `<style>`
g.Players.RWith(func(gPlayers seatedPlayers) {
for i, p := range gPlayers {
@@ -1989,7 +1989,7 @@ func drawGameIsDoneHtml(g *PokerGame, evt GameIsDoneEvent) (html string) {
return
}
-func drawGameIsOverHtml(g *PokerGame) (html string) {
+func drawGameIsOverHtml(g *Game) (html string) {
html += `<style>`
html += `#dealBtn { visibility: visible; }`
html += "</style>"