dkforest

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

commit 63e2fd5b0cea949580bda0a28f85aa85c2e937aa
parent f332b7af85ce68baa5e04dd4dd749db71ab9a2f7
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Mon, 18 Dec 2023 15:25:34 -0500

use user id

Diffstat:
Mpkg/web/handlers/handlers.go | 4++--
Mpkg/web/handlers/poker/poker.go | 43++++++++++++++++++++++---------------------
2 files changed, 24 insertions(+), 23 deletions(-)

diff --git a/pkg/web/handlers/handlers.go b/pkg/web/handlers/handlers.go @@ -849,7 +849,7 @@ func PokerHomeHandler(c echo.Context) error { if g := poker.PokerInstance.GetGame(poker.RoomID(pokerTableSlug)); g != nil { g.Players.Lock() defer g.Players.Unlock() - if g.IsSeated2(authUser.Username) { + if g.IsSeated2(authUserID) { return errors.New("cannot buy-in while seated") } } @@ -899,7 +899,7 @@ func PokerHomeHandler(c echo.Context) error { if g := poker.PokerInstance.GetGame(poker.RoomID(pokerTableSlug)); g != nil { g.Players.Lock() defer g.Players.Unlock() - if g.IsSeated2(authUser.Username) { + if g.IsSeated2(authUserID) { return errors.New("cannot cash out while seated") } } diff --git a/pkg/web/handlers/poker/poker.go b/pkg/web/handlers/poker/poker.go @@ -344,35 +344,35 @@ func (g *Ongoing) CountAlivePlayers() (playerAlive int) { return } -func (g *Ongoing) GetPlayer(player database.Username) *PokerPlayer { +func (g *Ongoing) GetPlayer(userID database.UserID) *PokerPlayer { for _, p := range g.Players { - if p.Username == player { + if p.UserID == userID { return p } } return nil } -func getPlayer(players []*SeatedPlayer, username database.Username) (out *SeatedPlayer) { +func getPlayer(players []*SeatedPlayer, userID database.UserID) (out *SeatedPlayer) { for _, p := range players { - if p != nil && p.Username == username { + if p != nil && p.UserID == userID { return p } } return } -func (g *PokerGame) IsSeated(player database.Username) (out bool) { - g.Players.RWith(func(gPlayers *[]*SeatedPlayer) { out = isSeated(*gPlayers, player) }) +func (g *PokerGame) IsSeated(userID database.UserID) (out bool) { + g.Players.RWith(func(gPlayers *[]*SeatedPlayer) { out = isSeated(*gPlayers, userID) }) return } -func (g *PokerGame) IsSeated2(player database.Username) bool { - return isSeated(*g.Players.Val(), player) +func (g *PokerGame) IsSeated2(userID database.UserID) bool { + return isSeated(*g.Players.Val(), userID) } -func isSeated(players []*SeatedPlayer, player database.Username) bool { - return getPlayer(players, player) != nil +func isSeated(players []*SeatedPlayer, userID database.UserID) bool { + return getPlayer(players, userID) != nil } func isRoundSettled(players []*PokerPlayer) bool { @@ -417,16 +417,16 @@ func (g *PokerGame) incrDealerIdx() (smallBlindIdx, bigBlindIdx int) { return } -func (g *PokerGame) UnSitPlayer(username database.Username) error { +func (g *PokerGame) UnSitPlayer(userID database.UserID) error { ongoing := g.Ongoing if ongoing != nil { - if p := ongoing.GetPlayer(username); p != nil { + if p := ongoing.GetPlayer(userID); p != nil { p.Unsit.Store(true) } } err := g.Players.WithE(func(gPlayers *[]*SeatedPlayer) error { - p := getPlayer(*gPlayers, username) + p := getPlayer(*gPlayers, userID) if p == nil { return errors.New("player is not sit") } @@ -439,9 +439,9 @@ func (g *PokerGame) UnSitPlayer(username database.Username) error { func (g *PokerGame) UnSitPlayer1(seatedPlayer *SeatedPlayer) { ongoing := g.Ongoing roomTopic := g.RoomID.Topic() - seatedPlayerUsername := seatedPlayer.Username + seatedPlayerUserID := seatedPlayer.UserID if ongoing != nil { - if player := ongoing.GetPlayer(seatedPlayerUsername); player != nil { + if player := ongoing.GetPlayer(seatedPlayerUserID); player != nil { select { case g.PlayersEventCh <- PlayerEvent{Player: player.Username, Unsit: true}: default: @@ -1144,7 +1144,7 @@ func autoUnsitInactivePlayers(g *PokerGame) { } else 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.Username) + op := ongoing.GetPlayer(p.UserID) playerShallBeBooted = (op != nil && op.countChancesToAction > 0) || (op == nil && !pIsEligible) } @@ -1515,7 +1515,7 @@ func PokerUnSitHandler(c echo.Context) error { return c.NoContent(http.StatusNotFound) } if c.Request().Method == http.MethodPost { - if err := g.UnSitPlayer(authUser.Username); err == nil { + if err := g.UnSitPlayer(authUser.ID); err == nil { PokerPubSub.Pub(roomTopic, PokerSeatLeftEvent{}) g.newLogEvent(fmt.Sprintf("%s un-sit", authUser.Username.String())) } @@ -1555,7 +1555,7 @@ func PokerSitHandler(c echo.Context) error { if tableAccount.Amount < pokerTable.MinBet { return errors.New(fmt.Sprintf("not enough chips to sit. have: %d, need: %d", tableAccount.Amount, pokerTable.MinBet)) } - if isSeated(*gPlayers, authUser.Username) { + if isSeated(*gPlayers, authUser.ID) { return errors.New("player already seated") } if (*gPlayers)[pos] != nil { @@ -1863,7 +1863,7 @@ func buildSeatsHtml(g *PokerGame, authUser *database.User) (html string) { func drawSeatsStyle(authUser *database.User, g *PokerGame) string { ongoing := g.Ongoing html := "<style>" - seated := g.IsSeated(authUser.Username) + seated := g.IsSeated(authUser.ID) g.Players.RWith(func(players *[]*SeatedPlayer) { for i, p := range *players { if p != nil || seated { @@ -1872,14 +1872,15 @@ func drawSeatsStyle(authUser *database.User, g *PokerGame) string { html += `.takeSeat` + itoa(i+1) + ` { display: block; }` } if p != nil { + pUserID := p.UserID pUsername := p.Username - if pUsername == authUser.Username { + if pUserID == authUser.ID { html += `#seat` + itoa(i+1) + ` { border: 2px solid #0d1b8f; }` } html += `#seat` + itoa(i+1) + ` .inner:before { content: "` + pUsername.String() + `"; }` html += `#seat` + itoa(i+1) + `_cash:before { content: "` + itoa2(p.GetCash()) + `"; }` if ongoing != nil { - if op := ongoing.GetPlayer(pUsername); op != nil && op.GetBet() > 0 { + if op := ongoing.GetPlayer(pUserID); op != nil && op.GetBet() > 0 { html += `#seat` + itoa(i+1) + `Pot:before { content: "` + itoa2(op.GetBet()) + `"; }` } }