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