|
|
|
@ -16,6 +16,7 @@ import SwiftUI
|
|
|
|
|
|
|
|
|
|
class GameVM : ObservableObject, Identifiable {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
///Players
|
|
|
|
|
let player1 : Player
|
|
|
|
|
let player2 : Player
|
|
|
|
@ -29,6 +30,8 @@ class GameVM : ObservableObject, Identifiable {
|
|
|
|
|
//Message
|
|
|
|
|
@Published var displayMessage : String = ""
|
|
|
|
|
|
|
|
|
|
var game : Game
|
|
|
|
|
|
|
|
|
|
public init(withRules rules : Rules = ClassicRules(), andPlayer1 p1: Player, andPlayer2 p2 : Player?) {
|
|
|
|
|
self.player1 = p1
|
|
|
|
|
|
|
|
|
@ -40,6 +43,10 @@ class GameVM : ObservableObject, Identifiable {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
self.actualRules = rules
|
|
|
|
|
|
|
|
|
|
self.game = try! Game(withRules: actualRules, andPlayer1: player1, andPlayer2: player2)
|
|
|
|
|
|
|
|
|
|
//TODO recup les pieces de la game ?
|
|
|
|
|
self.pieces =
|
|
|
|
|
[ .player1 : [
|
|
|
|
|
.rat : SpriteMeeple(imageName: "RatMeeple", size: CGSize(width: 120, height: 120), color: Color.player1),
|
|
|
|
@ -85,6 +92,8 @@ class GameVM : ObservableObject, Identifiable {
|
|
|
|
|
destRow = readInt(withMessage: "\(player.name) please enter the destination row in which you want to move your piece)")
|
|
|
|
|
destCol = readInt(withMessage: "\(player.name) please enter the destination column in which you want to move your piece)")
|
|
|
|
|
|
|
|
|
|
self.pieces[player.id][Animal.cat]?
|
|
|
|
|
|
|
|
|
|
return Move(of: player.id, fromRow: originRow!, andFromColumn: originCol!, toRow: destRow!, andToColumn: destCol!)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -97,8 +106,6 @@ class GameVM : ObservableObject, Identifiable {
|
|
|
|
|
// return 1
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
var game: Game = try Game(withRules: actualRules, andPlayer1: player1, andPlayer2: player2)
|
|
|
|
|
|
|
|
|
|
for player in game.players {
|
|
|
|
|
if player.value is HumanPlayer {
|
|
|
|
|
let hp = player.value as! HumanPlayer
|
|
|
|
@ -118,10 +125,10 @@ class GameVM : ObservableObject, Identifiable {
|
|
|
|
|
_ = readLine()
|
|
|
|
|
|
|
|
|
|
if player is HumanPlayer {
|
|
|
|
|
var move = self.readMove(from: player as! HumanPlayer)
|
|
|
|
|
let move = self.readMove(from: player as! HumanPlayer)
|
|
|
|
|
try! await (player as! HumanPlayer).chooseMove(move)
|
|
|
|
|
} else {
|
|
|
|
|
_ = try! await player.chooseMove(in: board, with: game.rules)
|
|
|
|
|
_ = try! await player.chooseMove(in: board, with: self.game.rules)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|