Mercurial > public > geoquiz
annotate GeoQuiz/GuessTheFlagView.swift @ 11:039b26a99a48
implementing RevenueCat
author | Dennis C. M. <dennis@denniscm.com> |
---|---|
date | Sun, 09 Oct 2022 17:02:34 +0200 |
parents | a793f33f05fb |
children | f1967f8cc67b |
rev | line source |
---|---|
0 | 1 // |
2 // GuessTheFlagView.swift | |
3 // GeoQuiz | |
4 // | |
5 // Created by Dennis Concepción Martín on 20/9/22. | |
6 // | |
7 | |
8 import SwiftUI | |
9 | |
10 struct GuessTheFlagView: View { | |
6 | 11 @StateObject var game = CountryGame() |
0 | 12 |
13 var body: some View { | |
14 ZStack { | |
15 LinearGradient(gradient: .main, startPoint: .top, endPoint: .bottom) | |
16 .ignoresSafeArea() | |
17 | |
3 | 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: .mayaBlue) |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
21 .padding(.bottom) |
0 | 22 |
11 | 23 VStack(alignment: .center, spacing: 10) { |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
24 Text("Question \(game.questionCounter) of \(game.data.count)") |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
25 .font(.title3) |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
26 .foregroundColor(.white.opacity(0.7)) |
6 | 27 |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
28 Text("What is the flag of") |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
29 .font(.title) |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
30 .fontWeight(.semibold) |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
31 .foregroundColor(.white) |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
32 |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
33 Text("\(game.correctAnswer.key)?") |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
34 .font(.largeTitle.bold()) |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
35 .foregroundColor(.white) |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
36 |
0 | 37 } |
38 | |
39 Spacer() | |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
40 VStack(spacing: 30) { |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
41 ForEach(Array(game.userChoices.keys), id: \.self) { countryName in |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
42 Button { |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
43 game.answer((key: countryName, value: game.data[countryName]!)) { |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
44 game.selector() |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
45 } |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
46 } label: { |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
47 FlagImage(flagSymbol: game.data[countryName]!.flag, cornerRadius: 20) |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
48 .clipShape(Circle()) |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
49 .overlay { |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
50 Circle() |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
51 .strokeBorder(.white, lineWidth: 4) |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
52 } |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
53 .shadow(radius: 10) |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
54 .frame(height: geo.size.height * 0.15) |
8 | 55 } |
0 | 56 } |
57 } | |
58 | |
59 Spacer() | |
60 } | |
61 .padding() | |
62 } | |
63 } | |
64 .navigationBarHidden(true) | |
7 | 65 .modifier(GameAlertsModifier(game: game)) |
0 | 66 } |
67 } | |
68 | |
69 struct GuessTheFlagView_Previews: PreviewProvider { | |
70 static var previews: some View { | |
7 | 71 GuessTheFlagView() |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
72 .previewDevice(PreviewDevice(rawValue: "iPhone 14 Pro Max")) |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
73 .previewDisplayName("iPhone 14 Pro Max") |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
74 |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
75 GuessTheFlagView() |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
76 .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
|
77 .previewDisplayName("iPad Pro (12.9-inch) (5th generation)") |
0 | 78 } |
79 } |