Mercurial > public > geoquiz
annotate GeoQuiz/GuessTheCountryView.swift @ 30:eb23effeede7
add DatasetView
author | Dennis C. M. <dennis@denniscm.com> |
---|---|
date | Thu, 10 Nov 2022 11:51:52 +0100 |
parents | 3f4b366d476d |
children | 9d6dd0e59c22 |
rev | line source |
---|---|
6 | 1 // |
2 // GuessTheCountryView.swift | |
3 // GeoQuiz | |
4 // | |
5 // Created by Dennis Concepción Martín on 24/9/22. | |
6 // | |
7 | |
8 import SwiftUI | |
9 | |
27 | 10 struct GuessTheCountryView: View, GameView { |
26 | 11 @StateObject var gameController = CityGameController() |
6 | 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 | 15 var body: some View { |
16 ZStack { | |
17 LinearGradient(gradient: .tertiary, startPoint: .top, endPoint: .bottom) | |
18 .ignoresSafeArea() | |
19 | |
20 GeometryReader { geo in | |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
21 VStack { |
26 | 22 GameToolbar(gameController: gameController, color: .pinkLavender) |
23 | 23 .padding(.bottom) |
6 | 24 |
25 Spacer() | |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
26 |
26 | 27 CityMap(game: gameController) |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
28 .frame(height: geo.size.height * 0.35) |
23 | 29 .padding(.bottom) |
6 | 30 |
31 Spacer() | |
32 | |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
33 VStack(alignment: .leading) { |
6 | 34 VStack(alignment: .leading, spacing: 10) { |
26 | 35 Text("Question \(gameController.questionCounter) of \(gameController.data.count)") |
6 | 36 .font(.title3) |
37 .foregroundColor(.white.opacity(0.7)) | |
38 | |
26 | 39 Text("In what country is \(gameController.correctAnswer.key)?") |
6 | 40 .font(.title) |
41 .fontWeight(.semibold) | |
42 .foregroundColor(.white) | |
43 } | |
44 | |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
45 VStack(spacing: 15) { |
26 | 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 | 48 gameController.answer( |
49 choice: (key: cityName, value: gameController.data[cityName]!), | |
50 wrongMessage: "\(gameController.correctAnswer.key) is located in \(gameController.correctAnswer.value.country)" | |
51 ) { | |
52 gameController.selector() | |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
53 } |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
54 } label: { |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
55 AnswerButton( |
26 | 56 name: gameController.data[cityName]!.country, |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
57 color: .blueBell |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
58 ) |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
59 .frame(height: geo.size.height * 0.08) |
8 | 60 } |
6 | 61 } |
62 } | |
63 } | |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
64 .frame(maxWidth: 500) |
6 | 65 } |
66 .padding() | |
67 } | |
68 } | |
69 .navigationBarHidden(true) | |
26 | 70 .modifier(GameAlertsModifier(gameController: gameController, gameType: .guessTheCountry, moc: moc)) |
6 | 71 } |
72 } | |
73 | |
74 struct GuessTheCountryView_Previews: PreviewProvider { | |
75 static var previews: some View { | |
7 | 76 GuessTheCountryView() |
6 | 77 } |
78 } |