dkforest

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

commit 57e8dcf57d17f728c4b175d6a2385c27db525b9a
parent 8adc1b7f535ff1084213dc8d14307393647706a1
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Thu, 21 Dec 2023 13:43:54 -0500

cleanup

Diffstat:
Mpkg/web/handlers/poker/poker.go | 51++++++++++++++++++++++++++++-----------------------
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) } } }