Mercurial > public > geoquiz
annotate GeoQuiz/GuessTheCapitalView.swift @ 21:b145c408f791
refactor code
author | Dennis C. M. <dennis@denniscm.com> |
---|---|
date | Tue, 25 Oct 2022 15:30:01 +0200 |
parents | e281791e0494 |
children | 02dcebb8cc4a |
rev | line source |
---|---|
0 | 1 // |
2 // GuessTheCapitalView.swift | |
3 // GeoQuiz | |
4 // | |
5 // Created by Dennis Concepción Martín on 14/9/22. | |
6 // | |
7 | |
8 import SwiftUI | |
9 | |
10 struct GuessTheCapitalView: View { | |
19 | 11 @StateObject var game = CountryGameController() |
0 | 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 |
0 | 15 var body: some View { |
16 ZStack { | |
17 LinearGradient(gradient: .secondary, 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 { |
6 | 22 GameToolbar(game: game, color: .atomicTangerine) |
23 | |
24 Spacer() | |
25 | |
21 | 26 Image(game.correctAnswer.value.flag) |
27 .renderingMode(.original) | |
28 .resizable() | |
29 .scaledToFit() | |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
30 .clipShape(RoundedRectangle(cornerRadius: 20)) |
6 | 31 .shadow(radius: 10) |
32 .frame(height: geo.size.height * 0.15) | |
33 | |
34 Spacer() | |
35 | |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
36 VStack(alignment: .leading) { |
6 | 37 VStack(alignment: .leading, spacing: 10) { |
38 Text("Question \(game.questionCounter) of \(game.data.count)") | |
39 .font(.title3) | |
40 .foregroundColor(.white.opacity(0.7)) | |
41 | |
42 Text("What is the capital of \(game.correctAnswer.key)?") | |
43 .font(.title) | |
44 .fontWeight(.semibold) | |
45 .foregroundColor(.white) | |
46 } | |
0 | 47 |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
48 VStack(spacing: 15) { |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
49 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
|
50 Button { |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
51 game.answer((key: countryName, value: game.data[countryName]!)) { |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
52 game.selector() |
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( |
19 | 56 name: game.data[countryName]!.capital, |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
57 color: .chinaPink |
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 } |
0 | 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() | |
0 | 67 } |
68 } | |
69 .navigationBarHidden(true) | |
15
f1967f8cc67b
first iteration of core data
Dennis C. M. <dennis@denniscm.com>
parents:
10
diff
changeset
|
70 .modifier(GameAlertsModifier(game: game, gameType: .guessTheCapital, moc: moc)) |
0 | 71 } |
72 } | |
73 | |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
74 struct GuessTheCapitalView_Previews: PreviewProvider { |
0 | 75 static var previews: some View { |
10
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
76 GuessTheCapitalView() |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
77 .previewDevice(PreviewDevice(rawValue: "iPhone 14 Pro Max")) |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
78 .previewDisplayName("iPhone 14 Pro Max") |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
79 |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
80 GuessTheCapitalView() |
a793f33f05fb
refactor code and fix layout
Dennis C. M. <dennis@denniscm.com>
parents:
8
diff
changeset
|
81 .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
|
82 .previewDisplayName("iPad Pro (12.9-inch) (5th generation)") |
0 | 83 } |
84 } |