comparison GeoQuiz/Logic/GameInfoController.swift @ 19:f140bb277c96

refactor code
author Dennis C. M. <dennis@denniscm.com>
date Sun, 23 Oct 2022 00:11:38 +0100
parents
children
comparison
equal deleted inserted replaced
18:d20cf93c9812 19:f140bb277c96
1 //
2 // GameInfoController.swift
3 // GeoQuiz
4 //
5 // Created by Dennis Concepción Martín on 22/10/22.
6 //
7
8 import Foundation
9 import SwiftUI
10
11 class GameInfoController {
12 static func getInfo(for gameType: GameType) -> GameInfo {
13 switch gameType {
14 case .guessTheFlag:
15 return GuessTheFlagInfo()
16 case .guessTheCapital:
17 return GuessTheCapitalInfo()
18 case .guessTheCountry:
19 return GuessTheCountryInfo()
20 case .guessThePopulation:
21 return GuessThePopulationInfo()
22 }
23 }
24
25 private struct GuessTheFlagInfo: GameInfo {
26 let type: GameType = .guessTheFlag
27 let level = "Level 1"
28 let name = "Guess the flag"
29 let isPremium = false
30 let symbol = "flag.fill"
31 let gradient: Gradient = .main
32
33 var numberOfQuestions: Int {
34 let data: CountryModel = FileController.load("countries.json")
35 return data.countries.count
36 }
37 }
38
39 private struct GuessTheCapitalInfo: GameInfo {
40 let type: GameType = .guessTheFlag
41 let level = "Level 2"
42 let name = "Guess the capital"
43 let isPremium = false
44 let symbol = "building.2.fill"
45 let gradient: Gradient = .secondary
46
47 var numberOfQuestions: Int {
48 let data: CountryModel = FileController.load("countries.json")
49 return data.countries.count
50 }
51 }
52
53 private struct GuessTheCountryInfo: GameInfo {
54 let type: GameType = .guessTheFlag
55 let level = "Level 3"
56 let name = "Guess the country"
57 let isPremium = false
58 let symbol = "globe.americas.fill"
59 let gradient: Gradient = .tertiary
60
61 var numberOfQuestions: Int {
62 let data: CityModel = FileController.load("cities.json")
63 return data.cities.count
64 }
65 }
66
67 private struct GuessThePopulationInfo: GameInfo {
68 let type: GameType = .guessTheFlag
69 let level = "Level 4"
70 let name = "Guess the population"
71 let isPremium = false
72 let symbol = "person.fill"
73 let gradient: Gradient = .quaternary
74
75 var numberOfQuestions: Int {
76 let data: CityModel = FileController.load("cities.json")
77 return data.cities.count
78 }
79 }
80 }