annotate GeoQuiz/Models/GameInfoModel+Protocol.swift @ 31:9d6dd0e59c22

remove dataset and add new screenshots
author Dennis C. M. <dennis@denniscm.com>
date Fri, 11 Nov 2022 08:59:02 +0100
parents 425078c01194
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
19
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
1 //
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
2 // GameInfoModel+Protocol.swift
19
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
3 // GeoQuiz
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
4 //
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
5 // Created by Dennis Concepción Martín on 22/10/22.
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
6 //
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
7
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
8 import Foundation
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
9 import SwiftUI
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
10
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
11 protocol GameInfo {
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
12 var type: GameType { get }
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
13 var level: String { get }
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
14 var name: String { get }
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
15 var isPremium: Bool { get }
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
16 var symbol: String { get }
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
17 var gradient: Gradient { get }
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
18 var numberOfQuestions: Int { get }
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
19 }
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
20
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
21 class GameInfoModel {
19
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
22 static func getInfo(for gameType: GameType) -> GameInfo {
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
23 switch gameType {
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
24 case .guessTheFlag:
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
25 return GuessTheFlagInfo()
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
26 case .guessTheCapital:
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
27 return GuessTheCapitalInfo()
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
28 case .guessTheCountry:
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
29 return GuessTheCountryInfo()
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
30 case .guessThePopulation:
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
31 return GuessThePopulationInfo()
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
32 }
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
33 }
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
34
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
35 private struct GuessTheFlagInfo: GameInfo {
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
36 let type: GameType = .guessTheFlag
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
37 let level = "Level 1"
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
38 let name = "Guess the flag"
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
39 let isPremium = false
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
40 let symbol = "flag.fill"
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
41 let gradient: Gradient = .main
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
42
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
43 var numberOfQuestions: Int {
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
44 let data: CountryModel = Bundle.main.decode("countries.json")
19
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
45 return data.countries.count
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
46 }
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
47 }
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
48
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
49 private struct GuessTheCapitalInfo: GameInfo {
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
50 let type: GameType = .guessTheFlag
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
51 let level = "Level 2"
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
52 let name = "Guess the capital"
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
53 let isPremium = false
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
54 let symbol = "building.2.fill"
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
55 let gradient: Gradient = .secondary
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
56
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
57 var numberOfQuestions: Int {
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
58 let data: CountryModel = Bundle.main.decode("countries.json")
19
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
59 return data.countries.count
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
60 }
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
61 }
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
62
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
63 private struct GuessTheCountryInfo: GameInfo {
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
64 let type: GameType = .guessTheFlag
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
65 let level = "Level 3"
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
66 let name = "Guess the country"
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
67 let isPremium = false
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
68 let symbol = "globe.americas.fill"
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
69 let gradient: Gradient = .tertiary
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
70
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
71 var numberOfQuestions: Int {
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
72 let data: CityModel = Bundle.main.decode("cities.json")
19
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
73 return data.cities.count
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
74 }
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
75 }
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
76
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
77 private struct GuessThePopulationInfo: GameInfo {
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
78 let type: GameType = .guessTheFlag
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
79 let level = "Level 4"
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
80 let name = "Guess the population"
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
81 let isPremium = false
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
82 let symbol = "person.fill"
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
83 let gradient: Gradient = .quaternary
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
84
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
85 var numberOfQuestions: Int {
26
425078c01194 refactor code
Dennis C. M. <dennis@denniscm.com>
parents: 19
diff changeset
86 let data: CityModel = Bundle.main.decode("cities.json")
19
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
87 return data.cities.count
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
88 }
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
89 }
f140bb277c96 refactor code
Dennis C. M. <dennis@denniscm.com>
parents:
diff changeset
90 }