|
|
|
@ -10,53 +10,56 @@ import DouShouQiModel
|
|
|
|
|
import SpriteKit
|
|
|
|
|
import SwiftUI
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Class GameScene
|
|
|
|
|
// This class is used to display the game board and the pieces on it
|
|
|
|
|
class GameScene : SKScene{
|
|
|
|
|
|
|
|
|
|
// @ObservedObject var gameVm : GameVM
|
|
|
|
|
|
|
|
|
|
let imgBoard : SKSpriteNode = SKSpriteNode(imageNamed: "BoardImg")
|
|
|
|
|
let defaultSize : CGSize = CGSize(width: 120, height: 120)
|
|
|
|
|
|
|
|
|
|
// var game : Game = try! Game(withRules: ClassicRules(),
|
|
|
|
|
// andPlayer1: Player(withName: "Meruemu", andId: .player1)!,
|
|
|
|
|
// andPlayer2: Player(withName: "Kumogi", andId: .player2)!)
|
|
|
|
|
|
|
|
|
|
let pieces : [ Owner : [Animal : SpriteMeeple]] =
|
|
|
|
|
[
|
|
|
|
|
.player1 : [
|
|
|
|
|
.rat : SpriteMeeple(imageName: "RatMeeple", size: CGSize(width: 120, height: 120), color: Color.player1),
|
|
|
|
|
.cat : SpriteMeeple(imageName: "CatMeeple", size: CGSize(width: 120, height: 120), color: Color.player1),
|
|
|
|
|
.dog : SpriteMeeple(imageName: "DogoMeeple", size: CGSize(width: 120, height: 120), color: Color.player1),
|
|
|
|
|
.wolf : SpriteMeeple(imageName: "WolfMeeple", size: CGSize(width: 120, height: 120), color: Color.player1),
|
|
|
|
|
.leopard : SpriteMeeple(imageName: "LeoMeeple", size: CGSize(width: 120, height: 120), color: Color.player1),
|
|
|
|
|
.tiger : SpriteMeeple(imageName: "CatMeeple", size: CGSize(width: 120, height: 120), color: Color.player1),
|
|
|
|
|
.lion : SpriteMeeple(imageName: "LionMeeple", size: CGSize(width: 120, height: 120), color: Color.player1),
|
|
|
|
|
.elephant : SpriteMeeple(imageName: "ElphMeeple", size: CGSize(width: 120, height: 120), color: Color.player1),
|
|
|
|
|
],
|
|
|
|
|
// Define constants
|
|
|
|
|
let meepleSizeWidth: CGFloat = 120
|
|
|
|
|
let meepleSizeHeight: CGFloat = 120
|
|
|
|
|
|
|
|
|
|
.player2: [
|
|
|
|
|
.rat : SpriteMeeple(imageName: "RatMeeple", size: CGSize(width: 120, height: 120), color: Color.player2),
|
|
|
|
|
.cat : SpriteMeeple(imageName: "CatMeeple", size: CGSize(width: 120, height: 120), color: Color.player2),
|
|
|
|
|
.dog : SpriteMeeple(imageName: "DogoMeeple", size: CGSize(width: 120, height: 120), color: Color.player2),
|
|
|
|
|
.wolf : SpriteMeeple(imageName: "WolfMeeple", size: CGSize(width: 120, height: 120), color: Color.player2),
|
|
|
|
|
.leopard : SpriteMeeple(imageName: "LeoMeeple", size: CGSize(width: 120, height: 120), color: Color.player2),
|
|
|
|
|
.tiger : SpriteMeeple(imageName: "CatMeeple", size: CGSize(width: 120, height: 120), color: Color.player2),
|
|
|
|
|
.lion : SpriteMeeple(imageName: "LionMeeple", size: CGSize(width: 120, height: 120), color: Color.player2),
|
|
|
|
|
.elephant : SpriteMeeple(imageName: "ElphMeeple", size: CGSize(width: 120, height: 120), color: Color.player2),
|
|
|
|
|
// Players pieces
|
|
|
|
|
let pieces: [Owner: [Animal: SpriteMeeple]] =
|
|
|
|
|
[
|
|
|
|
|
.player1: [
|
|
|
|
|
.rat: SpriteMeeple(imageName: "RatMeeple", size: CGSize(width: meepleSizeWidth, height: meepleSizeHeight), color: Color.player1),
|
|
|
|
|
.cat: SpriteMeeple(imageName: "CatMeeple", size: CGSize(width: meepleSizeWidth, height: meepleSizeHeight), color: Color.player1),
|
|
|
|
|
.dog: SpriteMeeple(imageName: "DogoMeeple", size: CGSize(width: meepleSizeWidth, height: meepleSizeHeight), color: Color.player1),
|
|
|
|
|
.wolf: SpriteMeeple(imageName: "WolfMeeple", size: CGSize(width: meepleSizeWidth, height: meepleSizeHeight), color: Color.player1),
|
|
|
|
|
.leopard: SpriteMeeple(imageName: "LeoMeeple", size: CGSize(width: meepleSizeWidth, height: meepleSizeHeight), color: Color.player1),
|
|
|
|
|
.tiger: SpriteMeeple(imageName: "CatMeeple", size: CGSize(width: meepleSizeWidth, height: meepleSizeHeight), color: Color.player1),
|
|
|
|
|
.lion: SpriteMeeple(imageName: "LionMeeple", size: CGSize(width: meepleSizeWidth, height: meepleSizeHeight), color: Color.player1),
|
|
|
|
|
.elephant: SpriteMeeple(imageName: "ElphMeeple", size: CGSize(width: meepleSizeWidth, height: meepleSizeHeight), color: Color.player1),
|
|
|
|
|
],
|
|
|
|
|
|
|
|
|
|
.player2: [
|
|
|
|
|
.rat: SpriteMeeple(imageName: "RatMeeple", size: CGSize(width: meepleSizeWidth, height: meepleSizeHeight), color: Color.player2),
|
|
|
|
|
.cat: SpriteMeeple(imageName: "CatMeeple", size: CGSize(width: meepleSizeWidth, height: meepleSizeHeight), color: Color.player2),
|
|
|
|
|
.dog: SpriteMeeple(imageName: "DogoMeeple", size: CGSize(width: meepleSizeWidth, height: meepleSizeHeight), color: Color.player2),
|
|
|
|
|
.wolf: SpriteMeeple(imageName: "WolfMeeple", size: CGSize(width: meepleSizeWidth, height: meepleSizeHeight), color: Color.player2),
|
|
|
|
|
.leopard: SpriteMeeple(imageName: "LeoMeeple", size: CGSize(width: meepleSizeWidth, height: meepleSizeHeight), color: Color.player2),
|
|
|
|
|
.tiger: SpriteMeeple(imageName: "CatMeeple", size: CGSize(width: meepleSizeWidth, height: meepleSizeHeight), color: Color.player2),
|
|
|
|
|
.lion: SpriteMeeple(imageName: "LionMeeple", size: CGSize(width: meepleSizeWidth, height: meepleSizeHeight), color: Color.player2),
|
|
|
|
|
.elephant: SpriteMeeple(imageName: "ElphMeeple", size: CGSize(width: meepleSizeWidth, height: meepleSizeHeight), color: Color.player2),
|
|
|
|
|
]
|
|
|
|
|
]
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
override init(size s: CGSize){ //, andVM gameVM : GameVM
|
|
|
|
|
//self.gameVm = gameVM
|
|
|
|
|
override init(size s: CGSize){
|
|
|
|
|
super.init(size: s)
|
|
|
|
|
|
|
|
|
|
self.addChild(imgBoard)
|
|
|
|
|
//self.displayBoard(gameVm.game.board)
|
|
|
|
|
|
|
|
|
|
self.scaleMode = .aspectFit
|
|
|
|
|
self.anchorPoint = CGPoint(x: 0.5, y:0.5)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Display the board
|
|
|
|
|
* @param board : DouShouQiModel.Board - The board to display
|
|
|
|
|
*/
|
|
|
|
|
func displayBoard(_ board : DouShouQiModel.Board){
|
|
|
|
|
|
|
|
|
|
//Nettoyage des fils
|
|
|
|
@ -67,7 +70,7 @@ class GameScene : SKScene{
|
|
|
|
|
for col in 0..<board.nbColumns{
|
|
|
|
|
if let p = board.grid[row][col].piece{
|
|
|
|
|
pieces[p.owner]?[p.animal]?.cellPosition = CGPoint(x: row, y: col);
|
|
|
|
|
pieces[p.owner]?[p.animal]?.imageNode.size = CGSize(width: 120, height: 120)
|
|
|
|
|
pieces[p.owner]?[p.animal]?.imageNode.size = CGSize(width: meepleSizeWidth, height: meepleSizeHeight)
|
|
|
|
|
self.addChild(pieces[p.owner]![p.animal]!)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -75,7 +78,6 @@ class GameScene : SKScene{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
required init?(coder aDecoder: NSCoder) {
|
|
|
|
|
|
|
|
|
|
super.init(coder: aDecoder)
|
|
|
|
|
fatalError("init(coder:) has not been implemented")
|
|
|
|
|
}
|
|
|
|
|