annotate GeoQuiz/GuessTheCapitalView.swift @ 8:e09959b4e4a8

fix bugs
author Dennis C. M. <dennis@denniscm.com>
date Thu, 06 Oct 2022 11:14:34 +0200
parents d945e52b0704
children a793f33f05fb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
1 //
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
2 // GuessTheCapitalView.swift
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
3 // GeoQuiz
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
4 //
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
5 // Created by Dennis Concepción Martín on 14/9/22.
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
6 //
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
7
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
8 import SwiftUI
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
9
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
10 struct GuessTheCapitalView: View {
6
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
11 @StateObject var game = CountryGame()
0
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
12
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
13 var body: some View {
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
14 ZStack {
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
15 LinearGradient(gradient: .secondary, startPoint: .top, endPoint: .bottom)
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
16 .ignoresSafeArea()
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
17
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
18 GeometryReader { geo in
6
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
19 VStack(spacing: 20) {
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
20 GameToolbar(game: game, color: .atomicTangerine)
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
21
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
22 Spacer()
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
23
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
24 FlagImage(flagSymbol: game.correctAnswer.value.flag, cornerRadius: 20)
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
25 .shadow(radius: 10)
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
26 .frame(height: geo.size.height * 0.15)
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
27
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
28 Spacer()
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
29
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
30 HStack {
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
31 VStack(alignment: .leading, spacing: 10) {
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
32 Text("Question \(game.questionCounter) of \(game.data.count)")
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
33 .font(.title3)
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
34 .foregroundColor(.white.opacity(0.7))
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
35
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
36 Text("What is the capital of \(game.correctAnswer.key)?")
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
37 .font(.title)
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
38 .fontWeight(.semibold)
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
39 .foregroundColor(.white)
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
40 }
0
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
41
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
42 Spacer()
6
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
43 }
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
44
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
45 VStack {
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
46 ForEach(Array(game.userChoices.keys), id: \.self) { countryName in
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
47 Button {
8
e09959b4e4a8 fix bugs
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
48 game.answer((key: countryName, value: game.data[countryName]!)) {
e09959b4e4a8 fix bugs
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
49 game.selector()
e09959b4e4a8 fix bugs
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
50 }
6
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
51 } label: {
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
52 AnswerButton(
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
53 optionName: game.data[countryName]!.capital,
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
54 color: .chinaPink
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
55 )
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
56 .frame(height: geo.size.height * 0.08)
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
57 }
0
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
58 }
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
59 }
6
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
60 }
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
61 .padding()
0
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
62 }
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
63 }
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
64 .navigationBarHidden(true)
7
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
65 .modifier(GameAlertsModifier(game: game))
0
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
66 }
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
67 }
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
68
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
69 struct GuessCapitalView_Previews: PreviewProvider {
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
70 static var previews: some View {
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
71 NavigationView {
7
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
72 GuessTheCapitalView()
0
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
73 }
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
74 }
413e2d21333e first commit
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
75 }