Mercurial > public > geoquiz
annotate GeoQuiz/GuessTheCountryView.swift @ 14:136928bae534
add user profile
author | Dennis C. M. <dennis@denniscm.com> |
---|---|
date | Wed, 19 Oct 2022 07:56:33 +0200 |
parents | a793f33f05fb |
children | f1967f8cc67b |
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 | |
10 struct GuessTheCountryView: View { | |
11 @StateObject var game = CityGame() | |
12 | |
13 var body: some View { | |
14 ZStack { | |
15 LinearGradient(gradient: .tertiary, startPoint: .top, endPoint: .bottom) | |
16 .ignoresSafeArea() | |
17 | |
18 GeometryReader { geo in | |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
19 VStack { |
6 | 20 GameToolbar(game: game, color: .pinkLavender) |
21 | |
22 Spacer() | |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
23 |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
24 CityMap(game: game) |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
25 .frame(height: geo.size.height * 0.35) |
6 | 26 |
27 Spacer() | |
28 | |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
29 VStack(alignment: .leading) { |
6 | 30 VStack(alignment: .leading, spacing: 10) { |
31 Text("Question \(game.questionCounter) of \(game.data.count)") | |
32 .font(.title3) | |
33 .foregroundColor(.white.opacity(0.7)) | |
34 | |
35 Text("In what country is \(game.correctAnswer.key)?") | |
36 .font(.title) | |
37 .fontWeight(.semibold) | |
38 .foregroundColor(.white) | |
39 } | |
40 | |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
41 VStack(spacing: 15) { |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
42 ForEach(Array(game.userChoices.keys), id: \.self) { cityName in |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
43 Button { |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
44 game.answer((key: cityName, value: game.data[cityName]!)) { |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
45 game.selector() |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
46 } |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
47 } label: { |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
48 AnswerButton( |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
49 optionName: game.data[cityName]!.country, |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
50 color: .blueBell |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
51 ) |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
52 .frame(height: geo.size.height * 0.08) |
8 | 53 } |
6 | 54 } |
55 } | |
56 } | |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
57 .frame(maxWidth: 500) |
6 | 58 } |
59 .padding() | |
60 } | |
61 } | |
62 .navigationBarHidden(true) | |
7 | 63 .modifier(GameAlertsModifier(game: game)) |
6 | 64 } |
65 } | |
66 | |
67 struct GuessTheCountryView_Previews: PreviewProvider { | |
68 static var previews: some View { | |
7 | 69 GuessTheCountryView() |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
70 .previewDevice(PreviewDevice(rawValue: "iPhone 14 Pro Max")) |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
71 .previewDisplayName("iPhone 14 Pro Max") |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
72 |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
73 GuessTheCountryView() |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
74 .previewDevice(PreviewDevice(rawValue: "iPad Pro (12.9-inch) (5th generation)")) |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
75 .previewDisplayName("iPad Pro (12.9-inch) (5th generation)") |
6 | 76 } |
77 } |