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 { ...@@ -13,7 +13,7 @@ struct BadgeCaseView: View {
UITableView.appearance().separatorStyle = .none 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 { var body: some View {
NavigationView { NavigationView {
...@@ -23,7 +23,7 @@ struct BadgeCaseView: View { ...@@ -23,7 +23,7 @@ struct BadgeCaseView: View {
List { List {
ForEach(badges) { badge in ForEach(badges) { badge in
NavigationLink(destination: BadgeProgressView(badge: badge)) { 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 { ...@@ -49,6 +49,7 @@ struct Badge: Identifiable {
var description: String var description: String
var imageOn: String var imageOn: String
var imageOff: String var imageOff: String
var isActive: Bool
} }
struct BadgeItem: View { struct BadgeItem: View {
...@@ -57,7 +58,7 @@ struct BadgeItem: View { ...@@ -57,7 +58,7 @@ struct BadgeItem: View {
let badgeImageSrcOn: String let badgeImageSrcOn: String
let badgeImageSrcOff: String let badgeImageSrcOff: String
let badgeTitle: String let badgeTitle: String
@State var isActive: Bool = false var isActive: Bool
init(badgeType: BadgeType, badgeImageSrcOn: String, badgeImageSrcOff: String, badgeTitle: String, isActive: Bool = false) { init(badgeType: BadgeType, badgeImageSrcOn: String, badgeImageSrcOff: String, badgeTitle: String, isActive: Bool = false) {
...@@ -70,7 +71,7 @@ struct BadgeItem: View { ...@@ -70,7 +71,7 @@ struct BadgeItem: View {
var body: some View { var body: some View {
HStack { HStack {
Image(self.isActive ? self.badgeImageSrcOn : self.badgeImageSrcOff) Image(isActive ? badgeImageSrcOn : badgeImageSrcOff)
.resizable() .resizable()
.scaledToFit() .scaledToFit()
.frame(width: 40,height: 40) .frame(width: 40,height: 40)
......
...@@ -17,8 +17,8 @@ struct BadgeProgressView: View { ...@@ -17,8 +17,8 @@ struct BadgeProgressView: View {
titleBar titleBar
Divider() Divider()
List { List {
ForEach(GamificationData.sharedInstance.subBadgesforBadge(badge: badge.type).map { Badge(type: $0.type, description: $0.displayName, imageOn: $0.onName, imageOff: $0.offName) }) { subBadge in 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(isLast: false, isDone: false, description: subBadge.description, imageOn: subBadge.imageOn, imageOff: subBadge.imageOff) Quest(isQuestCompleted: subBadge.isActive, description: subBadge.description, imageOn: subBadge.imageOn, imageOff: subBadge.imageOff)
} }
} }
} }
...@@ -41,15 +41,13 @@ struct BadgeProgressView: View { ...@@ -41,15 +41,13 @@ struct BadgeProgressView: View {
struct Quest: View { struct Quest: View {
let isLast: Bool let isQuestCompleted: Bool
let isDone: Bool
let description: String let description: String
let imageOn: String let imageOn: String
let imageOff: String let imageOff: String
init(isLast: Bool, isDone: Bool, description: String, imageOn: String, imageOff: String) { init(isQuestCompleted: Bool, description: String, imageOn: String, imageOff: String) {
self.isLast = isLast self.isQuestCompleted = isQuestCompleted
self.isDone = isDone
self.description = description self.description = description
self.imageOn = imageOn self.imageOn = imageOn
self.imageOff = imageOff self.imageOff = imageOff
...@@ -57,7 +55,7 @@ struct Quest: View { ...@@ -57,7 +55,7 @@ struct Quest: View {
var body: some View { var body: some View {
HStack { HStack {
Image(isDone ? imageOn : imageOff) Image(isQuestCompleted ? imageOn : imageOff)
.resizable() .resizable()
.scaledToFit() .scaledToFit()
.frame(width: 40,height: 40) .frame(width: 40,height: 40)
...@@ -69,6 +67,6 @@ struct Quest: View { ...@@ -69,6 +67,6 @@ struct Quest: View {
struct BadgeProgressView_Previews: PreviewProvider { struct BadgeProgressView_Previews: PreviewProvider {
static var previews: some View { 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