You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
2.0 KiB
54 lines
2.0 KiB
//
|
|
// ParametersMenuView.swift
|
|
// ArkitDoushiQi
|
|
//
|
|
// Created by Johan LACHENAL on 21/05/2024.
|
|
//
|
|
|
|
import SwiftUI
|
|
|
|
struct GeneralParametersMenuView: View {
|
|
@EnvironmentObject var languageSettings: LanguageSettings
|
|
@State private var selectedAIOption: AI
|
|
@State private var selectedRulesOption: Rules
|
|
|
|
let parametersTitle = LocalizedStringKey("ParametersTitle")
|
|
let darkModeDescription = LocalizedStringKey("DarkModeDescription")
|
|
let darkModeBooleanName: String = "isDarkMode"
|
|
let darkModeDefaultValue: Bool = false
|
|
let languagePickerTitle = LocalizedStringKey("LanguagePickerTitle")
|
|
|
|
init(selectedAIOption: AI, selectedRulesOption: Rules) {
|
|
self._selectedAIOption = State(initialValue: selectedAIOption)
|
|
self._selectedRulesOption = State(initialValue: selectedRulesOption)
|
|
}
|
|
|
|
var body: some View {
|
|
VStack(alignment: .leading) {
|
|
HStack(alignment: .center) {
|
|
Text(parametersTitle).bold().font(.title)
|
|
}.frame(maxWidth: .infinity)
|
|
Spacer().frame(maxHeight: 30)
|
|
ToggleComponent(description: darkModeDescription, booleanName: darkModeBooleanName, booleanDefaultValue: darkModeDefaultValue)
|
|
PickerComponent(title: languagePickerTitle,
|
|
selectedOption: $languageSettings.selectedLanguage,
|
|
options: Language.allCases)
|
|
.onChange(of: languageSettings.selectedLanguage) { newLanguage in
|
|
languageSettings.changeLanguage(to: newLanguage)
|
|
}
|
|
}
|
|
.frame(maxHeight: .infinity, alignment: .top)
|
|
}
|
|
}
|
|
|
|
struct GeneralParametersMenuView_Previews: PreviewProvider {
|
|
static var previews: some View {
|
|
let languageSettings = LanguageSettings(selectedLanguage: .French)
|
|
GeneralParametersMenuView(
|
|
selectedAIOption: .RandomAction,
|
|
selectedRulesOption: .Regular
|
|
)
|
|
.environmentObject(languageSettings)
|
|
}
|
|
}
|