From 516db63bde8887fb73b639b06b3e9753e429e7ef Mon Sep 17 00:00:00 2001 From: Pierre FERREIRA Date: Tue, 4 Jun 2024 13:30:26 +0200 Subject: [PATCH] contination du binding :beer: --- .../DouShouQiIOS.xcodeproj/project.pbxproj | 4 +++ .../DouShouQiIOS/Class/PlayerVM.swift | 19 +++++++++- .../Extension/PlayerExtension.swift | 35 +++++++++++++++++++ .../DouShouQiIOS/View/EditModalView.swift | 10 ++++-- .../DouShouQiIOS/View/PlayerView.swift | 3 +- 5 files changed, 67 insertions(+), 4 deletions(-) create mode 100644 DouShouQiIOS/DouShouQiIOS/Extension/PlayerExtension.swift diff --git a/DouShouQiIOS/DouShouQiIOS.xcodeproj/project.pbxproj b/DouShouQiIOS/DouShouQiIOS.xcodeproj/project.pbxproj index 8fb37d1..3bca391 100644 --- a/DouShouQiIOS/DouShouQiIOS.xcodeproj/project.pbxproj +++ b/DouShouQiIOS/DouShouQiIOS.xcodeproj/project.pbxproj @@ -23,6 +23,7 @@ 7B6426F92C00BDEA00575E16 /* SpriteKitView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B6426F82C00BDEA00575E16 /* SpriteKitView.swift */; }; 7B6426FB2C00BFF500575E16 /* SpriteMeeple.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B6426FA2C00BFF500575E16 /* SpriteMeeple.swift */; }; 7BB279892BFDF79E00491801 /* GameView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BB279882BFDF79E00491801 /* GameView.swift */; }; + 7BDC5DA12C0F2B81008893EE /* PlayerExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BDC5DA02C0F2B81008893EE /* PlayerExtension.swift */; }; 7BDD43C72BFCC927003984FB /* MainMenuView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BDD43C62BFCC927003984FB /* MainMenuView.swift */; }; 7BDD43C92BFCD2C4003984FB /* HistoryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BDD43C82BFCD2C4003984FB /* HistoryView.swift */; }; 7BDE976D2C0E13160079F2CD /* EditModalView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BDE976C2C0E13160079F2CD /* EditModalView.swift */; }; @@ -71,6 +72,7 @@ 7B6426F82C00BDEA00575E16 /* SpriteKitView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpriteKitView.swift; sourceTree = ""; }; 7B6426FA2C00BFF500575E16 /* SpriteMeeple.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpriteMeeple.swift; sourceTree = ""; }; 7BB279882BFDF79E00491801 /* GameView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameView.swift; sourceTree = ""; }; + 7BDC5DA02C0F2B81008893EE /* PlayerExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerExtension.swift; sourceTree = ""; }; 7BDD43C62BFCC927003984FB /* MainMenuView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainMenuView.swift; sourceTree = ""; }; 7BDD43C82BFCD2C4003984FB /* HistoryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HistoryView.swift; sourceTree = ""; }; 7BDE976C2C0E13160079F2CD /* EditModalView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditModalView.swift; sourceTree = ""; }; @@ -215,6 +217,7 @@ isa = PBXGroup; children = ( 7BE8C5642C09A29A00A6E8C9 /* Color.swift */, + 7BDC5DA02C0F2B81008893EE /* PlayerExtension.swift */, ); path = Extension; sourceTree = ""; @@ -360,6 +363,7 @@ buildActionMask = 2147483647; files = ( 7B6426F72C00B81400575E16 /* GameScene.swift in Sources */, + 7BDC5DA12C0F2B81008893EE /* PlayerExtension.swift in Sources */, 7B4508F72BF2084B0027E1EF /* PlayerView.swift in Sources */, 7BDD43C72BFCC927003984FB /* MainMenuView.swift in Sources */, 7B4508CF2BF206AF0027E1EF /* ContentView.swift in Sources */, diff --git a/DouShouQiIOS/DouShouQiIOS/Class/PlayerVM.swift b/DouShouQiIOS/DouShouQiIOS/Class/PlayerVM.swift index 2a2b733..63311f9 100644 --- a/DouShouQiIOS/DouShouQiIOS/Class/PlayerVM.swift +++ b/DouShouQiIOS/DouShouQiIOS/Class/PlayerVM.swift @@ -10,8 +10,25 @@ import DouShouQiModel class PlayerVM : ObservableObject { @Published var player : Player + @Published var data : Player.Data + @Published var isEditing : Bool - public init(player: Player) { + public init(with player: Player) { self.player = player + self.data = player.data + self.isEditing = false + } + + func onEditing(){ + self.data = player.data + self.isEditing = true + } + + func onEdited(isCanceled cancel : Bool = false){ + if !cancel { + //save + player.update(from: data) + } + isEditing.toggle() } } diff --git a/DouShouQiIOS/DouShouQiIOS/Extension/PlayerExtension.swift b/DouShouQiIOS/DouShouQiIOS/Extension/PlayerExtension.swift new file mode 100644 index 0000000..4d7ea22 --- /dev/null +++ b/DouShouQiIOS/DouShouQiIOS/Extension/PlayerExtension.swift @@ -0,0 +1,35 @@ +// +// PlayerExtension.swift +// DouShouQiIOS +// +// Created by Pierre FERREIRA on 04/06/2024. +// + +import Foundation +import DouShouQiModel + +extension Player { + + + + struct Data : Identifiable { + //var dataId: ObjectIdentifier = ObjectIdentifier() + var id : Owner + var name : String + // Copie de player + } + + var data : Data { + Data(id: self.id, name: self.name) + } + + func update (from data : Data){ + ///Test de l'id + if (data.id == .noOne){ + print("Problème de mise a jour des données") + return + } + + ///Assignations + } +} diff --git a/DouShouQiIOS/DouShouQiIOS/View/EditModalView.swift b/DouShouQiIOS/DouShouQiIOS/View/EditModalView.swift index 2792357..bb9891c 100644 --- a/DouShouQiIOS/DouShouQiIOS/View/EditModalView.swift +++ b/DouShouQiIOS/DouShouQiIOS/View/EditModalView.swift @@ -6,21 +6,27 @@ // import SwiftUI +import DouShouQiModel struct EditModalView: View { + @Binding var playerVM : PlayerVM @Binding var isEdited : Bool var name : String = "" var body: some View { VStack{ - Text("Hello, World!") TextField("Entrez un nom ici",text: .constant("")) + + }.padding() + .toolbar { + Button(action: {playerVM.onEdited()}, label: {Text("Done")}) + Button(action: {playerVM.onEdited(isCanceled: true)}, label: {Text("Cancel")}) } } } struct EditModalView_Previews: PreviewProvider { static var previews: some View { - EditModalView(isEdited: .constant(true)) + EditModalView(playerVM: .constant(PlayerVM(with:Player(withName: "toto", andId: .player2)! )), isEdited: .constant(true)) } } diff --git a/DouShouQiIOS/DouShouQiIOS/View/PlayerView.swift b/DouShouQiIOS/DouShouQiIOS/View/PlayerView.swift index d9f781e..1b98150 100644 --- a/DouShouQiIOS/DouShouQiIOS/View/PlayerView.swift +++ b/DouShouQiIOS/DouShouQiIOS/View/PlayerView.swift @@ -20,7 +20,8 @@ struct PlayerView: View { var histoMatches : [ Match ] @State var isEdited : Bool = false - //@ObservedObject var player : PlayerVM //TODO + //@ObservedObject var player : PlayerVM //TODO + //@Published var data : Data var body: some View { //ZStack{