annotate GeoQuiz/GuessTheCountryView.swift @ 35:1b36c022f138

Change info files
author Dennis <dennis@denniscm.com>
date Fri, 11 Aug 2023 17:15:58 +0000
parents 6d574bd1644f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
1 //
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
2 // GuessTheCountryView.swift
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
3 // GeoQuiz
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
4 //
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
5 // Created by Dennis Concepción Martín on 24/9/22.
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
6 //
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
7
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
8 import SwiftUI
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
9
27
3f4b366d476d add flag layout settings
Dennis C. M. <dennis@denniscm.com>
parents: 26
diff changeset
10 struct GuessTheCountryView: View, GameView {
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 23
diff changeset
11 @StateObject var gameController = CityGameController()
6
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
12
15
f1967f8cc67b first iteration of core data
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
13 @Environment(\.managedObjectContext) var moc
f1967f8cc67b first iteration of core data
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
14
6
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
15 var body: some View {
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
16 ZStack {
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
17 LinearGradient(gradient: .tertiary, startPoint: .top, endPoint: .bottom)
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
18 .ignoresSafeArea()
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
19
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
20 GeometryReader { geo in
10
a793f33f05fb refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
21 VStack {
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 23
diff changeset
22 GameToolbar(gameController: gameController, color: .pinkLavender)
23
02dcebb8cc4a fix layout issues
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
23 .padding(.bottom)
6
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
24
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
25 Spacer()
10
a793f33f05fb refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
26
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 23
diff changeset
27 CityMap(game: gameController)
31
9d6dd0e59c22 remove dataset and add new screenshots
Dennis C. M. <dennis@denniscm.com>
parents: 27
diff changeset
28 .frame(height: geo.size.height * 0.30)
23
02dcebb8cc4a fix layout issues
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
29 .padding(.bottom)
6
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
30
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
31 Spacer()
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
32
10
a793f33f05fb refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
33 VStack(alignment: .leading) {
6
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
34 VStack(alignment: .leading, spacing: 10) {
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 23
diff changeset
35 Text("Question \(gameController.questionCounter) of \(gameController.data.count)")
6
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
36 .font(.title3)
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
37 .foregroundColor(.white.opacity(0.7))
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
38
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 23
diff changeset
39 Text("In what country is \(gameController.correctAnswer.key)?")
6
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
40 .font(.title)
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
41 .fontWeight(.semibold)
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
42 .foregroundColor(.white)
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
43 }
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
44
10
a793f33f05fb refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
45 VStack(spacing: 15) {
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 23
diff changeset
46 ForEach(Array(gameController.userChoices.keys), id: \.self) { cityName in
10
a793f33f05fb refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
47 Button {
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 23
diff changeset
48 gameController.answer(
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 23
diff changeset
49 choice: (key: cityName, value: gameController.data[cityName]!),
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 23
diff changeset
50 wrongMessage: "\(gameController.correctAnswer.key) is located in \(gameController.correctAnswer.value.country)"
33
6d574bd1644f refactor controllers
Dennis C. M. <dennis@denniscm.com>
parents: 31
diff changeset
51 )
10
a793f33f05fb refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
52 } label: {
a793f33f05fb refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
53 AnswerButton(
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 23
diff changeset
54 name: gameController.data[cityName]!.country,
10
a793f33f05fb refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
55 color: .blueBell
a793f33f05fb refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
56 )
a793f33f05fb refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
57 .frame(height: geo.size.height * 0.08)
8
e09959b4e4a8 fix bugs
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
58 }
6
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
59 }
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
60 }
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
61 }
10
a793f33f05fb refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents: 8
diff changeset
62 .frame(maxWidth: 500)
6
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
63 }
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
64 .padding()
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
65 }
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
66 }
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
67 .navigationBarHidden(true)
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 23
diff changeset
68 .modifier(GameAlertsModifier(gameController: gameController, gameType: .guessTheCountry, moc: moc))
6
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
69 }
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
70 }
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
71
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
72 struct GuessTheCountryView_Previews: PreviewProvider {
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
73 static var previews: some View {
7
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 6
diff changeset
74 GuessTheCountryView()
6
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
75 }
1946bbfde4af reformat data structures
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
76 }