poursuite de la liaisona vec le jeu, coomment recup le status des meeples pour le readmove avec cette archi ? 🍻

gameBranch
Pierre FERREIRA 10 months ago
parent 81be263b3a
commit 78c8260d91

@ -12,16 +12,14 @@ import SwiftUI
class GameScene : SKScene{
@ObservedObject var gameVm : GameVM = GameVM(andPlayer1: Player(withName: "Meruemu", andId: .player1)!,
andPlayer2: Player(withName: "Kumogi", andId: .player2)!)
@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)!)
// var game : Game = try! Game(withRules: ClassicRules(),
// andPlayer1: Player(withName: "Meruemu", andId: .player1)!,
// andPlayer2: Player(withName: "Kumogi", andId: .player2)!)
// let pieces : [ Owner : [Animal : SpriteMeeple]] =
// [
@ -48,11 +46,11 @@ class GameScene : SKScene{
// ]
// ]
override init(size s: CGSize){
init(size s: CGSize, andVM gameVM : GameVM){
self.gameVm = gameVM
super.init(size: s)
self.addChild(imgBoard)
self.displayBoard(game.board)
self.displayBoard(gameVm.game.board)
self.scaleMode = .aspectFit
self.anchorPoint = CGPoint(x: 0.5, y:0.5)
@ -71,6 +69,9 @@ class GameScene : SKScene{
}
required init?(coder aDecoder: NSCoder) {
self.gameVm = GameVM(andPlayer1: Player(withName: "Meruemu", andId: .player1)!,
andPlayer2: Player(withName: "Kumogi", andId: .player2)!)
super.init(coder: aDecoder)
fatalError("init(coder:) has not been implemented")
}

@ -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)
}
})

@ -7,6 +7,7 @@
import SwiftUI
import SpriteKit
import DouShouQiModel
struct GameView: View {
@ -14,24 +15,35 @@ struct GameView: View {
@State private var turnNumber = 1
@State private var gameTime = 0.0 // Temps en secondes
@State private var statusMessage = "C'est votre tour"
//@State private var statusMessage = "C'est votre tour !"
@State private var player1Pieces = 8
@State private var player2Pieces = 8
// On donne les deux player à la vue ?
var timer = Timer.publish(every: 1, on: .main, in: .common).autoconnect()
let gridItems = Array(repeating: GridItem(.flexible()), count: 8)
///VM
var gameVM : GameVM
///SK
var gs : GameScene = GameScene(size: CGSizeMake(940,740))
var gs : GameScene
init (){
self.gameVM = GameVM(andPlayer1: Player(withName: "Meruemu", andId: .player1)!, andPlayer2: Player(withName: "Kumogi", andId: .player2)!)
self.gs = GameScene(size: CGSizeMake(940,740), andVM: gameVM)
}
var body: some View {
ZStack{
Rectangle().fill(Color.bgColor).edgesIgnoringSafeArea(.all)
VStack {
VStack {
Text(statusMessage)
Text(gameVM.displayMessage)
.font(.title)
.padding(.top, 20)

@ -10,12 +10,12 @@ import SpriteKit
struct SpriteKitView: View {
///Sprite Kit
var gs : GameScene = GameScene(size: CGSizeMake(940,740))
//var gs : GameScene = GameScene(size: CGSizeMake(940,740))
var body: some View {
VStack{
SpriteView(scene: gs)
//SpriteView(scene: gs)
}
}
}

Loading…
Cancel
Save