diff --git a/ArkitDoushiQi/ArkitDoushiQi.xcodeproj/project.xcworkspace/xcuserdata/lodufour1.xcuserdatad/UserInterfaceState.xcuserstate b/ArkitDoushiQi/ArkitDoushiQi.xcodeproj/project.xcworkspace/xcuserdata/lodufour1.xcuserdatad/UserInterfaceState.xcuserstate index 11ae6f1..4f15a0d 100644 Binary files a/ArkitDoushiQi/ArkitDoushiQi.xcodeproj/project.xcworkspace/xcuserdata/lodufour1.xcuserdatad/UserInterfaceState.xcuserstate and b/ArkitDoushiQi/ArkitDoushiQi.xcodeproj/project.xcworkspace/xcuserdata/lodufour1.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/ArkitDoushiQi/ArkitDoushiQi/ArkitDoushiQiApp.swift b/ArkitDoushiQi/ArkitDoushiQi/ArkitDoushiQiApp.swift index 3677904..8790ce7 100644 --- a/ArkitDoushiQi/ArkitDoushiQi/ArkitDoushiQiApp.swift +++ b/ArkitDoushiQi/ArkitDoushiQi/ArkitDoushiQiApp.swift @@ -19,11 +19,14 @@ struct ArkitDoushiQiApp: App { @AppStorage("isDarkMode") private var isDarkMode = false @StateObject private var languageSettings = LanguageSettings(selectedLanguage: .English) - var body: some Scene { - WindowGroup { - MainMenu(playButtonText: "Jouer", registeredGamesButtonText: "Parties enregistrées",ParametersButtontText: "Paramètres") - .environmentObject(languageSettings) - .preferredColorScheme(isDarkMode ? .dark : .light) - } - } + var body: some Scene { + WindowGroup { + MainMenu( + playButtonText: "Play", + registeredGamesButtonText: "Registered Games", + parametersButtonText: "Parameters" + ) + .environmentObject(languageSettings) + } + } } diff --git a/ArkitDoushiQi/ArkitDoushiQi/Utils/LanguageSettings.swift b/ArkitDoushiQi/ArkitDoushiQi/Utils/LanguageSettings.swift index 2143fd2..ed07eaa 100644 --- a/ArkitDoushiQi/ArkitDoushiQi/Utils/LanguageSettings.swift +++ b/ArkitDoushiQi/ArkitDoushiQi/Utils/LanguageSettings.swift @@ -6,18 +6,22 @@ // import Foundation -import SwiftUI class LanguageSettings: ObservableObject { - @Published var selectedLanguage: Language + @Published var selectedLanguage: Language { + didSet { + UserDefaults.standard.set([selectedLanguage.localeIdentifier], forKey: "AppleLanguages") + UserDefaults.standard.synchronize() + NotificationCenter.default.post(name: NSNotification.Name("LanguageChanged"), object: nil) + } + } init(selectedLanguage: Language) { self.selectedLanguage = selectedLanguage + UserDefaults.standard.set([selectedLanguage.localeIdentifier], forKey: "AppleLanguages") } func changeLanguage(to newLanguage: Language) { - UserDefaults.standard.set([newLanguage.localeIdentifier], forKey: "AppleLanguages") - UserDefaults.standard.synchronize() selectedLanguage = newLanguage } } diff --git a/ArkitDoushiQi/ArkitDoushiQi/Views/Components/Controls/PickerComponent.swift b/ArkitDoushiQi/ArkitDoushiQi/Views/Components/Controls/PickerComponent.swift index cafef09..94d431f 100644 --- a/ArkitDoushiQi/ArkitDoushiQi/Views/Components/Controls/PickerComponent.swift +++ b/ArkitDoushiQi/ArkitDoushiQi/Views/Components/Controls/PickerComponent.swift @@ -25,7 +25,8 @@ struct PickerComponent: Vi Picker(title, selection: $selectedOption) { ForEach(options) { option in Text(option.rawValue.description) - .padding() + .tag(option) + .padding() } } .labelsHidden() @@ -49,12 +50,12 @@ struct PickerComponent: Vi } struct PickerComponent_Previews: PreviewProvider { - @State static var selectedItem = AI.RandomAction + @State static var selectedItem = Language.English static var previews: some View { PickerComponent( - title: "Selectionne une IA :", + title: "Select Language:", selectedOption: $selectedItem, - options: AI.allCases + options: Language.allCases ) } } diff --git a/ArkitDoushiQi/ArkitDoushiQi/Views/GeneralParametersMenu/GeneralParametersMenuView.swift b/ArkitDoushiQi/ArkitDoushiQi/Views/GeneralParametersMenu/GeneralParametersMenuView.swift index 71d99b0..1a0862c 100644 --- a/ArkitDoushiQi/ArkitDoushiQi/Views/GeneralParametersMenu/GeneralParametersMenuView.swift +++ b/ArkitDoushiQi/ArkitDoushiQi/Views/GeneralParametersMenu/GeneralParametersMenuView.swift @@ -36,11 +36,11 @@ struct GeneralParametersMenuView: View { .onChange(of: languageSettings.selectedLanguage) { newLanguage in languageSettings.changeLanguage(to: newLanguage) } - }.frame(maxHeight: .infinity, alignment: .top) + } + .frame(maxHeight: .infinity, alignment: .top) } } - struct GeneralParametersMenuView_Previews: PreviewProvider { static var previews: some View { let languageSettings = LanguageSettings(selectedLanguage: .French) diff --git a/ArkitDoushiQi/ArkitDoushiQi/Views/MainMenu/MainMenu.swift b/ArkitDoushiQi/ArkitDoushiQi/Views/MainMenu/MainMenu.swift index c55abbd..2690c53 100644 --- a/ArkitDoushiQi/ArkitDoushiQi/Views/MainMenu/MainMenu.swift +++ b/ArkitDoushiQi/ArkitDoushiQi/Views/MainMenu/MainMenu.swift @@ -9,45 +9,55 @@ import SwiftUI struct MainMenu: View { @EnvironmentObject var languageSettings: LanguageSettings - let playButtonText : String - let registeredGamesButtonText : String - let ParametersButtontText : String + let playButtonText: String + let registeredGamesButtonText: String + let parametersButtonText: String @State private var action: Int? = 0 @AppStorage("isDarkMode") private var isDarkMode = false + @State private var reloadView = false // Déclarer reloadView ici + var body: some View { ZStack { NavigationView { - VStack { - Spacer() - HStack() { - Text("DouShiQi") - .bold() - .font(.title).padding() + VStack { + Spacer() + HStack { + Text("DouShiQi") + .bold() + .font(.title).padding() + } + Spacer().frame(height: 40) + VStack(alignment: .leading) { + ButtonComponent(title: playButtonText) { + GameParametersMenuView() } - Spacer().frame(height: 40) - VStack(alignment: .leading) { - ButtonComponent(title: playButtonText) - { GameParametersMenuView() } - Spacer().frame(height: 30) - ButtonComponent(title: registeredGamesButtonText) - { Text("parties enregistrées page") } - Spacer().frame(height: 30) - ButtonComponent(title: ParametersButtontText) - { GeneralParametersMenuView( + Spacer().frame(height: 30) + ButtonComponent(title: registeredGamesButtonText) { + Text("parties enregistrées page") + } + Spacer().frame(height: 30) + ButtonComponent(title: parametersButtonText) { + GeneralParametersMenuView( selectedAIOption: .RandomAction, selectedRulesOption: .Regular - )} + ).id(reloadView) // Utilisez l'ID pour forcer le rechargement de la vue } - Spacer() } - .padding(EdgeInsets(top: 10, leading: 32, bottom: 10, trailing: 32)) + Spacer() } + .padding(EdgeInsets(top: 10, leading: 32, bottom: 10, trailing: 32)) + } + .environmentObject(languageSettings) + .onReceive(NotificationCenter.default.publisher(for: NSNotification.Name("LanguageChanged"))) { _ in + self.reloadView.toggle() // Changez la valeur pour forcer le rechargement } + } } } struct MainMenu_Previews: PreviewProvider { static var previews: some View { - MainMenu(playButtonText: "Jouer", registeredGamesButtonText: "Parties enregistrées",ParametersButtontText: "Paramètres") + MainMenu(playButtonText: "Jouer", registeredGamesButtonText: "Parties enregistrées", parametersButtonText: "Paramètres") + .environmentObject(LanguageSettings(selectedLanguage: .French)) } }