Skip to content
Snippets Groups Projects
Commit a5d621cc authored by cpilaszewicz's avatar cpilaszewicz
Browse files

Display the actual state of the badges

parent 58606974
No related branches found
No related tags found
2 merge requests!58Onboarding screens swift ui merge dev,!56Create badge case screen
......@@ -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)
......
......@@ -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))
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment