annotate GeoQuiz/Components/UserProgressHelper.swift @ 17:8dac58bb4569

fix build bug
author Dennis C. M. <dennis@denniscm.com>
date Thu, 20 Oct 2022 18:07:51 +0200
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
17
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
1 //
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
2 // UserProgressHelper.swift
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
3 // GeoQuiz
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
4 //
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
5 // Created by Dennis Concepción Martín on 20/10/22.
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
6 //
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
7
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
8 import SwiftUI
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
9
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
10 struct ViewTest: View {
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
11 var body: some View {
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
12 GeometryReader { geo in
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
13 ZStack {
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
14 Capsule()
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
15 .frame(height: 6)
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
16 }
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
17 }
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
18 }
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
19 }
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
20
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
21 struct UserProgress: View {
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
22 let name: String
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
23 let gradient: Gradient
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
24 let score: Int
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
25 let maxScore: Int
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
26 let pctScore: Double
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
27
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
28 var body: some View {
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
29 VStack {
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
30 Spacer()
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
31 HStack {
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
32 Text(name)
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
33 .font(.headline)
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
34
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
35 Spacer()
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
36
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
37 Text("\(score) of \(maxScore)")
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
38 .font(.callout)
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
39 .foregroundColor(.secondary)
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
40 }
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
41
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
42 GeometryReader { geo in
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
43 ZStack(alignment: .leading) {
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
44 Capsule()
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
45 .foregroundColor(.customBackground)
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
46 .frame(height: 6)
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
47
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
48 Capsule()
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
49 .fill(
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
50 LinearGradient(
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
51 gradient: gradient,
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
52 startPoint: .trailing, endPoint: .leading
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
53 )
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
54 )
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
55 .frame(width: geo.size.width * pctScore, height: 6)
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
56 }
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
57 .frame(height: geo.size.height)
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
58 }
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
59 }
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
60 }
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
61
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
62 init(playedGames: FetchedResults<PlayedGame>, gameType: GameType) {
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
63 switch(gameType) {
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
64 case . guessTheFlag:
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
65 self.name = GuessTheFlagInfo.name
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
66 self.gradient = GuessTheFlagInfo.gradient
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
67 self.maxScore = GuessTheFlagInfo.numberOfQuestions
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
68 case .guessTheCapital:
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
69 self.name = GuessTheCapitalInfo.name
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
70 self.gradient = GuessTheCapitalInfo.gradient
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
71 self.maxScore = GuessTheCapitalInfo.numberOfQuestions
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
72 case .guessTheCountry:
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
73 self.name = GuessTheCountryInfo.name
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
74 self.gradient = GuessTheCountryInfo.gradient
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
75 self.maxScore = GuessTheCountryInfo.numberOfQuestions
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
76 case .guessThePopulation:
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
77 self.name = GuessThePopulationInfo.name
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
78 self.gradient = GuessThePopulationInfo.gradient
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
79 self.maxScore = GuessThePopulationInfo.numberOfQuestions
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
80 }
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
81
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
82 let games = playedGames.filter { $0.type == gameType }
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
83 self.score = Int(games.max { $0.score < $1.score }?.score ?? 0)
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
84 self.pctScore = Double(score) / Double(maxScore)
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
85 }
8dac58bb4569 fix build bug
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
86 }