Adds languages to the editor.

This commit is contained in:
2021-03-24 22:29:54 -07:00
parent 07f59788a3
commit 627f02409c
10 changed files with 245 additions and 23 deletions

View File

@@ -0,0 +1,28 @@
//
// EditLanguage.swift
// MonsterCards
//
// Created by Tom Hicks on 3/24/21.
//
import SwiftUI
struct EditLanguage: View {
@ObservedObject var viewModel: LanguageViewModel
var body: some View {
MCTextField(
label: "Name",
value: $viewModel.name)
.autocapitalization(.none)
Toggle("Speaks", isOn: $viewModel.speaks)
}
}
struct EditLanguage_Previews: PreviewProvider {
static var previews: some View {
let viewModel = LanguageViewModel()
EditLanguage(viewModel: viewModel)
}
}

View File

@@ -0,0 +1,48 @@
//
// EditLanguages.swift
// MonsterCards
//
// Created by Tom Hicks on 3/24/21.
//
import SwiftUI
struct EditLanguages: View {
@ObservedObject var viewModel: MonsterViewModel
var body: some View {
let sortedLanguages = viewModel.languages.sorted()
List {
MCTextField(
label: "Understands But",
value: $viewModel.understandsBut)
MCStepperField(label: "Telepathy", prefix: "", step: 5, suffix: " ft.", value: $viewModel.telepathy)
ForEach(sortedLanguages/*viewModel.languages*/) { language in
NavigationLink(language.name, destination: EditLanguage(viewModel: language))
}
}
.toolbar(content: {
Button(
action: {
let newLanguage = LanguageViewModel("English")
viewModel.languages.append(newLanguage)
viewModel.languages = viewModel.languages.sorted()
},
label: {
Image(systemName: "plus")
}
)
})
.onAppear(perform: {
viewModel.languages = viewModel.languages.sorted()
})
}
}
struct EditLanguages_Previews: PreviewProvider {
static var previews: some View {
let viewModel = MonsterViewModel()
EditLanguages(viewModel: viewModel)
}
}

View File

@@ -65,6 +65,10 @@ struct EditMonster: View {
NavigationLink(
"Senses",
destination: EditStrings(viewModel: monsterViewModel, path: \.senses, title: "Senses"))
NavigationLink(
"Languages",
destination: EditLanguages(viewModel: monsterViewModel))
}
}

View File

@@ -302,6 +302,11 @@ struct MonsterDetail_Previews: PreviewProvider {
monster.wisdomSavingThrowProficiencyEnum = ProficiencyType.proficient
monster.charismaSavingThrowAdvantageEnum = AdvantageType.disadvantage
monster.charismaSavingThrowProficiencyEnum = ProficiencyType.none
monster.telepathy = 1
monster.languages = [
LanguageViewModel("English", true),
LanguageViewModel("French", false)
]
return Group {
MonsterDetail(monster: monster)