diff options
author | Santo Cariotti <santo@dcariotti.me> | 2025-04-16 21:37:09 +0200 |
---|---|---|
committer | Santo Cariotti <santo@dcariotti.me> | 2025-04-16 21:37:09 +0200 |
commit | f60fadc54421c8e0aedb33e59270d4aa48e842d2 (patch) | |
tree | b15aac242a7f4548ebbe55dd5c4165da2cd3395e /pkg/ui/views/play.go | |
parent | ba4afeb4ee19c24b393ec21d374bdd752651c1a6 (diff) |
Send messages for randomm chess move
Diffstat (limited to 'pkg/ui/views/play.go')
-rw-r--r-- | pkg/ui/views/play.go | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/pkg/ui/views/play.go b/pkg/ui/views/play.go index cf1f6ca..3997a88 100644 --- a/pkg/ui/views/play.go +++ b/pkg/ui/views/play.go @@ -38,8 +38,6 @@ A B C D E F G H type PlayModelPage int -var start = make(chan int) - const ( LandingPage PlayModelPage = iota InsertCodePage @@ -97,6 +95,8 @@ var defaultPlayKeyMap = playKeyMap{ ), } +type StartGameMsg struct{} + type PlayModel struct { // UI dimensions width int @@ -159,12 +159,6 @@ func (m PlayModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { return m, exit } - select { - case <-start: - return m, SwitchModelCmd(NewGameModel(m.width, m.height+1, "peer-1", m.currentGameId, m.network)) - default: - } - switch msg := msg.(type) { case tea.WindowSizeMsg: return m.handleWindowSize(msg) @@ -176,6 +170,8 @@ func (m PlayModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) { return m.handleGameResponse(msg) case []database.Game: return m.handleGamesResponse(msg) + case StartGameMsg: + return m, SwitchModelCmd(NewGameModel(m.width, m.height+1, "peer-2", m.currentGameId, m.network)) case error: return m.handleError(msg) } @@ -269,10 +265,17 @@ func (m *PlayModel) handlePlayResponse(msg playResponse) (tea.Model, tea.Cmd) { m.playName = msg.Ok.Name m.currentGameId = msg.Ok.GameID logger, _ := logger.GetLogger() + + callbackCompleted := make(chan bool) m.network = multiplayer.NewGameNetwork("peer-1", fmt.Sprintf("%s:%d", msg.Ok.IP, msg.Ok.Port), func() error { - start <- 1 + close(callbackCompleted) return nil }, logger) + + return m, func() tea.Msg { + <-callbackCompleted + return StartGameMsg{} + } } return m, nil @@ -292,7 +295,7 @@ func (m *PlayModel) handleGameResponse(msg database.Game) (tea.Model, tea.Cmd) { return nil }, logger) - return m, SwitchModelCmd(NewGameModel(m.width, m.height+1, "peer-2", m.game.ID, network)) + return m, SwitchModelCmd(NewGameModel(m.width, m.height+1, "peer-1", m.game.ID, network)) } return m, nil } |