summaryrefslogtreecommitdiff
path: root/pkg/ui/views/play.go
diff options
context:
space:
mode:
authorSanto Cariotti <santo@dcariotti.me>2025-04-16 21:37:09 +0200
committerSanto Cariotti <santo@dcariotti.me>2025-04-16 21:37:09 +0200
commitf60fadc54421c8e0aedb33e59270d4aa48e842d2 (patch)
treeb15aac242a7f4548ebbe55dd5c4165da2cd3395e /pkg/ui/views/play.go
parentba4afeb4ee19c24b393ec21d374bdd752651c1a6 (diff)
Send messages for randomm chess move
Diffstat (limited to 'pkg/ui/views/play.go')
-rw-r--r--pkg/ui/views/play.go23
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
}