Moves MonsterDetailWrapper into its own file to separate the core data dependencies.
This commit is contained in:
		| @@ -13,6 +13,7 @@ | |||||||
| 		E20209F525D8E04300EFE733 /* AdvantageType.swift in Sources */ = {isa = PBXBuildFile; fileRef = E20209F325D8E04300EFE733 /* AdvantageType.swift */; }; | 		E20209F525D8E04300EFE733 /* AdvantageType.swift in Sources */ = {isa = PBXBuildFile; fileRef = E20209F325D8E04300EFE733 /* AdvantageType.swift */; }; | ||||||
| 		E20209FB25D8E19100EFE733 /* SkillViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E20209F925D8E19100EFE733 /* SkillViewModel.swift */; }; | 		E20209FB25D8E19100EFE733 /* SkillViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E20209F925D8E19100EFE733 /* SkillViewModel.swift */; }; | ||||||
| 		E20209FC25D8E19100EFE733 /* MonsterViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E20209FA25D8E19100EFE733 /* MonsterViewModel.swift */; }; | 		E20209FC25D8E19100EFE733 /* MonsterViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E20209FA25D8E19100EFE733 /* MonsterViewModel.swift */; }; | ||||||
|  | 		E20CEFEC261FEA2100B55D72 /* MonsterDetailWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = E20CEFEB261FEA2100B55D72 /* MonsterDetailWrapper.swift */; }; | ||||||
| 		E210B83A25B42D980083EAC5 /* MCProficiencyPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = E210B83925B42D980083EAC5 /* MCProficiencyPicker.swift */; }; | 		E210B83A25B42D980083EAC5 /* MCProficiencyPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = E210B83925B42D980083EAC5 /* MCProficiencyPicker.swift */; }; | ||||||
| 		E210B83F25B42DAB0083EAC5 /* MCAdvantagePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = E210B83E25B42DAB0083EAC5 /* MCAdvantagePicker.swift */; }; | 		E210B83F25B42DAB0083EAC5 /* MCAdvantagePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = E210B83E25B42DAB0083EAC5 /* MCAdvantagePicker.swift */; }; | ||||||
| 		E21661D12616E9A800117782 /* ImportMonster.swift in Sources */ = {isa = PBXBuildFile; fileRef = E21661D02616E9A800117782 /* ImportMonster.swift */; }; | 		E21661D12616E9A800117782 /* ImportMonster.swift in Sources */ = {isa = PBXBuildFile; fileRef = E21661D02616E9A800117782 /* ImportMonster.swift */; }; | ||||||
| @@ -56,7 +57,7 @@ | |||||||
| 		E2570FFA25B1AE020055B23B /* Collections.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2570FF925B1AE020055B23B /* Collections.swift */; }; | 		E2570FFA25B1AE020055B23B /* Collections.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2570FF925B1AE020055B23B /* Collections.swift */; }; | ||||||
| 		E2570FFF25B1AE180055B23B /* Library.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2570FFE25B1AE180055B23B /* Library.swift */; }; | 		E2570FFF25B1AE180055B23B /* Library.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2570FFE25B1AE180055B23B /* Library.swift */; }; | ||||||
| 		E257100425B1AF4A0055B23B /* SearchBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = E257100325B1AF4A0055B23B /* SearchBar.swift */; }; | 		E257100425B1AF4A0055B23B /* SearchBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = E257100325B1AF4A0055B23B /* SearchBar.swift */; }; | ||||||
| 		E257100925B1B2480055B23B /* MonsterDetail.swift in Sources */ = {isa = PBXBuildFile; fileRef = E257100825B1B2470055B23B /* MonsterDetail.swift */; }; | 		E257100925B1B2480055B23B /* MonsterDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E257100825B1B2470055B23B /* MonsterDetailView.swift */; }; | ||||||
| 		E26CDA2B25CFB38E00E3F50D /* MCArmorTypePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = E26CDA2A25CFB38E00E3F50D /* MCArmorTypePicker.swift */; }; | 		E26CDA2B25CFB38E00E3F50D /* MCArmorTypePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = E26CDA2A25CFB38E00E3F50D /* MCArmorTypePicker.swift */; }; | ||||||
| 		E2B5285925B3028700AAA69E /* EditMonster.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2B5285825B3028700AAA69E /* EditMonster.swift */; }; | 		E2B5285925B3028700AAA69E /* EditMonster.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2B5285825B3028700AAA69E /* EditMonster.swift */; }; | ||||||
| 		E2BD702C25B3A8D70058ED69 /* MCTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2BD702B25B3A8D70058ED69 /* MCTextField.swift */; }; | 		E2BD702C25B3A8D70058ED69 /* MCTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2BD702B25B3A8D70058ED69 /* MCTextField.swift */; }; | ||||||
| @@ -96,6 +97,7 @@ | |||||||
| 		E20209F325D8E04300EFE733 /* AdvantageType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AdvantageType.swift; sourceTree = "<group>"; }; | 		E20209F325D8E04300EFE733 /* AdvantageType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AdvantageType.swift; sourceTree = "<group>"; }; | ||||||
| 		E20209F925D8E19100EFE733 /* SkillViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SkillViewModel.swift; sourceTree = "<group>"; }; | 		E20209F925D8E19100EFE733 /* SkillViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SkillViewModel.swift; sourceTree = "<group>"; }; | ||||||
| 		E20209FA25D8E19100EFE733 /* MonsterViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MonsterViewModel.swift; sourceTree = "<group>"; }; | 		E20209FA25D8E19100EFE733 /* MonsterViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MonsterViewModel.swift; sourceTree = "<group>"; }; | ||||||
|  | 		E20CEFEB261FEA2100B55D72 /* MonsterDetailWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MonsterDetailWrapper.swift; sourceTree = "<group>"; }; | ||||||
| 		E210B83925B42D980083EAC5 /* MCProficiencyPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MCProficiencyPicker.swift; sourceTree = "<group>"; }; | 		E210B83925B42D980083EAC5 /* MCProficiencyPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MCProficiencyPicker.swift; sourceTree = "<group>"; }; | ||||||
| 		E210B83E25B42DAB0083EAC5 /* MCAdvantagePicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MCAdvantagePicker.swift; sourceTree = "<group>"; }; | 		E210B83E25B42DAB0083EAC5 /* MCAdvantagePicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MCAdvantagePicker.swift; sourceTree = "<group>"; }; | ||||||
| 		E21661D02616E9A800117782 /* ImportMonster.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImportMonster.swift; sourceTree = "<group>"; }; | 		E21661D02616E9A800117782 /* ImportMonster.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImportMonster.swift; sourceTree = "<group>"; }; | ||||||
| @@ -144,7 +146,7 @@ | |||||||
| 		E2570FF925B1AE020055B23B /* Collections.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Collections.swift; sourceTree = "<group>"; }; | 		E2570FF925B1AE020055B23B /* Collections.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Collections.swift; sourceTree = "<group>"; }; | ||||||
| 		E2570FFE25B1AE180055B23B /* Library.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Library.swift; sourceTree = "<group>"; }; | 		E2570FFE25B1AE180055B23B /* Library.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Library.swift; sourceTree = "<group>"; }; | ||||||
| 		E257100325B1AF4A0055B23B /* SearchBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchBar.swift; sourceTree = "<group>"; }; | 		E257100325B1AF4A0055B23B /* SearchBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchBar.swift; sourceTree = "<group>"; }; | ||||||
| 		E257100825B1B2470055B23B /* MonsterDetail.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MonsterDetail.swift; sourceTree = "<group>"; }; | 		E257100825B1B2470055B23B /* MonsterDetailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MonsterDetailView.swift; sourceTree = "<group>"; }; | ||||||
| 		E26CDA2A25CFB38E00E3F50D /* MCArmorTypePicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MCArmorTypePicker.swift; sourceTree = "<group>"; }; | 		E26CDA2A25CFB38E00E3F50D /* MCArmorTypePicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MCArmorTypePicker.swift; sourceTree = "<group>"; }; | ||||||
| 		E2B5285825B3028700AAA69E /* EditMonster.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditMonster.swift; sourceTree = "<group>"; }; | 		E2B5285825B3028700AAA69E /* EditMonster.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditMonster.swift; sourceTree = "<group>"; }; | ||||||
| 		E2BD702B25B3A8D70058ED69 /* MCTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MCTextField.swift; sourceTree = "<group>"; }; | 		E2BD702B25B3A8D70058ED69 /* MCTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MCTextField.swift; sourceTree = "<group>"; }; | ||||||
| @@ -290,7 +292,8 @@ | |||||||
| 				E210B83925B42D980083EAC5 /* MCProficiencyPicker.swift */, | 				E210B83925B42D980083EAC5 /* MCProficiencyPicker.swift */, | ||||||
| 				E2BD703025B3BBB90058ED69 /* MCStepperField.swift */, | 				E2BD703025B3BBB90058ED69 /* MCStepperField.swift */, | ||||||
| 				E2BD702B25B3A8D70058ED69 /* MCTextField.swift */, | 				E2BD702B25B3A8D70058ED69 /* MCTextField.swift */, | ||||||
| 				E257100825B1B2470055B23B /* MonsterDetail.swift */, | 				E257100825B1B2470055B23B /* MonsterDetailView.swift */, | ||||||
|  | 				E20CEFEB261FEA2100B55D72 /* MonsterDetailWrapper.swift */, | ||||||
| 				E2570FEF25B1ADC10055B23B /* Search.swift */, | 				E2570FEF25B1ADC10055B23B /* Search.swift */, | ||||||
| 				E257100325B1AF4A0055B23B /* SearchBar.swift */, | 				E257100325B1AF4A0055B23B /* SearchBar.swift */, | ||||||
| 			); | 			); | ||||||
| @@ -481,7 +484,7 @@ | |||||||
| 				E216B791260C1FE800FB205F /* LanguageViewModel.swift in Sources */, | 				E216B791260C1FE800FB205F /* LanguageViewModel.swift in Sources */, | ||||||
| 				E210B83A25B42D980083EAC5 /* MCProficiencyPicker.swift in Sources */, | 				E210B83A25B42D980083EAC5 /* MCProficiencyPicker.swift in Sources */, | ||||||
| 				E2570FF025B1ADC10055B23B /* Search.swift in Sources */, | 				E2570FF025B1ADC10055B23B /* Search.swift in Sources */, | ||||||
| 				E257100925B1B2480055B23B /* MonsterDetail.swift in Sources */, | 				E257100925B1B2480055B23B /* MonsterDetailView.swift in Sources */, | ||||||
| 				E219248526198A1200C84E12 /* SkillDTO.swift in Sources */, | 				E219248526198A1200C84E12 /* SkillDTO.swift in Sources */, | ||||||
| 				E2D473FD25B532C900CB36D7 /* Color+Hex.swift in Sources */, | 				E2D473FD25B532C900CB36D7 /* Color+Hex.swift in Sources */, | ||||||
| 				E2B5285925B3028700AAA69E /* EditMonster.swift in Sources */, | 				E2B5285925B3028700AAA69E /* EditMonster.swift in Sources */, | ||||||
| @@ -523,6 +526,7 @@ | |||||||
| 				E20209E825D8DEC100EFE733 /* AbilityScore.swift in Sources */, | 				E20209E825D8DEC100EFE733 /* AbilityScore.swift in Sources */, | ||||||
| 				E219248A26198A5400C84E12 /* TraitDTO.swift in Sources */, | 				E219248A26198A5400C84E12 /* TraitDTO.swift in Sources */, | ||||||
| 				E210B83F25B42DAB0083EAC5 /* MCAdvantagePicker.swift in Sources */, | 				E210B83F25B42DAB0083EAC5 /* MCAdvantagePicker.swift in Sources */, | ||||||
|  | 				E20CEFEC261FEA2100B55D72 /* MonsterDetailWrapper.swift in Sources */, | ||||||
| 				E216B7C1260C6B6000FB205F /* MCChallengeRatingPicker.swift in Sources */, | 				E216B7C1260C6B6000FB205F /* MCChallengeRatingPicker.swift in Sources */, | ||||||
| 				E26CDA2B25CFB38E00E3F50D /* MCArmorTypePicker.swift in Sources */, | 				E26CDA2B25CFB38E00E3F50D /* MCArmorTypePicker.swift in Sources */, | ||||||
| 			); | 			); | ||||||
|   | |||||||
| @@ -324,41 +324,13 @@ struct MonsterDetailView: View { | |||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| struct MonsterDetailWrapper: View { | struct MonsterDetailView_Previews: PreviewProvider { | ||||||
|     // TODO: Add display for when the monster is blind |  | ||||||
|     let kTextColor: Color = Color(hex: 0x982818) |  | ||||||
|      |  | ||||||
|     @ObservedObject var monster: Monster |  | ||||||
|     @StateObject private var viewModel = MonsterViewModel() |  | ||||||
|      |  | ||||||
|     var body: some View { |  | ||||||
|          |  | ||||||
|         MonsterDetailView(viewModel: viewModel) |  | ||||||
|             .onAppear(perform: { |  | ||||||
|                 viewModel.copyFromMonster(monster: monster) |  | ||||||
|             }) |  | ||||||
|             .toolbar(content: { |  | ||||||
|                 ToolbarItem(placement: .primaryAction) { |  | ||||||
|                     NavigationLink("Edit", destination: EditMonster(monster: monster)) |  | ||||||
|                 } |  | ||||||
|             }) |  | ||||||
|             .navigationTitle(monster.name ?? "") |  | ||||||
|             .navigationBarTitleDisplayMode(.inline) |  | ||||||
|     } |  | ||||||
|      |  | ||||||
|     private func editMonster() { |  | ||||||
|         print("Edit Monster pressed") |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| struct MonsterDetailWrapper_Previews: PreviewProvider { |  | ||||||
|     static var previews: some View { |     static var previews: some View { | ||||||
|         let context = PersistenceController.preview.container.viewContext |         let monster = MonsterViewModel.init() | ||||||
|         let monster = Monster.init(context: context) |  | ||||||
|         monster.name = "Steve" |         monster.name = "Steve" | ||||||
|         monster.size = "Medium" |         monster.size = "Medium" | ||||||
|         monster.type = "humanoid" |         monster.type = "humanoid" | ||||||
|         monster.subtype = "human" |         monster.subType = "human" | ||||||
|         monster.alignment = "LG" |         monster.alignment = "LG" | ||||||
|         monster.hitDice = 6 |         monster.hitDice = 6 | ||||||
|         monster.hasCustomHP = true |         monster.hasCustomHP = true | ||||||
| @@ -377,18 +349,18 @@ struct MonsterDetailWrapper_Previews: PreviewProvider { | |||||||
|         monster.intelligenceScore = 14 |         monster.intelligenceScore = 14 | ||||||
|         monster.wisdomScore = 16 |         monster.wisdomScore = 16 | ||||||
|         monster.charismaScore = 18 |         monster.charismaScore = 18 | ||||||
|         monster.strengthSavingThrowAdvantageEnum = AdvantageType.none |         monster.strengthSavingThrowAdvantage = AdvantageType.none | ||||||
|         monster.strengthSavingThrowProficiencyEnum = ProficiencyType.none |         monster.strengthSavingThrowProficiency = ProficiencyType.none | ||||||
|         monster.dexteritySavingThrowAdvantageEnum = AdvantageType.advantage |         monster.dexteritySavingThrowAdvantage = AdvantageType.advantage | ||||||
|         monster.dexteritySavingThrowProficiencyEnum = ProficiencyType.proficient |         monster.dexteritySavingThrowProficiency = ProficiencyType.proficient | ||||||
|         monster.constitutionSavingThrowAdvantageEnum = AdvantageType.disadvantage |         monster.constitutionSavingThrowAdvantage = AdvantageType.disadvantage | ||||||
|         monster.constitutionSavingThrowProficiencyEnum = ProficiencyType.expertise |         monster.constitutionSavingThrowProficiency = ProficiencyType.expertise | ||||||
|         monster.intelligenceSavingThrowAdvantageEnum = AdvantageType.none |         monster.intelligenceSavingThrowAdvantage = AdvantageType.none | ||||||
|         monster.intelligenceSavingThrowProficiencyEnum = ProficiencyType.expertise |         monster.intelligenceSavingThrowProficiency = ProficiencyType.expertise | ||||||
|         monster.wisdomSavingThrowAdvantageEnum = AdvantageType.advantage |         monster.wisdomSavingThrowAdvantage = AdvantageType.advantage | ||||||
|         monster.wisdomSavingThrowProficiencyEnum = ProficiencyType.proficient |         monster.wisdomSavingThrowProficiency = ProficiencyType.proficient | ||||||
|         monster.charismaSavingThrowAdvantageEnum = AdvantageType.disadvantage |         monster.charismaSavingThrowAdvantage = AdvantageType.disadvantage | ||||||
|         monster.charismaSavingThrowProficiencyEnum = ProficiencyType.none |         monster.charismaSavingThrowProficiency = ProficiencyType.none | ||||||
|         monster.telepathy = 1 |         monster.telepathy = 1 | ||||||
|         monster.languages = [ |         monster.languages = [ | ||||||
|             LanguageViewModel("English", true), |             LanguageViewModel("English", true), | ||||||
| @@ -396,12 +368,7 @@ struct MonsterDetailWrapper_Previews: PreviewProvider { | |||||||
|         ] |         ] | ||||||
|          |          | ||||||
|         return Group { |         return Group { | ||||||
|             MonsterDetailWrapper(monster: monster) |             MonsterDetailView(viewModel: monster) | ||||||
|                 .environment(\.managedObjectContext, context) |  | ||||||
|                 .previewDevice("iPod touch (7th generation)") |  | ||||||
|             MonsterDetailWrapper(monster: monster) |  | ||||||
|                 .environment(\.managedObjectContext, context) |  | ||||||
|                 .previewDevice("iPad Pro (11-inch) (2nd generation)") |  | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
							
								
								
									
										89
									
								
								MonsterCards/Views/MonsterDetailWrapper.swift
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								MonsterCards/Views/MonsterDetailWrapper.swift
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,89 @@ | |||||||
|  | // | ||||||
|  | //  MonsterDetailWrapper.swift | ||||||
|  | //  MonsterCards | ||||||
|  | // | ||||||
|  | //  Created by Tom Hicks on 4/7/21. | ||||||
|  | // | ||||||
|  |  | ||||||
|  | import SwiftUI | ||||||
|  |  | ||||||
|  | struct MonsterDetailWrapper: View { | ||||||
|  |     let kTextColor = Color(hex: 0x982818) | ||||||
|  |      | ||||||
|  |     @ObservedObject var monster: Monster | ||||||
|  |     @StateObject private var viewModel = MonsterViewModel() | ||||||
|  |      | ||||||
|  |     var body: some View { | ||||||
|  |          | ||||||
|  |         MonsterDetailView(viewModel: viewModel) | ||||||
|  |             .onAppear(perform: { | ||||||
|  |                 viewModel.copyFromMonster(monster: monster) | ||||||
|  |             }) | ||||||
|  |             .toolbar(content: { | ||||||
|  |                 ToolbarItem(placement: .primaryAction) { | ||||||
|  |                     NavigationLink("Edit", destination: EditMonster(monster: monster)) | ||||||
|  |                 } | ||||||
|  |             }) | ||||||
|  |             .navigationTitle(monster.name ?? "") | ||||||
|  |             .navigationBarTitleDisplayMode(.inline) | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     private func editMonster() { | ||||||
|  |         print("Edit Monster pressed") | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | struct MonsterDetailWrapper_Previews: PreviewProvider { | ||||||
|  |     static var previews: some View { | ||||||
|  |         let context = PersistenceController.preview.container.viewContext | ||||||
|  |         let monster = Monster.init(context: context) | ||||||
|  |         monster.name = "Steve" | ||||||
|  |         monster.size = "Medium" | ||||||
|  |         monster.type = "humanoid" | ||||||
|  |         monster.subtype = "human" | ||||||
|  |         monster.alignment = "LG" | ||||||
|  |         monster.hitDice = 6 | ||||||
|  |         monster.hasCustomHP = true | ||||||
|  |         monster.customHP = "12 (1d10)+2" | ||||||
|  |         monster.walkSpeed = 5 | ||||||
|  |         monster.burrowSpeed = 10 | ||||||
|  |         monster.climbSpeed = 15 | ||||||
|  |         monster.flySpeed = 20 | ||||||
|  |         monster.swimSpeed = 25 | ||||||
|  |         monster.canHover = true | ||||||
|  |         monster.hasCustomSpeed = false | ||||||
|  |         monster.customSpeed = "walk: 5 ft." | ||||||
|  |         monster.strengthScore = 8 | ||||||
|  |         monster.dexterityScore = 10 | ||||||
|  |         monster.constitutionScore = 12 | ||||||
|  |         monster.intelligenceScore = 14 | ||||||
|  |         monster.wisdomScore = 16 | ||||||
|  |         monster.charismaScore = 18 | ||||||
|  |         monster.strengthSavingThrowAdvantageEnum = AdvantageType.none | ||||||
|  |         monster.strengthSavingThrowProficiencyEnum = ProficiencyType.none | ||||||
|  |         monster.dexteritySavingThrowAdvantageEnum = AdvantageType.advantage | ||||||
|  |         monster.dexteritySavingThrowProficiencyEnum = ProficiencyType.proficient | ||||||
|  |         monster.constitutionSavingThrowAdvantageEnum = AdvantageType.disadvantage | ||||||
|  |         monster.constitutionSavingThrowProficiencyEnum = ProficiencyType.expertise | ||||||
|  |         monster.intelligenceSavingThrowAdvantageEnum = AdvantageType.none | ||||||
|  |         monster.intelligenceSavingThrowProficiencyEnum = ProficiencyType.expertise | ||||||
|  |         monster.wisdomSavingThrowAdvantageEnum = AdvantageType.advantage | ||||||
|  |         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 { | ||||||
|  |             MonsterDetailWrapper(monster: monster) | ||||||
|  |                 .environment(\.managedObjectContext, context) | ||||||
|  |                 .previewDevice("iPod touch (7th generation)") | ||||||
|  |             MonsterDetailWrapper(monster: monster) | ||||||
|  |                 .environment(\.managedObjectContext, context) | ||||||
|  |                 .previewDevice("iPad Pro (11-inch) (2nd generation)") | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user