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 import MapKit
|
|
10
|
|
11 struct GuessTheCountryView: View {
|
|
12 @Binding var gameName: GameName?
|
|
13 @StateObject var game = CityGame()
|
|
14
|
|
15 var body: some View {
|
|
16 ZStack {
|
|
17 LinearGradient(gradient: .tertiary, startPoint: .top, endPoint: .bottom)
|
|
18 .ignoresSafeArea()
|
|
19
|
|
20 GeometryReader { geo in
|
|
21 VStack(spacing: 20) {
|
|
22 GameToolbar(game: game, color: .pinkLavender)
|
|
23
|
|
24 Spacer()
|
|
25
|
|
26 CityMap(region: MKCoordinateRegion(
|
|
27 center: CLLocationCoordinate2D(
|
|
28 latitude: game.correctAnswer.value.lat,
|
|
29 longitude: game.correctAnswer.value.lon
|
|
30 ),
|
|
31 span: MKCoordinateSpan(latitudeDelta: 0.5, longitudeDelta: 0.5))
|
|
32 )
|
|
33 .frame(height: geo.size.height * 0.3)
|
|
34
|
|
35 Spacer()
|
|
36
|
|
37 HStack {
|
|
38 VStack(alignment: .leading, spacing: 10) {
|
|
39 Text("Question \(game.questionCounter) of \(game.data.count)")
|
|
40 .font(.title3)
|
|
41 .foregroundColor(.white.opacity(0.7))
|
|
42
|
|
43 Text("In what country is \(game.correctAnswer.key)?")
|
|
44 .font(.title)
|
|
45 .fontWeight(.semibold)
|
|
46 .foregroundColor(.white)
|
|
47 }
|
|
48
|
|
49 Spacer()
|
|
50 }
|
|
51
|
|
52 VStack {
|
|
53 ForEach(Array(game.userChoices.keys), id: \.self) { cityName in
|
|
54 Button {
|
|
55 game.answer((key: cityName, value: game.data[cityName]!))
|
|
56 } label: {
|
|
57 AnswerButton(
|
|
58 optionName: game.data[cityName]!.country,
|
|
59 color: .blueBell
|
|
60 )
|
|
61 .frame(height: geo.size.height * 0.08)
|
|
62 }
|
|
63 }
|
|
64 }
|
|
65
|
|
66 }
|
|
67 .padding()
|
|
68 }
|
|
69 }
|
|
70 .navigationBarHidden(true)
|
|
71 .modifier(GameAlertsModifier(game: game, gameName: $gameName))
|
|
72 .sheet(isPresented: $game.showingBuyLivesView) {
|
|
73 BuyLivesModalView()
|
|
74 }
|
|
75
|
|
76 .sheet(isPresented: $game.showingGameStatsView) {
|
|
77 // GameStatsModalView(game: game)
|
|
78 }
|
|
79 }
|
|
80 }
|
|
81
|
|
82 struct GuessTheCountryView_Previews: PreviewProvider {
|
|
83 static var previews: some View {
|
|
84 GuessTheCountryView(gameName: .constant(GameName.guessTheCountry))
|
|
85 }
|
|
86 }
|