dkforest

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

commit 85bb648171804ce55fd279902063b500e5728850
parent 41767f3ad4271933923f3010fae8b250a7b183ef
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Sat,  9 Dec 2023 04:49:25 -0500

cleanup

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

diff --git a/pkg/web/handlers/poker/poker.go b/pkg/web/handlers/poker/poker.go @@ -107,10 +107,9 @@ func (p *PokerStandingPlayer) getDisplayCash(g *PokerGame) int { } type PokerPlayer struct { - Username string + *PokerStandingPlayer RoundTotalBet int Bet int - Cash int AllInMaxGain int SeatIdx int // 0 indexed Cards []PlayerCard @@ -299,12 +298,17 @@ func (g *PokerGame) incrDealerIdx() { g.bigBlindIdx = (int(dealerIdx1) + 2) % nbPlayers } -func (g *PokerGame) UnSitPlayer(authUser *database.User, roomID string) error { +func (g *PokerGame) UnSitPlayer(db *database.DkfDB, authUser *database.User, roomID string) error { roomTopic := "room_" + roomID found := false g.PlayersMtx.Lock() for i, p := range g.Players { if p != nil && p.Username == authUser.Username.String() { + + fmt.Println("UNSIT ????", p.Cash) + authUser.ChipsTest += p.Cash + authUser.DoSave(db) + g.Players[i] = nil if g.Ongoing != nil { if player := g.Ongoing.GetPlayer(p.Username); player != nil { @@ -335,7 +339,7 @@ func (g *PokerGame) UnSitPlayer(authUser *database.User, roomID string) error { return nil } -func (g *PokerGame) SitPlayer(authUser *database.User, pos int) error { +func (g *PokerGame) SitPlayer(db *database.DkfDB, authUser *database.User, pos int) error { g.PlayersMtx.Lock() defer g.PlayersMtx.Unlock() for _, p := range g.Players { @@ -346,7 +350,11 @@ func (g *PokerGame) SitPlayer(authUser *database.User, pos int) error { if g.Players[pos] != nil { return errors.New("seat already taken") } - g.Players[pos] = &PokerStandingPlayer{Username: authUser.Username.String(), Cash: authUser.ChipsTest} + chips := utils.MinInt(authUser.ChipsTest, 2000) + authUser.ChipsTest -= chips + authUser.DoSave(db) + fmt.Println("SIT ???", chips) + g.Players[pos] = &PokerStandingPlayer{Username: authUser.Username.String(), Cash: chips} return nil } @@ -363,7 +371,7 @@ func NewOngoing(g *PokerGame) *Ongoing { g.PlayersMtx.RLock() for idx, p := range g.Players { if p != nil && p.Cash >= BigBlindBet { - players = append(players, &PokerPlayer{Username: p.Username, Cash: p.Cash, SeatIdx: idx}) + players = append(players, &PokerPlayer{PokerStandingPlayer: p, SeatIdx: idx}) } } g.PlayersMtx.RUnlock() @@ -839,24 +847,6 @@ END: g.Ongoing.MainPot.Store(0) - // Sync "ongoing players" with "room players" objects - g.PlayersMtx.RLock() - for idx := range g.Players { - if g.Players[idx] != nil { - op := g.Ongoing.GetPlayer(g.Players[idx].Username) - if op == nil { - continue - } - g.Players[idx].Cash = op.Cash - // TODO: need to figure out how to prevent double spend - if user, err := db.GetUserByUsername(database.Username(op.Username)); err == nil { - user.ChipsTest = g.Players[idx].Cash - user.DoSave(db) - } - } - } - g.PlayersMtx.RUnlock() - PokerPubSub.Pub(roomTopic, GameIsDoneEvent{Winner: winnersStr, WinnerHand: winnerHand}) newLogEvent(g, roomLogsTopic, fmt.Sprintf("-- Game ended --")) @@ -1125,6 +1115,7 @@ func PokerDealHandler(c echo.Context) error { } func PokerUnSitHandler(c echo.Context) error { + db := c.Get("database").(*database.DkfDB) authUser := c.Get("authUser").(*database.User) roomID := c.Param("roomID") roomLogsTopic := "room_" + roomID + "_logs" @@ -1133,7 +1124,7 @@ func PokerUnSitHandler(c echo.Context) error { return c.NoContent(http.StatusNotFound) } if c.Request().Method == http.MethodPost { - if err := g.UnSitPlayer(authUser, roomID); err == nil { + if err := g.UnSitPlayer(db, authUser, roomID); err == nil { myTopic := "room_" + roomID PokerPubSub.Pub(myTopic, PokerSeatLeftEvent{}) newLogEvent(g, roomLogsTopic, fmt.Sprintf("%s un-sit", authUser.Username.String())) @@ -1145,6 +1136,7 @@ func PokerUnSitHandler(c echo.Context) error { } func PokerSitHandler(c echo.Context) error { + db := c.Get("database").(*database.DkfDB) html := cssReset + `<form method="post"><button>Sit</button></form>` authUser := c.Get("authUser").(*database.User) pos, _ := strconv.Atoi(c.Param("pos")) @@ -1160,7 +1152,7 @@ func PokerSitHandler(c echo.Context) error { return c.HTML(http.StatusOK, html) } if c.Request().Method == http.MethodPost { - if err := g.SitPlayer(authUser, pos); err != nil { + if err := g.SitPlayer(db, authUser, pos); err != nil { fmt.Println(err) return c.HTML(http.StatusOK, html) }