You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
SwiftUiTp/DouShouQiIOS/DouShouQiIOS/Class/GameScene.swift

109 lines
4.8 KiB

//
// GameScene.swift
// DouShouQiIOS
//
// Created by Pierre FERREIRA on 24/05/2024.
//
import Foundation
import DouShouQiModel
import SpriteKit
import SwiftUI
class GameScene : SKScene{
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),
],
.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),
]
]
override init(size s: CGSize){
super.init(size: s)
self.addChild(imgBoard)
self.displayBoard(game.board)
/*
let cat = SpriteMeeple(imageName: "CatMeeple")
cat.position = CGPoint(x: 300, y: 200)
cat.imageNode.size = CGSize(width: 120, height: 120)
self.addChild(cat)
let rat = SpriteMeeple(imageName: "RatMeeple")
rat.position = CGPoint(x: 200, y: 100)
rat.imageNode.size = CGSize(width: 120, height: 120)
self.addChild(rat)
let dog = SpriteMeeple(imageName: "DogoMeeple")
dog.position = CGPoint(x: 200, y: 300)
dog.imageNode.size = CGSize(width: 120, height: 120)
self.addChild(dog)
let cat2 = SpriteMeeple(imageName: "CatMeeple")
cat2.position = CGPoint(x: 300, y: -200)
cat2.imageNode.size = CGSize(width: 120, height: 120)
self.addChild(cat2)
let rat2 = SpriteMeeple(imageName: "RatMeeple")
rat2.position = CGPoint(x: 200, y: -100)
rat2.imageNode.size = CGSize(width: 120, height: 120)
self.addChild(rat2)
let dog2 = SpriteMeeple(imageName: "DogoMeeple")
dog2.position = CGPoint(x: 200, y: -300)
dog2.imageNode.size = CGSize(width: 120, height: 120)
self.addChild(dog2)
let wolf = SpriteMeeple(imageName: "WolfMeeple")
wolf.position = CGPoint(x: 300, y: 0)
wolf.imageNode.size = CGSize(width: 120, height: 120)
self.addChild(wolf)
*/
self.scaleMode = .aspectFit
self.anchorPoint = CGPoint(x: 0.5, y:0.5)
}
private func displayBoard(_ board : DouShouQiModel.Board){
for row in 0..<board.nbRows{
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)
self.addChild(pieces[p.owner]![p.animal]!);
}
}
}
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
fatalError("init(coder:) has not been implemented")
}
}