summaryrefslogtreecommitdiff
path: root/pkg
diff options
context:
space:
mode:
Diffstat (limited to 'pkg')
-rw-r--r--pkg/ui/multiplayer/multiplayer.go13
-rw-r--r--pkg/ui/views/game.go18
-rw-r--r--pkg/ui/views/play.go16
3 files changed, 26 insertions, 21 deletions
diff --git a/pkg/ui/multiplayer/multiplayer.go b/pkg/ui/multiplayer/multiplayer.go
index 436388f..1680035 100644
--- a/pkg/ui/multiplayer/multiplayer.go
+++ b/pkg/ui/multiplayer/multiplayer.go
@@ -1,7 +1,10 @@
package multiplayer
import (
+ "time"
+
"github.com/boozec/rahanna/internal/network"
+ "go.uber.org/zap"
)
type GameNetwork struct {
@@ -9,8 +12,14 @@ type GameNetwork struct {
Peer string
}
-func NewGameNetwork(localID, localIP string, localPort int, callback func()) *GameNetwork {
- server := network.NewTCPNetwork(localID, localIP, localPort, callback)
+func NewGameNetwork(localID string, address string, onHandshake network.NetworkHandshakeFunc, logger *zap.Logger) *GameNetwork {
+ opts := network.TCPNetworkOpts{
+ ListenAddr: address,
+ HandshakeFn: onHandshake,
+ RetryDelay: time.Second * 2,
+ Logger: logger,
+ }
+ server := network.NewTCPNetwork(network.NetworkID(localID), opts)
peer := ""
return &GameNetwork{
Server: server,
diff --git a/pkg/ui/views/game.go b/pkg/ui/views/game.go
index 52d8459..5a0972c 100644
--- a/pkg/ui/views/game.go
+++ b/pkg/ui/views/game.go
@@ -4,8 +4,6 @@ import (
"encoding/json"
"fmt"
"os"
- "strconv"
- "strings"
"github.com/boozec/rahanna/internal/api/database"
"github.com/boozec/rahanna/pkg/ui/multiplayer"
@@ -197,21 +195,13 @@ func (m *GameModel) getGame() tea.Cmd {
// Establish peer connection
if m.peer == "peer-1" {
if game.IP2 != "" {
- ipParts := strings.Split(game.IP2, ":")
- if len(ipParts) == 2 {
- remoteIP := ipParts[0]
- remotePortInt, _ := strconv.Atoi(ipParts[1])
- go m.network.Server.AddPeer("peer-2", remoteIP, remotePortInt)
- }
+ remote := game.IP2
+ go m.network.Server.AddPeer("peer-2", remote)
}
} else {
if game.IP1 != "" {
- ipParts := strings.Split(game.IP1, ":")
- if len(ipParts) == 2 {
- remoteIP := ipParts[0]
- remotePortInt, _ := strconv.Atoi(ipParts[1])
- go m.network.Server.AddPeer("peer-1", remoteIP, remotePortInt)
- }
+ remote := game.IP1
+ go m.network.Server.AddPeer("peer-1", remote)
}
}
diff --git a/pkg/ui/views/play.go b/pkg/ui/views/play.go
index 4801556..cf1f6ca 100644
--- a/pkg/ui/views/play.go
+++ b/pkg/ui/views/play.go
@@ -9,6 +9,7 @@ import (
"strings"
"github.com/boozec/rahanna/internal/api/database"
+ "github.com/boozec/rahanna/internal/logger"
"github.com/boozec/rahanna/internal/network"
"github.com/boozec/rahanna/pkg/ui/multiplayer"
"github.com/charmbracelet/bubbles/key"
@@ -267,10 +268,11 @@ func (m *PlayModel) handlePlayResponse(msg playResponse) (tea.Model, tea.Cmd) {
} else {
m.playName = msg.Ok.Name
m.currentGameId = msg.Ok.GameID
-
- m.network = multiplayer.NewGameNetwork("peer-1", msg.Ok.IP, msg.Ok.Port, func() {
- close(start)
- })
+ logger, _ := logger.GetLogger()
+ m.network = multiplayer.NewGameNetwork("peer-1", fmt.Sprintf("%s:%d", msg.Ok.IP, msg.Ok.Port), func() error {
+ start <- 1
+ return nil
+ }, logger)
}
return m, nil
@@ -284,7 +286,11 @@ func (m *PlayModel) handleGameResponse(msg database.Game) (tea.Model, tea.Cmd) {
if len(ip) == 2 {
localIP := ip[0]
localPort, _ := strconv.ParseInt(ip[1], 10, 32)
- network := multiplayer.NewGameNetwork("peer-2", localIP, int(localPort), func() {})
+
+ logger, _ := logger.GetLogger()
+ network := multiplayer.NewGameNetwork("peer-2", fmt.Sprintf("%s:%d", localIP, localPort), func() error {
+ return nil
+ }, logger)
return m, SwitchModelCmd(NewGameModel(m.width, m.height+1, "peer-2", m.game.ID, network))
}