Mercurial > public > geoquiz
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 } |