dkforest

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

commit fd77bdbe8950385fe396fcf7ca335f157452c299
parent 57e8dcf57d17f728c4b175d6a2385c27db525b9a
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Thu, 21 Dec 2023 13:48:59 -0500

cleanup

Diffstat:
Mpkg/utils/rwmtx/rwmtx.go | 18++++++++++++++++++
Mpkg/web/handlers/poker/poker.go | 36++++++++++--------------------------
2 files changed, 28 insertions(+), 26 deletions(-)

diff --git a/pkg/utils/rwmtx/rwmtx.go b/pkg/utils/rwmtx/rwmtx.go @@ -102,3 +102,21 @@ func (m *RWMtx[T]) WithE(clb func(v *T) error) error { defer m.Unlock() return clb(&m.v) } + +//---------------------- + +type RWMtxSlice[T any] struct { + 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 +} diff --git a/pkg/web/handlers/poker/poker.go b/pkg/web/handlers/poker/poker.go @@ -127,25 +127,9 @@ 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 rwMtxSlice[LogEvent] - events rwMtxSlice[PokerEvent] + logEvents rwmtx.RWMtxSlice[LogEvent] + events rwmtx.RWMtxSlice[PokerEvent] waitTurnEvent rwmtx.RWMtx[PokerWaitTurnEvent] autoActionEvent rwmtx.RWMtx[AutoActionEvent] players pokerPlayers @@ -287,7 +271,7 @@ type gameResult struct { func (g *PokerGame) GetLogs() (out []LogEvent) { if g.ongoing != nil { - out = g.ongoing.logEvents.clone() + out = g.ongoing.logEvents.Clone() } return } @@ -553,7 +537,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.events.append(evt) + ongoing.events.Append(evt) } }) } @@ -596,7 +580,7 @@ func (g *PokerGame) newLogEvent(msg string) { logEvt := LogEvent{Message: msg} PokerPubSub.Pub(g.roomID.LogsTopic(), logEvt) if ongoing != nil { - ongoing.logEvents.append(logEvt) + ongoing.logEvents.Append(logEvt) } } @@ -622,7 +606,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.events.append(evt1, evt2) + ongoing.events.Append(evt1, evt2) } } } @@ -692,7 +676,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.events.append(evt1, evt2) + g.ongoing.events.Append(evt1, evt2) } func doUnsit(g *PokerGame, p *pokerPlayer, playerAlive *int) int { @@ -1059,7 +1043,7 @@ func burnCard(g *PokerGame, idx, burnIdx *int) { Left: BurnStackX + (*burnIdx * 4), } PokerPubSub.Pub(g.roomID.Topic(), evt) - ongoing.events.append(evt) + ongoing.events.Append(evt) *burnIdx++ } @@ -1076,7 +1060,7 @@ func dealCard(g *PokerGame, idx *int, dealCardIdx int) { Reveal: true, } PokerPubSub.Pub(g.roomID.Topic(), evt) - ongoing.events.append(evt) + ongoing.events.Append(evt) ongoing.communityCards = append(ongoing.communityCards, card) } @@ -1128,7 +1112,7 @@ func dealPlayersCards(g *PokerGame, seats []Seat, idx *int) { *pCards = append(*pCards, playerCard{idx: *idx, name: card}) }) - ongoing.events.append(evt, evt1) + ongoing.events.Append(evt, evt1) } } }