summaryrefslogtreecommitdiff
path: root/pkg/ui/views/play_api.go
diff options
context:
space:
mode:
authorSanto Cariotti <santo@dcariotti.me>2025-04-18 21:25:32 +0200
committerSanto Cariotti <santo@dcariotti.me>2025-04-18 21:25:32 +0200
commit42d68aa99d59339dbdf928a54c28242635728daa (patch)
tree98dadfd64a0fc05d1fb6f6ddbc9a3e8963fbf1dd /pkg/ui/views/play_api.go
parent7c5a6176b27b6b0c0c3ef8a4aedbdec871391a80 (diff)
Restore a game
Diffstat (limited to 'pkg/ui/views/play_api.go')
-rw-r--r--pkg/ui/views/play_api.go22
1 files changed, 17 insertions, 5 deletions
diff --git a/pkg/ui/views/play_api.go b/pkg/ui/views/play_api.go
index c098930..bf9b08a 100644
--- a/pkg/ui/views/play_api.go
+++ b/pkg/ui/views/play_api.go
@@ -46,8 +46,8 @@ func (m *PlayModel) handlePlayResponse(msg playResponse) (tea.Model, tea.Cmd) {
logger, _ := logger.GetLogger()
callbackCompleted := make(chan bool)
- m.network = multiplayer.NewGameNetwork(fmt.Sprintf("%s-1", m.playName), fmt.Sprintf("%s:%d", msg.Ok.IP, msg.Ok.Port), func(net.Conn) error {
- callbackCompleted <- true
+ m.network = multiplayer.NewGameNetwork(fmt.Sprintf("%s-1", m.playName), fmt.Sprintf("%s:%d", msg.Ok.IP, msg.Ok.Port), p2p.DefaultHandshake, func(net.Conn) error {
+ close(callbackCompleted)
return nil
}, logger)
@@ -59,19 +59,31 @@ func (m *PlayModel) handlePlayResponse(msg playResponse) (tea.Model, tea.Cmd) {
return m, nil
}
+
func (m *PlayModel) handleGameResponse(msg database.Game) (tea.Model, tea.Cmd) {
m.isLoading = false
m.game = &msg
m.err = nil
- ip := strings.Split(m.game.IP2, ":")
+
+ var ip []string
+ var localID string
+
+ if m.game.LastPlayer == 2 {
+ ip = strings.Split(m.game.IP2, ":")
+ localID = fmt.Sprintf("%s-2", m.game.Name)
+ } else {
+ ip = strings.Split(m.game.IP1, ":")
+ localID = fmt.Sprintf("%s-1", m.game.Name)
+ }
+
if len(ip) == 2 {
localIP := ip[0]
localPort, _ := strconv.ParseInt(ip[1], 10, 32)
logger, _ := logger.GetLogger()
- network := multiplayer.NewGameNetwork(fmt.Sprintf("%s-2", m.game.Name), fmt.Sprintf("%s:%d", localIP, localPort), p2p.DefaultHandshake, logger)
+ network := multiplayer.NewGameNetwork(localID, fmt.Sprintf("%s:%d", localIP, localPort), p2p.DefaultHandshake, p2p.DefaultHandshake, logger)
- return m, SwitchModelCmd(NewGameModel(m.width, m.height+1, m.game.ID, network))
+ return m, SwitchModelCmd(NewGameModel(m.width, m.height+1, m.game.ID, network, m.gameToRestore != nil))
}
return m, nil
}