annotate GeoQuiz/Helpers/GameAlertsModifier.swift @ 8:e09959b4e4a8

fix bugs
author Dennis C. M. <dennis@denniscm.com>
date Thu, 06 Oct 2022 11:14:34 +0200
parents d945e52b0704
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
1 //
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
2 // GameAlertsModifier.swift
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
3 // GeoQuiz
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
4 //
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
5 // Created by Dennis Concepción Martín on 22/9/22.
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
6 //
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
7
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
8 import SwiftUI
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
9
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
10 struct GameAlertsModifier<T: Game>: ViewModifier {
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
11 @ObservedObject var game: T
7
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
12 @Environment(\.dismiss) var dismiss
3
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
13
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
14 func body(content: Content) -> some View {
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
15 content
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
16 .alert(game.alertTitle, isPresented: $game.showingWrongAnswerAlert) {
8
e09959b4e4a8 fix bugs
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
17 Button("Continue", role: .cancel) {
e09959b4e4a8 fix bugs
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
18 game.askQuestion {
e09959b4e4a8 fix bugs
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
19 game.selector()
e09959b4e4a8 fix bugs
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
20 }
e09959b4e4a8 fix bugs
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
21 }
3
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
22 } message: {
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
23 Text(game.alertMessage)
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
24 }
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
25
7
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
26 .alert(game.alertTitle, isPresented: $game.showingGameOverAlert) {
8
e09959b4e4a8 fix bugs
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
27 Button("Try again") {
e09959b4e4a8 fix bugs
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
28 game.reset {
e09959b4e4a8 fix bugs
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
29 game.selector()
e09959b4e4a8 fix bugs
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
30 }
e09959b4e4a8 fix bugs
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
31 }
7
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
32 Button("Exit", role: .cancel) { dismiss()}
3
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
33 } message: {
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
34 Text(game.alertMessage)
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
35 }
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
36
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
37 .alert(game.alertTitle, isPresented: $game.showingEndGameAlert) {
8
e09959b4e4a8 fix bugs
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
38 Button("Play again") {
e09959b4e4a8 fix bugs
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
39 game.reset() {
e09959b4e4a8 fix bugs
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
40 game.selector()
e09959b4e4a8 fix bugs
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
41 }
e09959b4e4a8 fix bugs
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
42 }
7
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
43 Button("Exit", role: .cancel) { dismiss() }
3
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
44 } message: {
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
45 Text(game.alertMessage)
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
46 }
4
de54f05adb78 add prototype game stats
Dennis C. M. <dennis@denniscm.com>
parents: 3
diff changeset
47
de54f05adb78 add prototype game stats
Dennis C. M. <dennis@denniscm.com>
parents: 3
diff changeset
48 .alert("Are you sure?", isPresented: $game.showingExitGameAlert) {
7
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
49 Button("Exit", role: .destructive) { dismiss() }
4
de54f05adb78 add prototype game stats
Dennis C. M. <dennis@denniscm.com>
parents: 3
diff changeset
50 Button("Cancel", role: .cancel) { }
de54f05adb78 add prototype game stats
Dennis C. M. <dennis@denniscm.com>
parents: 3
diff changeset
51 } message: {
7
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
52 Text("Progress won't be saved.")
4
de54f05adb78 add prototype game stats
Dennis C. M. <dennis@denniscm.com>
parents: 3
diff changeset
53 }
3
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
54 }
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
55 }