pull/28/head
enjolys 10 months ago
parent dce73b3fd3
commit f0ce1123bc

@ -15,39 +15,14 @@ struct GameView: View {
var player2Name: String = "toto"
var player2Image: UIImage
var gameScene: GameScene = GameScene(size: CGSize(width: 940, height: 740),player1Name:"TOTO",player1Image: Image("profil"),player2Name:"toto2",player2Image: Image("profil"))
@State var msg: String = ""
var vm:VMGame = VMGame()
var body: some View {
ZStack {
Text(msg)
SpriteView(scene: gameScene)
.edgesIgnoringSafeArea(.all)
.task {
gameScene.game.addGameStartedListener { board in startGame() }
gameScene.game.addGameOverListener { board, result, player in gameOver(result : result) }
gameScene.game.addGameChangedListener { game in gameChange() }
gameScene.game.addBoardChangedListener { board in boardChange() }
gameScene.game.addMoveChosenCallbacksListener { board, move, player in moveChose(board: board, move: move, player: player) }
gameScene.game.addInvalidMoveCallbacksListener { board, move, player, bool in invalidMove(board: board, move: move, player: player, bool: bool) }
gameScene.game.addPieceRemovedListener { _, _, piece in removePiece(piece: piece) }
gameScene.game.addPlayerNotifiedListener { board, player in
print("Player notif : \(player.id) à toi de jouer ")
msg = "Player notif : \(player.id) à toi de jouer !"
if player is IAPlayer {
try! await player.chooseMove(in: board, with: gameScene.game.rules)
}
}
print("Start ?")
try! await gameScene.game.start()
print("After satrt")
}
.task { vm.start() }
VStack {
HStack {
@ -94,78 +69,5 @@ struct GameView: View {
//self.player2Name = player2Name
self.player2Image = image2
}
// ------ Listener -------- //
func startGame() {
print("Start game !")
msg = "Start !!"
}
func gameOver(result : Result) { print("Game over !")
msg = "Game over ! "
switch result
{
case .winner(let winner, _):
switch winner {
case .player1:
msg = msg + "player 1 wins !"
case .player2:
msg = msg + "player 2 wins !"
default:
msg = msg + "equality !"
}
default:
msg="Game over !"
}
gameScene.isGameOver = true
actionEndGame(scene: gameScene,message: msg)
}
func gameChange() {
print("Game change !")
}
func boardChange() {
print("Board change !")
gameScene.displayBoard(board: gameScene.game.board)
}
func moveChose(board: Board, move: Move, player: Player) {
}
func invalidMove(board: Board, move: Move, player: Player, bool: Bool) {
if bool {
print("Move valid de \(player.id)")
print("Move : \(move.description)")
} else {
print("Move invalid de \(player.id)")
print("Move : \(move.description)")
gameScene.displayBoard(board: gameScene.game.board)
}
print("------------")
}
func removePiece(piece:Piece){
print("Remove piece")
if let node = gameScene.pieces[piece.owner]![piece.animal] {
actionRemove(size: gameScene.size, node: node, scene: gameScene)
print("Remove piece from parent")
}
}
// ------------------------- //
}
/*
struct GameView_Previews: PreviewProvider {
static var previews: some View {
GameView(
player1Name: "Player 1",
player1Image: UIImage(named: "profil")!,
player2Name: "Player 2",
player2Image: UIImage(named: "profil")!
)
}
}
*/

@ -0,0 +1,94 @@
import Foundation
struct VMGame {
@State var msg: String = ""
var gameScene: GameScene = GameScene(size: CGSize(width: 940, height: 740),player1Name:"TOTO",player1Image: Image("profil"),player2Name:"toto2",player2Image: Image("profil"))
func start(){
defineListener()
try! await gameScene.game.start()
}
func defineListener(){
gameScene.game.addGameStartedListener { board in startGame() }
gameScene.game.addGameOverListener { board, result, player in gameOver(result : result) }
gameScene.game.addGameChangedListener { game in gameChange() }
gameScene.game.addBoardChangedListener { board in boardChange() }
gameScene.game.addMoveChosenCallbacksListener { board, move, player in moveChose(board: board, move: move, player: player) }
gameScene.game.addInvalidMoveCallbacksListener { board, move, player, bool in invalidMove(board: board, move: move, player: player, bool: bool) }
gameScene.game.addPieceRemovedListener { _, _, piece in removePiece(piece: piece) }
gameScene.game.addPlayerNotifiedListener { board, player in
print("Player notif : \(player.id) à toi de jouer ")
msg = "Player notif : \(player.id) à toi de jouer !"
if player is IAPlayer {
try! await player.chooseMove(in: board, with: gameScene.game.rules)
}
}
}
func startGame() {
print("Start game !")
msg = "Start !!"
}
func gameOver(result : Result) { print("Game over !")
msg = "Game over ! "
switch result
{
case .winner(let winner, _):
switch winner {
case .player1:
msg = msg + "player 1 wins !"
case .player2:
msg = msg + "player 2 wins !"
default:
msg = msg + "equality !"
}
default:
msg="Game over !"
}
gameScene.isGameOver = true
actionEndGame(scene: gameScene,message: msg)
}
func gameChange() {
print("Game change !")
}
func boardChange() {
print("Board change !")
gameScene.displayBoard(board: gameScene.game.board)
}
func moveChose(board: Board, move: Move, player: Player) {
}
func invalidMove(board: Board, move: Move, player: Player, bool: Bool) {
if bool {
print("Move valid de \(player.id)")
print("Move : \(move.description)")
} else {
print("Move invalid de \(player.id)")
print("Move : \(move.description)")
gameScene.displayBoard(board: gameScene.game.board)
}
print("------------")
}
func removePiece(piece:Piece){
print("Remove piece")
if let node = gameScene.pieces[piece.owner]![piece.animal] {
actionRemove(size: gameScene.size, node: node, scene: gameScene)
print("Remove piece from parent")
}
}
}
Loading…
Cancel
Save