dkforest

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

commit cc487e6f940be6408ba911cb42767fd452763e9d
parent dd81bbaa420a44650943161b70e4a786ea7311bc
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Thu, 21 Dec 2023 12:29:23 -0500

cleanup

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

diff --git a/pkg/web/handlers/poker/poker.go b/pkg/web/handlers/poker/poker.go @@ -92,7 +92,7 @@ func (p *Poker) newGame(db *database.DkfDB, roomID RoomID, pokerTableID int64, PokerTableMinBet: pokerTableMinBet, pokerTableIsTest: pokerTableIsTest, playersEventCh: make(chan playerEvent), - Players: rwmtx.New(make([]*seatedPlayer, NbPlayers)), + Players: rwmtx.New(make(seatedPlayers, NbPlayers)), dealerSeatIdx: atomic.Int32{}, } g.dealerSeatIdx.Store(-1) @@ -130,7 +130,7 @@ var PokerInstance = newPoker() type ongoingGame struct { logEvents rwmtx.RWMtx[[]LogEvent] deck []string - players []*pokerPlayer + players pokerPlayers events rwmtx.RWMtx[[]PokerEvent] waitTurnEvent rwmtx.RWMtx[PokerWaitTurnEvent] autoActionEvent rwmtx.RWMtx[AutoActionEvent] @@ -139,6 +139,10 @@ type ongoingGame struct { communityCards []string } +type pokerPlayers []*pokerPlayer + +type seatedPlayers []*seatedPlayer + type seatedPlayer struct { seatIdx int userID database.UserID @@ -226,7 +230,7 @@ type playerCard struct { } type PokerGame struct { - Players rwmtx.RWMtx[[]*seatedPlayer] + Players rwmtx.RWMtx[seatedPlayers] ongoing *ongoingGame db *database.DkfDB roomID RoomID @@ -410,19 +414,19 @@ func (g *ongoingGame) countAlivePlayers() (playerAlive int) { return } -func (g *ongoingGame) getPlayer(userID database.UserID) *pokerPlayer { - for _, p := range g.players { - if p.userID == userID { - return p +func (p pokerPlayers) get(userID database.UserID) *pokerPlayer { + for _, player := range p { + if player.userID == userID { + return player } } return nil } -func getPlayer(players []*seatedPlayer, userID database.UserID) (out *seatedPlayer) { - for _, p := range players { - if p != nil && p.userID == userID { - return p +func (p seatedPlayers) get(userID database.UserID) (out *seatedPlayer) { + for _, player := range p { + if player != nil && player.userID == userID { + return player } } return @@ -435,12 +439,12 @@ func (g *PokerGame) IsSeated(userID database.UserID) bool { } func (g *PokerGame) isSeated(userID database.UserID) (out bool) { - g.Players.RWith(func(gPlayers []*seatedPlayer) { out = isSeated(gPlayers, userID) }) + g.Players.RWith(func(gPlayers seatedPlayers) { out = isSeated(gPlayers, userID) }) return } -func isSeated(players []*seatedPlayer, userID database.UserID) bool { - return getPlayer(players, userID) != nil +func isSeated(players seatedPlayers, userID database.UserID) bool { + return players.get(userID) != nil } func isRoundSettled(players []*pokerPlayer) bool { @@ -486,7 +490,7 @@ func (g *PokerGame) incrDealerIdx() (smallBlindIdx, bigBlindIdx int) { } func (g *PokerGame) Sit(userID database.UserID, username database.Username, pos int) { - if err := g.Players.WithE(func(gPlayers *[]*seatedPlayer) error { + if err := g.Players.WithE(func(gPlayers *seatedPlayers) error { pokerTable, err := g.db.GetPokerTableBySlug(g.roomID.String()) if err != nil { return errors.New("failed to get poker table") @@ -520,18 +524,18 @@ func (g *PokerGame) Sit(userID database.UserID, username database.Username, pos } func (g *PokerGame) UnSit(userID database.UserID) { - g.Players.With(func(gPlayers *[]*seatedPlayer) { - if p := getPlayer(*gPlayers, userID); p != nil { + g.Players.With(func(gPlayers *seatedPlayers) { + if p := gPlayers.get(userID); p != nil { g.unSitPlayer(gPlayers, p) g.newLogEvent(fmt.Sprintf("%s un-sit", p.username.String())) } }) } -func (g *PokerGame) unSitPlayer(gPlayers *[]*seatedPlayer, seatedPlayer *seatedPlayer) { +func (g *PokerGame) unSitPlayer(gPlayers *seatedPlayers, seatedPlayer *seatedPlayer) { ongoing := g.ongoing if ongoing != nil { - if player := ongoing.getPlayer(seatedPlayer.userID); player != nil { + if player := ongoing.players.get(seatedPlayer.userID); player != nil { g.sendUnsitPlayerEvent(player.userID) player.unsit.Store(true) player.folded.Store(true) @@ -562,7 +566,7 @@ func generateDeck() []string { func newOngoing(g *PokerGame) *ongoingGame { players := make([]*pokerPlayer, 0) - g.Players.RWith(func(gPlayers []*seatedPlayer) { + g.Players.RWith(func(gPlayers seatedPlayers) { for _, p := range gPlayers { if p.isEligible(g.PokerTableMinBet) { players = append(players, &pokerPlayer{seatedPlayer: p}) @@ -1276,7 +1280,7 @@ func applyBlindBet(g *PokerGame, playerIdx int, bet database.PokerChip, name str func autoUnsitInactivePlayers(g *PokerGame) { ongoing := g.ongoing pokerTableMinBet := g.PokerTableMinBet - g.Players.With(func(gPlayers *[]*seatedPlayer) { + g.Players.With(func(gPlayers *seatedPlayers) { for _, p := range *gPlayers { if playerShouldBeBooted(p, ongoing, pokerTableMinBet) { g.unSitPlayer(gPlayers, p) @@ -1298,7 +1302,7 @@ func playerShouldBeBooted(p *seatedPlayer, ongoing *ongoingGame, pokerTableMinBe if p.lastActionTS.Before(ongoing.createdAt) { // If the player was playing the game, must be booted if he had the chance to make actions and did not. // If the player was not playing the game, must be booted if he's not eligible to play the next one. - op := ongoing.getPlayer(p.userID) + op := ongoing.players.get(p.userID) playerShallBeBooted = (op != nil && op.countChancesToAction > 0) || (op == nil && !pIsEligible) } @@ -1499,7 +1503,7 @@ func (g *PokerGame) Deal(roomID RoomID, userID database.UserID) { } func (g *PokerGame) countEligibleSeated() (count int) { - g.Players.RWith(func(gPlayers []*seatedPlayer) { + g.Players.RWith(func(gPlayers seatedPlayers) { for _, p := range gPlayers { if p.isEligible(g.PokerTableMinBet) { count++ @@ -1510,7 +1514,7 @@ func (g *PokerGame) countEligibleSeated() (count int) { } func (g *PokerGame) CountSeated() (count int) { - g.Players.RWith(func(gPlayers []*seatedPlayer) { + g.Players.RWith(func(gPlayers seatedPlayers) { for _, p := range gPlayers { if p != nil { count++ @@ -1729,7 +1733,7 @@ func simpleTmpl(htmlTmpl string, data any) string { } func buildSeatsHtml(g *PokerGame, authUser *database.User) (html string) { - g.Players.RWith(func(gPlayers []*seatedPlayer) { + g.Players.RWith(func(gPlayers seatedPlayers) { for i := range gPlayers { html += `<div id="seat` + itoa(i+1) + `Pot" class="seatPot"></div>` } @@ -1752,7 +1756,7 @@ func drawSeatsStyle(authUser *database.User, g *PokerGame) string { ongoing := g.ongoing html := "<style>" seated := g.isSeated(authUser.ID) - g.Players.RWith(func(players []*seatedPlayer) { + g.Players.RWith(func(players seatedPlayers) { for i, p := range players { idxStr := itoa(i + 1) display := utils.Ternary(p != nil || seated, "none", "block") @@ -1766,7 +1770,7 @@ func drawSeatsStyle(authUser *database.User, g *PokerGame) string { html += fmt.Sprintf(`#seat%s .inner:before { content: "%s"; }`, idxStr, pUsername.String()) html += drawSeatCashLabel(idxStr, itoa2(p.getCash())) if ongoing != nil { - if op := ongoing.getPlayer(pUserID); op != nil && op.getBet() > 0 { + if op := ongoing.players.get(pUserID); op != nil && op.getBet() > 0 { html += drawSeatPotLabel(idxStr, itoa2(op.getBet())) } } @@ -1830,7 +1834,7 @@ func buildWinnerHtml() string { func drawGameIsDoneHtml(g *PokerGame, evt GameIsDoneEvent) (html string) { html += `<style>` - g.Players.RWith(func(gPlayers []*seatedPlayer) { + g.Players.RWith(func(gPlayers seatedPlayers) { for i, p := range gPlayers { if p != nil { html += drawSeatCashLabel(itoa(i+1), itoa2(p.getCash()))