Merge pull request 'ParametersMenuView' (#11) from ParametersMenuView into dev
Reviewed-on: #11pull/14/head^2
commit
a1fc645b81
@ -0,0 +1,38 @@
|
||||
{
|
||||
"colors" : [
|
||||
{
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "1.000",
|
||||
"green" : "1.000",
|
||||
"red" : "1.000"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
},
|
||||
{
|
||||
"appearances" : [
|
||||
{
|
||||
"appearance" : "luminosity",
|
||||
"value" : "dark"
|
||||
}
|
||||
],
|
||||
"color" : {
|
||||
"color-space" : "srgb",
|
||||
"components" : {
|
||||
"alpha" : "1.000",
|
||||
"blue" : "1.000",
|
||||
"green" : "1.000",
|
||||
"red" : "1.000"
|
||||
}
|
||||
},
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
@ -0,0 +1,71 @@
|
||||
//
|
||||
// DoushiQiPicker.swift
|
||||
// ArkitDoushiQi
|
||||
//
|
||||
// Created by Johan LACHENAL on 21/05/2024.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct DoushiQiPicker<EnumType: RawRepresentable & Identifiable & Hashable>: View where EnumType.RawValue == String {
|
||||
let title: String
|
||||
@Binding var selectedOption: EnumType
|
||||
let options: [EnumType]
|
||||
|
||||
init(title: String, selectedOption: Binding<EnumType>, options: [EnumType]) {
|
||||
self.title = title
|
||||
self._selectedOption = selectedOption
|
||||
self.options = options
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
VStack(spacing: 0) {
|
||||
Divider().background(Color.gray)
|
||||
Menu {
|
||||
Picker(title, selection: $selectedOption) {
|
||||
ForEach(options) { option in
|
||||
Text(option.rawValue.description)
|
||||
.padding()
|
||||
}
|
||||
}
|
||||
.labelsHidden()
|
||||
.pickerStyle(InlinePickerStyle())
|
||||
} label: {
|
||||
HStack {
|
||||
Text(title)
|
||||
.foregroundColor(.black)
|
||||
.padding()
|
||||
Spacer() // .frame(width : (20 - CGFloat(title.count)))
|
||||
Text(selectedOption.rawValue.description)
|
||||
.foregroundColor(.black)
|
||||
.padding()
|
||||
}
|
||||
.frame(maxWidth: .infinity)
|
||||
.padding(EdgeInsets(top: 0, leading: 32, bottom: 0, trailing: 32))
|
||||
}
|
||||
Divider().background(Color.gray)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct DoushiQiPicker_Previews: PreviewProvider {
|
||||
enum AI: String, CaseIterable, Identifiable, Hashable {
|
||||
case RandomAction = "IA Random"
|
||||
case EasyTrainedAI = "IA Facile"
|
||||
case MediumTrainedAI = "IA Intermédiaire"
|
||||
|
||||
var id: String { self.rawValue }
|
||||
}
|
||||
@State static var selectedItem = AI.RandomAction
|
||||
static var previews: some View {
|
||||
DoushiQiPicker(
|
||||
title: "Selectionne une IA :",
|
||||
selectedOption: $selectedItem,
|
||||
options: AI.allCases
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -0,0 +1,46 @@
|
||||
//
|
||||
// MainMenuButton.swift
|
||||
// ArkitDoushiQi
|
||||
//
|
||||
// Created by Johan LACHENAL on 16/05/2024.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct MainMenuButton<Content : View>: View {
|
||||
let content: Content
|
||||
let title: String
|
||||
|
||||
init(title: String, @ViewBuilder content: () -> Content) {
|
||||
self.title = title
|
||||
self.content = content()
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
NavigationLink(title){
|
||||
// ici mettre la vue sur les parties enregistrées à la place du texte n'hésite pas à tester sur la preview la navigation ça marche, faire pareil pour les autres
|
||||
content
|
||||
}
|
||||
.frame(maxWidth: .infinity)
|
||||
.padding(EdgeInsets(top: 10, leading: 32, bottom: 10, trailing: 32))
|
||||
.buttonStyle(.bordered)
|
||||
.controlSize(.large)
|
||||
.foregroundColor(.white)
|
||||
.background(.black)
|
||||
.buttonBorderShape(.roundedRectangle)
|
||||
.clipShape(Capsule())
|
||||
Spacer().frame(height: 50)
|
||||
}
|
||||
}
|
||||
|
||||
struct MainMenuButton_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
NavigationView {
|
||||
VStack {
|
||||
MainMenuButton(title: "Parties enregistrées") {
|
||||
Text("Je suis un test")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,59 @@
|
||||
//
|
||||
// ParametersMenuView.swift
|
||||
// ArkitDoushiQi
|
||||
//
|
||||
// Created by Johan LACHENAL on 21/05/2024.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
enum AIT: String, CaseIterable, Identifiable, Hashable {
|
||||
case RandomAction = "IA Random"
|
||||
case EasyTrainedAI = "IA Facile"
|
||||
case MediumTrainedAI = "IA Intermédiaire"
|
||||
|
||||
var id: String { self.rawValue }
|
||||
}
|
||||
|
||||
enum Language: String, CaseIterable, Identifiable, Hashable {
|
||||
case French = "Français"
|
||||
case English = "English"
|
||||
var id: String { self.rawValue }
|
||||
}
|
||||
|
||||
enum Rules: String, CaseIterable, Identifiable, Hashable {
|
||||
case Easy = "Simplifié"
|
||||
case Regular = "Normal"
|
||||
var id: String { self.rawValue }
|
||||
}
|
||||
|
||||
struct ParametersMenuView: View {
|
||||
@State private var selectedAIOption: AIT = .RandomAction
|
||||
@State private var selectedLanguageOption: Language = .French
|
||||
@State private var selectedRulesOption: Rules = .Regular
|
||||
var body: some View {
|
||||
VStack(alignment: .leading) {
|
||||
HStack(alignment: .center) {
|
||||
Text("Paramètres").bold().font(.title)
|
||||
}.frame(maxWidth: .infinity)
|
||||
Spacer().frame(maxHeight: 30)
|
||||
ToggleView()
|
||||
DoushiQiPicker(title: "Sélectionne une IA :",
|
||||
selectedOption: $selectedAIOption,
|
||||
options: AIT.allCases)
|
||||
DoushiQiPicker(title: "Sélectionne un langage :",
|
||||
selectedOption: $selectedLanguageOption,
|
||||
options: Language.allCases)
|
||||
DoushiQiPicker(title: "Sélectionne les règles :",
|
||||
selectedOption: $selectedRulesOption,
|
||||
options: Rules.allCases)
|
||||
|
||||
}.frame(maxHeight: .infinity, alignment: .top)
|
||||
}
|
||||
}
|
||||
|
||||
struct ParametersMenuView_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
ParametersMenuView()
|
||||
}
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
//
|
||||
// ToggleView.swift
|
||||
// ArkitDoushiQi
|
||||
//
|
||||
// Created by Johan LACHENAL on 21/05/2024.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct ToggleView: View {
|
||||
@AppStorage("isDarkMode") private var isDarkMode = false
|
||||
var body: some View {
|
||||
Divider().background(Color.gray).padding(.vertical, 1)
|
||||
Toggle("Dark Mode", isOn: $isDarkMode)
|
||||
.toggleStyle(SwitchToggleStyle(tint: .blue))
|
||||
.padding(EdgeInsets(top: 0, leading: 48, bottom: 0, trailing: 48))
|
||||
Divider().background(Color.gray).padding(.vertical, 1)
|
||||
}
|
||||
}
|
||||
|
||||
struct ToggleView_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
VStack{
|
||||
ToggleView()
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
/
|
||||
// Picker.swift
|
||||
// ArkitDoushiQi
|
||||
//
|
||||
// Created by Johan LACHENAL on 21/05/2024.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct Picker: View {
|
||||
var body: some View {
|
||||
Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/)
|
||||
}
|
||||
}
|
||||
|
||||
struct Picker_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
Picker()
|
||||
}
|
||||
}
|
Loading…
Reference in new issue