Mercurial > public > geoquiz
comparison GeoQuiz/Logic/GameInfoProtocol+Extension.swift @ 16:1011e56b7832
implement user profile
author | Dennis C. M. <dennis@denniscm.com> |
---|---|
date | Thu, 20 Oct 2022 13:49:42 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
15:f1967f8cc67b | 16:1011e56b7832 |
---|---|
1 // | |
2 // GameInfoProtocol+Structs.swift | |
3 // GeoQuiz | |
4 // | |
5 // Created by Dennis Concepción Martín on 20/10/22. | |
6 // | |
7 | |
8 import Foundation | |
9 import SwiftUI | |
10 | |
11 @objc | |
12 public enum GameType: Int16 { | |
13 case guessTheFlag, guessTheCapital, guessTheCountry, guessThePopulation | |
14 } | |
15 | |
16 protocol GameInfo { | |
17 static var type: GameType { get } | |
18 static var level: String { get } | |
19 static var name: String { get } | |
20 static var symbol: String { get } | |
21 static var gradient: Gradient { get } | |
22 static var numberOfQuestions: Int { get } | |
23 } | |
24 | |
25 class GuessTheFlagInfo: GameInfo { | |
26 static let type: GameType = .guessTheFlag | |
27 static let level = "Level 1" | |
28 static let name = "Guess the flag" | |
29 static let symbol = "flag.fill" | |
30 static let gradient: Gradient = .main | |
31 | |
32 static var numberOfQuestions: Int { | |
33 let data: CountryData = load("countries.json") | |
34 return data.countries.count | |
35 } | |
36 } | |
37 | |
38 class GuessTheCapitalInfo: GameInfo { | |
39 static let type: GameType = .guessTheFlag | |
40 static let level = "Level 2" | |
41 static let name = "Guess the capital" | |
42 static let symbol = "building.2.fill" | |
43 static let gradient: Gradient = .secondary | |
44 | |
45 static var numberOfQuestions: Int { | |
46 let data: CountryData = load("countries.json") | |
47 return data.countries.count | |
48 } | |
49 } | |
50 | |
51 class GuessTheCountryInfo: GameInfo { | |
52 static let type: GameType = .guessTheFlag | |
53 static let level = "Level 3" | |
54 static let name = "Guess the country" | |
55 static let symbol = "globe.americas.fill" | |
56 static let gradient: Gradient = .tertiary | |
57 | |
58 static var numberOfQuestions: Int { | |
59 let data: CityData = load("cities.json") | |
60 return data.cities.count | |
61 } | |
62 } | |
63 | |
64 class GuessThePopulationInfo: GameInfo { | |
65 static let type: GameType = .guessTheFlag | |
66 static let level = "Level 4" | |
67 static let name = "Guess the population" | |
68 static let symbol = "person.fill" | |
69 static let gradient: Gradient = .quaternary | |
70 | |
71 static var numberOfQuestions: Int { | |
72 let data: CityData = load("cities.json") | |
73 return data.cities.count | |
74 } | |
75 } |