diff options
Diffstat (limited to 'pkg/ui/views/game_util.go')
-rw-r--r-- | pkg/ui/views/game_util.go | 18 |
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 { |