From 5aede274c820b7f7e51e775f79818048a265cbf6 Mon Sep 17 00:00:00 2001 From: Tom Hicks Date: Thu, 25 Mar 2021 01:25:56 -0700 Subject: [PATCH] Adds actions. --- MonsterCards/Models/MonsterViewModel.swift | 7 +++++++ .../MonsterCards.xcdatamodel/contents | 3 ++- MonsterCards/Views/EditMonster.swift | 4 ++++ MonsterCards/Views/MonsterDetail.swift | 16 ++++++++++++++-- 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/MonsterCards/Models/MonsterViewModel.swift b/MonsterCards/Models/MonsterViewModel.swift index 63c0294..4f3e854 100644 --- a/MonsterCards/Models/MonsterViewModel.swift +++ b/MonsterCards/Models/MonsterViewModel.swift @@ -61,6 +61,7 @@ class MonsterViewModel: ObservableObject { @Published var customChallengeRating: String @Published var customProficiencyBonus: Int64 @Published var abilities: [AbilityViewModel] + @Published var actions: [AbilityViewModel] init(_ rawMonster: Monster? = nil) { self.name = "" @@ -114,6 +115,7 @@ class MonsterViewModel: ObservableObject { self.customChallengeRating = "" self.customProficiencyBonus = 0 self.abilities = [] + self.actions = [] if (rawMonster != nil) { self.copyFromMonster(monster: rawMonster!) @@ -194,6 +196,9 @@ class MonsterViewModel: ObservableObject { // These are manually sorted in the UI self.abilities = (monster.abilities ?? []) .map {AbilityViewModel($0.name, $0.abilityDescription)} + + self.actions = (monster.actions ?? []) + .map {AbilityViewModel($0.name, $0.abilityDescription)} } func copyToMonster(monster: Monster) { @@ -271,5 +276,7 @@ class MonsterViewModel: ObservableObject { monster.languages = languages.map {LanguageViewModel($0.name, $0.speaks)} monster.abilities = abilities.map {AbilityViewModel($0.name, $0.abilityDescription)} + + monster.actions = actions.map {AbilityViewModel($0.name, $0.abilityDescription)} } } diff --git a/MonsterCards/MonsterCards.xcdatamodeld/MonsterCards.xcdatamodel/contents b/MonsterCards/MonsterCards.xcdatamodeld/MonsterCards.xcdatamodel/contents index 7aca238..3592774 100644 --- a/MonsterCards/MonsterCards.xcdatamodeld/MonsterCards.xcdatamodel/contents +++ b/MonsterCards/MonsterCards.xcdatamodeld/MonsterCards.xcdatamodel/contents @@ -2,6 +2,7 @@ + @@ -68,7 +69,7 @@ - + \ No newline at end of file diff --git a/MonsterCards/Views/EditMonster.swift b/MonsterCards/Views/EditMonster.swift index 0967135..9b11304 100644 --- a/MonsterCards/Views/EditMonster.swift +++ b/MonsterCards/Views/EditMonster.swift @@ -76,6 +76,10 @@ struct EditMonster: View { NavigationLink( "Abilities", destination: EditAbilities(viewModel: monsterViewModel, path: \.abilities, title: "Abilities")) + + NavigationLink( + "Actions", + destination: EditAbilities(viewModel: monsterViewModel, path: \.actions, title: "Actions")) } } diff --git a/MonsterCards/Views/MonsterDetail.swift b/MonsterCards/Views/MonsterDetail.swift index e395265..c28cae6 100644 --- a/MonsterCards/Views/MonsterDetail.swift +++ b/MonsterCards/Views/MonsterDetail.swift @@ -211,6 +211,7 @@ struct MonsterDetail: View { let monsterLanguagesDescription = monster.languagesDescription let monsterChallengeRatingDescription = monster.challengeRatingDescription let monsterAbilities: [AbilityViewModel] = monster.abilities ?? [] + let monsterActions: [AbilityViewModel] = monster.actions ?? [] BasicInfoView(monster: monster) @@ -248,14 +249,25 @@ struct MonsterDetail: View { if (monsterAbilities.count > 0) { ForEach(monsterAbilities) { ability in VStack { - Markdown(Document(ability.renderedText(monster)/*.fullText*/)) + Markdown(Document(ability.renderedText(monster))) Divider() } } } // Actions - + if (monsterActions.count > 0) { + VStack { + Text("Actions") + ForEach(monsterActions) { action in + VStack { + Markdown(Document(action.renderedText(monster))) + Divider() + } + } + } + } + // Legendary Actions }