Adds EditSkill view to allow editing a specific skill.
This commit is contained in:
42
iOS/MonsterCards/Views/EditAbilityScores.swift
Normal file
42
iOS/MonsterCards/Views/EditAbilityScores.swift
Normal file
@@ -0,0 +1,42 @@
|
||||
//
|
||||
// EditAbilityScores.swift
|
||||
// MonsterCards
|
||||
//
|
||||
// Created by Tom Hicks on 3/21/21.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct EditAbilityScores: View {
|
||||
@ObservedObject var monsterViewModel: MonsterViewModel
|
||||
|
||||
var body: some View {
|
||||
List {MCStepperField(
|
||||
label: "STR",
|
||||
value: $monsterViewModel.strengthScore)
|
||||
MCStepperField(
|
||||
label: "DEX",
|
||||
value: $monsterViewModel.dexterityScore)
|
||||
MCStepperField(
|
||||
label: "CON",
|
||||
value: $monsterViewModel.constitutionScore)
|
||||
MCStepperField(
|
||||
label: "INT",
|
||||
value: $monsterViewModel.intelligenceScore)
|
||||
MCStepperField(
|
||||
label: "WIS",
|
||||
value: $monsterViewModel.wisdomScore)
|
||||
MCStepperField(
|
||||
label: "CHA",
|
||||
value: $monsterViewModel.charismaScore)
|
||||
}
|
||||
.textCase(nil)
|
||||
}
|
||||
}
|
||||
|
||||
struct EditAbilityScores_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
let viewModel = MonsterViewModel(nil)
|
||||
EditAbilityScores(monsterViewModel: viewModel)
|
||||
}
|
||||
}
|
||||
44
iOS/MonsterCards/Views/EditArmor.swift
Normal file
44
iOS/MonsterCards/Views/EditArmor.swift
Normal file
@@ -0,0 +1,44 @@
|
||||
//
|
||||
// EditArmor.swift
|
||||
// MonsterCards
|
||||
//
|
||||
// Created by Tom Hicks on 3/21/21.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct EditArmor: View {
|
||||
@ObservedObject var monsterViewModel: MonsterViewModel
|
||||
|
||||
var body: some View {
|
||||
List {
|
||||
// Armor Type select bound to monster.armorTypeEnum
|
||||
MCArmorTypePicker(
|
||||
label: "Armor Type",
|
||||
value: $monsterViewModel.armorType)
|
||||
|
||||
// Toggle bound to monster.hasShield?
|
||||
Toggle(
|
||||
"Has Shield",
|
||||
isOn: $monsterViewModel.hasShield)
|
||||
|
||||
// Number with -/+ buttons bound to monster.naturalArmorBonus
|
||||
MCStepperField(
|
||||
label: "Natural Armor Bonus",
|
||||
value: $monsterViewModel.naturalArmorBonus)
|
||||
|
||||
// Editable Text field bound to monster.customArmorText?
|
||||
MCTextField(
|
||||
label: "Custom Armor",
|
||||
value: $monsterViewModel.customArmor)
|
||||
}
|
||||
.textCase(nil)
|
||||
}
|
||||
}
|
||||
|
||||
struct EditArmor_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
let viewModel = MonsterViewModel(nil)
|
||||
EditArmor(monsterViewModel: viewModel)
|
||||
}
|
||||
}
|
||||
66
iOS/MonsterCards/Views/EditBasicInfo.swift
Normal file
66
iOS/MonsterCards/Views/EditBasicInfo.swift
Normal file
@@ -0,0 +1,66 @@
|
||||
//
|
||||
// EditBasicInfo.swift
|
||||
// MonsterCards
|
||||
//
|
||||
// Created by Tom Hicks on 3/21/21.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct EditBasicInfo: View {
|
||||
|
||||
@ObservedObject var monsterViewModel: MonsterViewModel
|
||||
|
||||
var body: some View {
|
||||
List {
|
||||
// Editable Text field bound to monster.name
|
||||
MCTextField(
|
||||
label: "Name",
|
||||
value: $monsterViewModel.name)
|
||||
|
||||
// Editable Text field bound to monster.size
|
||||
MCTextField(
|
||||
label: "Size",
|
||||
value: $monsterViewModel.size)
|
||||
|
||||
// Editable Text field bound to monster.type
|
||||
MCTextField(
|
||||
label: "Type",
|
||||
value: $monsterViewModel.type)
|
||||
|
||||
// Editable Text field bound to monster.subType
|
||||
MCTextField(
|
||||
label: "Subtype",
|
||||
value: $monsterViewModel.subType)
|
||||
|
||||
// Editable Text field bound to monster.alignment
|
||||
MCTextField(
|
||||
label: "Alignment",
|
||||
value: $monsterViewModel.alignment)
|
||||
|
||||
// Number with -/+ buttons bound to monster.hitDice
|
||||
MCStepperField(
|
||||
label: "Hit Dice",
|
||||
value: $monsterViewModel.hitDice)
|
||||
|
||||
// Toggle bound to monster.hasCustomHP?
|
||||
Toggle(
|
||||
"Has Custom HP",
|
||||
isOn:$monsterViewModel.hasCustomHP)
|
||||
|
||||
// Editable Text field bound to monster.customHpText?
|
||||
MCTextField(
|
||||
label: "Custom HP",
|
||||
value: $monsterViewModel.customHP)
|
||||
|
||||
}
|
||||
.textCase(nil)
|
||||
}
|
||||
}
|
||||
|
||||
struct EditBasicInfo_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
let viewModel = MonsterViewModel.init(nil)
|
||||
EditBasicInfo(monsterViewModel: viewModel)
|
||||
}
|
||||
}
|
||||
79
iOS/MonsterCards/Views/EditSavingThrows.swift
Normal file
79
iOS/MonsterCards/Views/EditSavingThrows.swift
Normal file
@@ -0,0 +1,79 @@
|
||||
//
|
||||
// EditSavingThrows.swift
|
||||
// MonsterCards
|
||||
//
|
||||
// Created by Tom Hicks on 3/21/21.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct EditSavingThrows: View {
|
||||
@ObservedObject var monsterViewModel: MonsterViewModel
|
||||
|
||||
var body: some View {
|
||||
List {
|
||||
VStack {
|
||||
MCAdvantagePicker(
|
||||
label: "Strength Advantage",
|
||||
value: $monsterViewModel.strengthSavingThrowAdvantage)
|
||||
|
||||
MCProficiencyPicker(
|
||||
label: "Strength Proficiency",
|
||||
value: $monsterViewModel.strengthSavingThrowProficiency)
|
||||
}
|
||||
VStack {
|
||||
MCAdvantagePicker(
|
||||
label: "Dexterity Advantage",
|
||||
value: $monsterViewModel.dexteritySavingThrowAdvantage)
|
||||
|
||||
MCProficiencyPicker(
|
||||
label: "Dexterity Proficiency",
|
||||
value: $monsterViewModel.dexteritySavingThrowProficiency)
|
||||
}
|
||||
VStack {
|
||||
MCAdvantagePicker(
|
||||
label: "Constitution Advantage",
|
||||
value: $monsterViewModel.constitutionSavingThrowAdvantage)
|
||||
|
||||
MCProficiencyPicker(
|
||||
label: "Constitution Proficiency",
|
||||
value: $monsterViewModel.constitutionSavingThrowProficiency)
|
||||
}
|
||||
VStack {
|
||||
MCAdvantagePicker(
|
||||
label: "Intelligence Advantage",
|
||||
value: $monsterViewModel.intelligenceSavingThrowAdvantage)
|
||||
|
||||
MCProficiencyPicker(
|
||||
label: "Intelligence Proficiency",
|
||||
value: $monsterViewModel.intelligenceSavingThrowProficiency)
|
||||
}
|
||||
VStack {
|
||||
MCAdvantagePicker(
|
||||
label: "Wisdom Advantage",
|
||||
value: $monsterViewModel.wisdomSavingThrowAdvantage)
|
||||
|
||||
MCProficiencyPicker(
|
||||
label: "Wisdom Proficiency",
|
||||
value: $monsterViewModel.wisdomSavingThrowProficiency)
|
||||
}
|
||||
VStack {
|
||||
MCAdvantagePicker(
|
||||
label: "Charisma Advantage",
|
||||
value: $monsterViewModel.charismaSavingThrowAdvantage)
|
||||
|
||||
MCProficiencyPicker(
|
||||
label: "Charisma Proficiency",
|
||||
value: $monsterViewModel.charismaSavingThrowProficiency)
|
||||
}
|
||||
}
|
||||
.textCase(nil)
|
||||
}
|
||||
}
|
||||
|
||||
struct EditSavingThrows_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
let viewModel = MonsterViewModel(nil)
|
||||
EditSavingThrows(monsterViewModel: viewModel)
|
||||
}
|
||||
}
|
||||
39
iOS/MonsterCards/Views/EditSkill.swift
Normal file
39
iOS/MonsterCards/Views/EditSkill.swift
Normal file
@@ -0,0 +1,39 @@
|
||||
//
|
||||
// EditSkill.swift
|
||||
// MonsterCards
|
||||
//
|
||||
// Created by Tom Hicks on 3/21/21.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct EditSkill: View {
|
||||
@ObservedObject var skillViewModel: SkillViewModel
|
||||
|
||||
var body: some View {
|
||||
List {
|
||||
MCTextField(
|
||||
label: "Name",
|
||||
value: $skillViewModel.name)
|
||||
|
||||
MCAbilityScorePicker(
|
||||
label: "Ability Score",
|
||||
value: $skillViewModel.abilityScore)
|
||||
|
||||
MCAdvantagePicker(
|
||||
label: "Advantage",
|
||||
value: $skillViewModel.advantage)
|
||||
|
||||
MCProficiencyPicker(
|
||||
label: "Proficiency",
|
||||
value: $skillViewModel.proficiency)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct EditSkill_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
let viewModel = SkillViewModel(nil)
|
||||
EditSkill(skillViewModel: viewModel)
|
||||
}
|
||||
}
|
||||
44
iOS/MonsterCards/Views/EditSkills.swift
Normal file
44
iOS/MonsterCards/Views/EditSkills.swift
Normal file
@@ -0,0 +1,44 @@
|
||||
//
|
||||
// EditSkills.swift
|
||||
// MonsterCards
|
||||
//
|
||||
// Created by Tom Hicks on 3/21/21.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct EditSkills: View {
|
||||
@ObservedObject var monsterViewModel: MonsterViewModel
|
||||
|
||||
var body: some View {
|
||||
List {
|
||||
ForEach(monsterViewModel.skills, id: \.self) { skill in
|
||||
NavigationLink(skill.name, destination: EditSkill(skillViewModel: skill))
|
||||
}
|
||||
.onDelete(perform: { indexSet in
|
||||
for index in indexSet {
|
||||
monsterViewModel.skills.remove(at: index)
|
||||
}
|
||||
})
|
||||
}
|
||||
.toolbar(content: {
|
||||
Button(
|
||||
action: {
|
||||
let newSkill = SkillViewModel(nil)
|
||||
newSkill.name = "New Skill"
|
||||
monsterViewModel.skills.append(newSkill)
|
||||
},
|
||||
label: {
|
||||
Image(systemName: "plus")
|
||||
}
|
||||
)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
struct EditSkills_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
let viewModel = MonsterViewModel(nil)
|
||||
EditSkills(monsterViewModel: viewModel)
|
||||
}
|
||||
}
|
||||
@@ -16,7 +16,6 @@ struct MCTextField: View {
|
||||
.font(.caption2)
|
||||
TextField(label, text: value)
|
||||
.autocapitalization(/*@START_MENU_TOKEN@*/.none/*@END_MENU_TOKEN@*/)
|
||||
// .padding(.top, -4)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user