commit 57e8dcf57d17f728c4b175d6a2385c27db525b9a
parent 8adc1b7f535ff1084213dc8d14307393647706a1
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Thu, 21 Dec 2023 13:43:54 -0500
cleanup
Diffstat:
1 file changed, 28 insertions(+), 23 deletions(-)
diff --git a/pkg/web/handlers/poker/poker.go b/pkg/web/handlers/poker/poker.go
@@ -127,16 +127,32 @@ func (e playerEvent) getAction() PlayerAction {
var PokerInstance = newPoker()
+type rwMtxSlice[T any] struct {
+ rwmtx.RWMtx[[]T]
+}
+
+func (s *rwMtxSlice[T]) append(els ...T) {
+ s.With(func(v *[]T) { *v = append(*v, els...) })
+}
+
+func (s *rwMtxSlice[T]) clone() (out []T) {
+ s.RWith(func(v []T) {
+ out = make([]T, len(v))
+ copy(out, v)
+ })
+ return
+}
+
type ongoingGame struct {
- logEvents rwmtx.RWMtx[[]LogEvent]
- deck []string
- players pokerPlayers
- events rwmtx.RWMtx[[]PokerEvent]
+ logEvents rwMtxSlice[LogEvent]
+ events rwMtxSlice[PokerEvent]
waitTurnEvent rwmtx.RWMtx[PokerWaitTurnEvent]
autoActionEvent rwmtx.RWMtx[AutoActionEvent]
+ players pokerPlayers
createdAt time.Time
mainPot atomic.Uint64
communityCards []string
+ deck []string
}
type pokerPlayers []*pokerPlayer
@@ -271,10 +287,7 @@ type gameResult struct {
func (g *PokerGame) GetLogs() (out []LogEvent) {
if g.ongoing != nil {
- g.ongoing.logEvents.RWith(func(logEvents []LogEvent) {
- out = make([]LogEvent, len(logEvents))
- copy(out, logEvents)
- })
+ out = g.ongoing.logEvents.clone()
}
return
}
@@ -391,12 +404,6 @@ func sortGameResults(arr []gameResult) {
sort.Slice(arr, func(i, j int) bool { return arr[i].handScore < arr[j].handScore })
}
-func (g *ongoingGame) addEvent(evts ...PokerEvent) {
- g.events.With(func(events *[]PokerEvent) {
- *events = append(*events, evts...)
- })
-}
-
func (g *ongoingGame) getDeckStr() string {
return strings.Join(g.deck, "")
}
@@ -546,7 +553,7 @@ func (g *PokerGame) unSitPlayer(gPlayers *seatedPlayers, seatedPlayer *seatedPla
for _, card := range playerCards {
evt := PokerEvent{ID: "card" + itoa(card.idx), Name: "", Idx: card.idx, Top: BurnStackY, Left: BurnStackX, Angle: "0deg", Reveal: false}
PokerPubSub.Pub(g.roomID.Topic(), evt)
- ongoing.addEvent(evt)
+ ongoing.events.append(evt)
}
})
}
@@ -589,9 +596,7 @@ func (g *PokerGame) newLogEvent(msg string) {
logEvt := LogEvent{Message: msg}
PokerPubSub.Pub(g.roomID.LogsTopic(), logEvt)
if ongoing != nil {
- ongoing.logEvents.With(func(v *[]LogEvent) {
- *v = append(*v, logEvt)
- })
+ ongoing.logEvents.append(logEvt)
}
}
@@ -617,7 +622,7 @@ func showCards(g *PokerGame, seats []Seat) {
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)
- ongoing.addEvent(evt1, evt2)
+ ongoing.events.append(evt1, evt2)
}
}
}
@@ -687,7 +692,7 @@ func foldPlayer(g *PokerGame, p *pokerPlayer) {
evt2 := PokerEvent{ID: "card" + itoa(secondCardIdx), Name: "", Idx: secondCardIdx, Top: BurnStackY, Left: BurnStackX, Angle: "0deg", Reveal: false}
PokerPubSub.Pub(roomTopic, evt1)
PokerPubSub.Pub(roomTopic, evt2)
- g.ongoing.addEvent(evt1, evt2)
+ g.ongoing.events.append(evt1, evt2)
}
func doUnsit(g *PokerGame, p *pokerPlayer, playerAlive *int) int {
@@ -1054,7 +1059,7 @@ func burnCard(g *PokerGame, idx, burnIdx *int) {
Left: BurnStackX + (*burnIdx * 4),
}
PokerPubSub.Pub(g.roomID.Topic(), evt)
- ongoing.addEvent(evt)
+ ongoing.events.append(evt)
*burnIdx++
}
@@ -1071,7 +1076,7 @@ func dealCard(g *PokerGame, idx *int, dealCardIdx int) {
Reveal: true,
}
PokerPubSub.Pub(g.roomID.Topic(), evt)
- ongoing.addEvent(evt)
+ ongoing.events.append(evt)
ongoing.communityCards = append(ongoing.communityCards, card)
}
@@ -1123,7 +1128,7 @@ func dealPlayersCards(g *PokerGame, seats []Seat, idx *int) {
*pCards = append(*pCards, playerCard{idx: *idx, name: card})
})
- ongoing.addEvent(evt, evt1)
+ ongoing.events.append(evt, evt1)
}
}
}