in Sample/SwiftUI-MVVM/TicTacToe/Sources/Game/GameViewModel.swift [61:80]
func placeCurrentPlayerMark(at row: Int, col: Int) {
guard boardColors[row][col] == .white else { return }
let currentPlayer = getAndFlipCurrentPlayer()
boardColors[row][col] = currentPlayer.color
let endGame = checkEndGame()
if endGame.didEnd {
if let winner = endGame.winner {
performOnPlayerNames { [weak self] (player1Name: String, player2Name: String) in
let winnerName = winner == .player1 ? player1Name : player2Name
let loserName = winner != .player1 ? player1Name : player2Name
self?.announce(winner)
self?.mutableScoreStream.updateScore(withWinner: winnerName, loser: loserName)
}
} else {
announceDraw()
mutableScoreStream.updateDraw()
}
}
}