commit 90caa0462b477c17469206fb1cf09dff27cc4429
parent 89606507485c9b8ccf5321607a21bbdc8a5ce4bf
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Fri, 8 Dec 2023 04:50:00 -0500
cleanup
Diffstat:
1 file changed, 29 insertions(+), 30 deletions(-)
diff --git a/pkg/web/handlers/poker/poker.go b/pkg/web/handlers/poker/poker.go
@@ -329,6 +329,23 @@ func reorderPlayers[T any](players []T, dealerIdx int) (out []T) {
return
}
+func showCards(g *PokerGame, roomTopic string, seats []Seat) {
+ for _, p := range g.Ongoing.Players {
+ if !p.Folded {
+ p.CardsMtx.RLock()
+ firstCard := p.Cards[0]
+ secondCard := p.Cards[1]
+ p.CardsMtx.RUnlock()
+ seatData := seats[p.SeatIdx]
+ 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)
+ g.Ongoing.AddEvent(evt1, evt2)
+ }
+ }
+}
+
// Return either or not the game ended because only 1 player left playing
func waitPlayersActionFn(g *PokerGame, roomID string, skip, minBet int) bool {
roomTopic := "room_" + roomID
@@ -538,6 +555,14 @@ OUTER:
return playerAlive == 1
}
+type Seat struct {
+ Top int
+ Left int
+ Angle string
+ Top2 int
+ Left2 int
+}
+
func dealerThread(db *database.DkfDB, g *PokerGame, roomID string) {
roomTopic := "room_" + roomID
roomLogsTopic := "room_" + roomID + "_logs"
@@ -545,13 +570,6 @@ func dealerThread(db *database.DkfDB, g *PokerGame, roomID string) {
g.incrDealerIdx()
- type Seat struct {
- Top int
- Left int
- Angle string
- Top2 int
- Left2 int
- }
seats := []Seat{
{Top: 50, Left: 600, Top2: 50 + 5, Left2: 600 + 5, Angle: "-90deg"},
{Top: 150, Left: 574, Top2: 150 + 5, Left2: 574 + 3, Angle: "-80deg"},
@@ -654,11 +672,9 @@ func dealerThread(db *database.DkfDB, g *PokerGame, roomID string) {
goto END
}
- // Burn
+ // Flop (3 first cards)
time.Sleep(time.Second)
burnCard()
-
- // Flop (3 first cards)
for i := 1; i <= 3; i++ {
time.Sleep(time.Second)
dealCard()
@@ -670,11 +686,9 @@ func dealerThread(db *database.DkfDB, g *PokerGame, roomID string) {
goto END
}
- // Burn
+ // Turn (4th card)
time.Sleep(time.Second)
burnCard()
-
- // Turn (4th card)
time.Sleep(time.Second)
dealCard()
@@ -684,11 +698,9 @@ func dealerThread(db *database.DkfDB, g *PokerGame, roomID string) {
goto END
}
- // Burn
+ // River (5th card)
time.Sleep(time.Second)
burnCard()
-
- // River (5th card)
time.Sleep(time.Second)
dealCard()
@@ -699,20 +711,7 @@ func dealerThread(db *database.DkfDB, g *PokerGame, roomID string) {
}
// Show cards
- for _, p := range g.Ongoing.Players {
- if !p.Folded {
- p.CardsMtx.RLock()
- firstCard := p.Cards[0]
- secondCard := p.Cards[1]
- p.CardsMtx.RUnlock()
- seatData := seats[p.SeatIdx]
- 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)
- g.Ongoing.AddEvent(evt1, evt2)
- }
- }
+ showCards(g, roomTopic, seats)
winners = g.Ongoing.computeWinners()