annotate GeoQuiz/Helpers/GameAlertsModifier.swift @ 26:425078c01194

refactor code
author Dennis C. M. <dennis@denniscm.com>
date Wed, 09 Nov 2022 10:30:01 +0100
parents GeoQuiz/Components/GameAlertsModifier.swift@f1967f8cc67b
children 6d574bd1644f
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
15
f1967f8cc67b first iteration of core data
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
9 import CoreData
3
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
10
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
11 struct GameAlertsModifier<T: Game>: ViewModifier {
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 15
diff changeset
12 @ObservedObject var gameController: T
15
f1967f8cc67b first iteration of core data
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
13
f1967f8cc67b first iteration of core data
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
14 var gameType: GameType
f1967f8cc67b first iteration of core data
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
15 var moc: NSManagedObjectContext
f1967f8cc67b first iteration of core data
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
16
7
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
17 @Environment(\.dismiss) var dismiss
3
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
18
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
19 func body(content: Content) -> some View {
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
20 content
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 15
diff changeset
21 .alert(gameController.alertTitle, isPresented: $gameController.showingWrongAnswerAlert) {
8
e09959b4e4a8 fix bugs
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
22 Button("Continue", role: .cancel) {
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 15
diff changeset
23 gameController.askQuestion {
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 15
diff changeset
24 gameController.selector()
8
e09959b4e4a8 fix bugs
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
25 }
e09959b4e4a8 fix bugs
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
26 }
3
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
27 } message: {
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 15
diff changeset
28 Text(gameController.alertMessage)
3
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
29 }
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
30
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 15
diff changeset
31 .alert(gameController.alertTitle, isPresented: $gameController.showingEndGameAlert) {
15
f1967f8cc67b first iteration of core data
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
32 Button("Exit", role: .cancel) {
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 15
diff changeset
33 gameController.save(gameType, with: moc)
15
f1967f8cc67b first iteration of core data
Dennis C. M. <dennis@denniscm.com>
parents: 10
diff changeset
34 dismiss()
8
e09959b4e4a8 fix bugs
Dennis C. M. <dennis@denniscm.com>
parents: 7
diff changeset
35 }
3
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
36 } message: {
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 15
diff changeset
37 Text(gameController.alertMessage)
3
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
38 }
4
de54f05adb78 add prototype game stats
Dennis C. M. <dennis@denniscm.com>
parents: 3
diff changeset
39
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 15
diff changeset
40 .alert("Are you sure?", isPresented: $gameController.showingExitGameAlert) {
7
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
41 Button("Exit", role: .destructive) { dismiss() }
4
de54f05adb78 add prototype game stats
Dennis C. M. <dennis@denniscm.com>
parents: 3
diff changeset
42 Button("Cancel", role: .cancel) { }
de54f05adb78 add prototype game stats
Dennis C. M. <dennis@denniscm.com>
parents: 3
diff changeset
43 } message: {
7
d945e52b0704 implement dynamic map
Dennis C. M. <dennis@denniscm.com>
parents: 4
diff changeset
44 Text("Progress won't be saved.")
4
de54f05adb78 add prototype game stats
Dennis C. M. <dennis@denniscm.com>
parents: 3
diff changeset
45 }
3
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
46 }
4dbe0cd9dadc first game prototype
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
47 }