Update(LanguageApp): fonctionnel, mais peut-être mieux

pull/20/head
Louis DUFOUR 11 months ago
parent e68da450b3
commit 43eea3ab07

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

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

@ -25,7 +25,8 @@ struct PickerComponent<EnumType: RawRepresentable & Identifiable & Hashable>: Vi
Picker(title, selection: $selectedOption) {
ForEach(options) { option in
Text(option.rawValue.description)
.padding()
.tag(option)
.padding()
}
}
.labelsHidden()
@ -49,12 +50,12 @@ struct PickerComponent<EnumType: RawRepresentable & Identifiable & Hashable>: 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
)
}
}

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

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

Loading…
Cancel
Save