summaryrefslogtreecommitdiff
path: root/pkg/ui/views/game_util.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/ui/views/game_util.go')
-rw-r--r--pkg/ui/views/game_util.go18
1 files changed, 17 insertions, 1 deletions
diff --git a/pkg/ui/views/game_util.go b/pkg/ui/views/game_util.go
index f5e4a5d..8b8c658 100644
--- a/pkg/ui/views/game_util.go
+++ b/pkg/ui/views/game_util.go
@@ -3,6 +3,7 @@ package views
import (
"fmt"
+ "github.com/boozec/rahanna/internal/api/database"
"github.com/boozec/rahanna/pkg/p2p"
tea "github.com/charmbracelet/bubbletea"
"github.com/charmbracelet/lipgloss"
@@ -27,7 +28,22 @@ func (m GameModel) buildWindowContent(content string, formWidth int) string {
}
func (m GameModel) isMyTurn() bool {
- return m.turn%2 == 0 && m.network.Me() == m.playerPeer(1) || m.turn%2 == 1 && m.network.Me() == m.playerPeer(2)
+ if m.game == nil {
+ return false
+ }
+
+ var totalPlayers int
+
+ switch m.game.Type {
+ case database.SingleGameType:
+ totalPlayers = 2
+ case database.PairGameType:
+ totalPlayers = 4
+ }
+
+ moves := len(m.chessGame.Moves())
+ currentPlayer := (moves % totalPlayers) + 1
+ return m.network.Me() == m.playerPeer(currentPlayer)
}
func (m GameModel) playerPeer(n int) p2p.NetworkID {