diff --git a/enzevalos_iphone/BadgeCaseView.swift b/enzevalos_iphone/BadgeCaseView.swift index 68de1152eb6103545e7b51bc651e6e8844920985..b2627040641f97aab3f6e1314bd584bb18125ea6 100644 --- a/enzevalos_iphone/BadgeCaseView.swift +++ b/enzevalos_iphone/BadgeCaseView.swift @@ -13,7 +13,7 @@ struct BadgeCaseView: View { UITableView.appearance().separatorStyle = .none } - let badges: [Badge] = GamificationData.sharedInstance.badges.map { Badge(type: $0.type, description: $0.displayName, imageOn: $0.onName, imageOff: $0.offName) } + let badges: [Badge] = GamificationData.sharedInstance.badges.map { Badge(type: $0.type, description: $0.displayName, imageOn: $0.onName, imageOff: $0.offName, isActive: $0.isAchieved()) } var body: some View { NavigationView { @@ -23,7 +23,7 @@ struct BadgeCaseView: View { List { ForEach(badges) { badge in NavigationLink(destination: BadgeProgressView(badge: badge)) { - BadgeItem(badgeType: badge.type, badgeImageSrcOn: badge.imageOn, badgeImageSrcOff: badge.imageOff, badgeTitle: badge.description) + BadgeItem(badgeType: badge.type, badgeImageSrcOn: badge.imageOn, badgeImageSrcOff: badge.imageOff, badgeTitle: badge.description, isActive: badge.isActive) } } } @@ -49,6 +49,7 @@ struct Badge: Identifiable { var description: String var imageOn: String var imageOff: String + var isActive: Bool } struct BadgeItem: View { @@ -57,7 +58,7 @@ struct BadgeItem: View { let badgeImageSrcOn: String let badgeImageSrcOff: String let badgeTitle: String - @State var isActive: Bool = false + var isActive: Bool init(badgeType: BadgeType, badgeImageSrcOn: String, badgeImageSrcOff: String, badgeTitle: String, isActive: Bool = false) { @@ -70,7 +71,7 @@ struct BadgeItem: View { var body: some View { HStack { - Image(self.isActive ? self.badgeImageSrcOn : self.badgeImageSrcOff) + Image(isActive ? badgeImageSrcOn : badgeImageSrcOff) .resizable() .scaledToFit() .frame(width: 40,height: 40) diff --git a/enzevalos_iphone/BadgeProgressView.swift b/enzevalos_iphone/BadgeProgressView.swift index 676d915b8818aba8fca35f858bb549961fbe6851..2593778b9f5ca936b911a3a98e74cc07c8e81fe4 100644 --- a/enzevalos_iphone/BadgeProgressView.swift +++ b/enzevalos_iphone/BadgeProgressView.swift @@ -17,8 +17,8 @@ struct BadgeProgressView: View { titleBar Divider() List { - ForEach(GamificationData.sharedInstance.subBadgesforBadge(badge: badge.type).map { Badge(type: $0.type, description: $0.displayName, imageOn: $0.onName, imageOff: $0.offName) }) { subBadge in - Quest(isLast: false, isDone: false, description: subBadge.description, imageOn: subBadge.imageOn, imageOff: subBadge.imageOff) + ForEach(GamificationData.sharedInstance.subBadgesforBadge(badge: badge.type).map { Badge(type: $0.type, description: $0.displayName, imageOn: $0.onName, imageOff: $0.offName, isActive: $0.isAchieved()) }) { subBadge in + Quest(isQuestCompleted: subBadge.isActive, description: subBadge.description, imageOn: subBadge.imageOn, imageOff: subBadge.imageOff) } } } @@ -41,15 +41,13 @@ struct BadgeProgressView: View { struct Quest: View { - let isLast: Bool - let isDone: Bool + let isQuestCompleted: Bool let description: String let imageOn: String let imageOff: String - init(isLast: Bool, isDone: Bool, description: String, imageOn: String, imageOff: String) { - self.isLast = isLast - self.isDone = isDone + init(isQuestCompleted: Bool, description: String, imageOn: String, imageOff: String) { + self.isQuestCompleted = isQuestCompleted self.description = description self.imageOn = imageOn self.imageOff = imageOff @@ -57,7 +55,7 @@ struct Quest: View { var body: some View { HStack { - Image(isDone ? imageOn : imageOff) + Image(isQuestCompleted ? imageOn : imageOff) .resizable() .scaledToFit() .frame(width: 40,height: 40) @@ -69,6 +67,6 @@ struct Quest: View { struct BadgeProgressView_Previews: PreviewProvider { static var previews: some View { - BadgeProgressView(badge: Badge(type: .MailMaster, description: NSLocalizedString("Mailmaster", comment:"Mailmaster badge" ), imageOn: "verschluesseltOn", imageOff: "verschluesseltOff")) + BadgeProgressView(badge: Badge(type: .MailMaster, description: NSLocalizedString("Mailmaster", comment:"Mailmaster badge" ), imageOn: "verschluesseltOn", imageOff: "verschluesseltOff", isActive: true)) } }