|
|
|
@ -10,7 +10,11 @@ import SpriteKit
|
|
|
|
|
import DouShouQiModel
|
|
|
|
|
|
|
|
|
|
class GameScene : SKScene {
|
|
|
|
|
var game: Game = try! Game(withRules: ClassicRules(), andPlayer1: RandomPlayer(withName: "Rayhan", andId: .player1)!, andPlayer2: RandomPlayer(withName: "Rémi", andId: .player2)!)
|
|
|
|
|
|
|
|
|
|
var player1: HumanPlayer = HumanPlayer(withName: "Rémi", andId: .player1)!
|
|
|
|
|
var player2: HumanPlayer = HumanPlayer(withName: "Rayhan", andId: .player2)!
|
|
|
|
|
|
|
|
|
|
var game: Game
|
|
|
|
|
|
|
|
|
|
let pieces: [Owner : [Animal:SpriteMeeple]] = [
|
|
|
|
|
.player1: [
|
|
|
|
@ -38,6 +42,7 @@ class GameScene : SKScene {
|
|
|
|
|
let imageBoard: SKSpriteNode = SKSpriteNode(imageNamed: AppImages.boardGame)
|
|
|
|
|
|
|
|
|
|
override init(size: CGSize) {
|
|
|
|
|
game = try! Game(withRules: ClassicRules(), andPlayer1: player1, andPlayer2: player2)
|
|
|
|
|
super.init(size: size)
|
|
|
|
|
imageBoard.size = size
|
|
|
|
|
//self.scaleMode = .aspectFit
|
|
|
|
@ -48,9 +53,11 @@ class GameScene : SKScene {
|
|
|
|
|
|
|
|
|
|
for piece in pieces.flatMap({owner, pieces in pieces.values}) {
|
|
|
|
|
self.addChild(piece)
|
|
|
|
|
//piece.setOnMove(onMove: onMeepleMove)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
initializeBoard(game.board)
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func initializeBoard(_ board: Board) {
|
|
|
|
@ -66,6 +73,25 @@ class GameScene : SKScene {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
required init?(coder aDecoder: NSCoder) {
|
|
|
|
|
game = try! Game(withRules: ClassicRules(), andPlayer1: player1, andPlayer2: player2)
|
|
|
|
|
super.init(coder: aDecoder);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func onMeepleMove(_ start: CGPoint, _ end: CGPoint) async {
|
|
|
|
|
|
|
|
|
|
let owner = game.rules.getNextPlayer()
|
|
|
|
|
let player = game.players[owner]
|
|
|
|
|
|
|
|
|
|
let move = Move(of: owner, fromRow: Int(start.x), andFromColumn: Int(start.y), toRow: Int(end.x), andToColumn: Int(end.y))
|
|
|
|
|
|
|
|
|
|
print("Meeple moved")
|
|
|
|
|
|
|
|
|
|
try! await (player as! HumanPlayer).chooseMove(move)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public func start() async throws {
|
|
|
|
|
try await game.start()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|