commit 85bb648171804ce55fd279902063b500e5728850
parent 41767f3ad4271933923f3010fae8b250a7b183ef
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Sat, 9 Dec 2023 04:49:25 -0500
cleanup
Diffstat:
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)
}