20 #import "MissionTrainingViewController.h" |
20 #import "MissionTrainingViewController.h" |
21 #import <QuartzCore/QuartzCore.h> |
21 #import <QuartzCore/QuartzCore.h> |
22 #import "GameInterfaceBridge.h" |
22 #import "GameInterfaceBridge.h" |
23 |
23 |
24 #define TRAINING_MISSION_TYPE @"Training" |
24 #define TRAINING_MISSION_TYPE @"Training" |
|
25 #define CHALLENGE_MISSION_TYPE @"Challenge" |
|
26 #define SCENARIO_MISSION_TYPE @"Scenario" |
25 |
27 |
26 @implementation MissionTrainingViewController |
28 @implementation MissionTrainingViewController |
27 |
29 |
28 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { |
30 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { |
29 return rotationManager(interfaceOrientation); |
31 return rotationManager(interfaceOrientation); |
83 |
85 |
84 - (NSDictionary *)newLocalizedMissionsDictionaryForType: (NSString *)type |
86 - (NSDictionary *)newLocalizedMissionsDictionaryForType: (NSString *)type |
85 { |
87 { |
86 NSString *languageID = [HWUtils languageID]; |
88 NSString *languageID = [HWUtils languageID]; |
87 |
89 |
88 NSString *missionsDescLocation = [[NSString alloc] initWithFormat:@"%@/missions_en.txt",LOCALE_DIRECTORY()]; |
90 NSString *missionsDescLocation = [[NSString alloc] initWithFormat:@"%@/missions_en.txt", LOCALE_DIRECTORY()]; |
89 NSString *localizedMissionsDescLocation = [[NSString alloc] initWithFormat:@"%@/missions_%@.txt", LOCALE_DIRECTORY(), languageID]; |
91 NSString *localizedMissionsDescLocation = [[NSString alloc] initWithFormat:@"%@/missions_%@.txt", LOCALE_DIRECTORY(), languageID]; |
90 |
92 |
91 if (![languageID isEqualToString:@"en"] && [[NSFileManager defaultManager] fileExistsAtPath:localizedMissionsDescLocation]) |
93 if (![languageID isEqualToString:@"en"] && [[NSFileManager defaultManager] fileExistsAtPath:localizedMissionsDescLocation]) |
92 { |
94 { |
93 NSDictionary *missionsDict = [self newMissionsDictionaryForType:type fromMissionsFile:missionsDescLocation]; |
95 NSDictionary *missionsDict = [self newMissionsDictionaryForType:type fromMissionsFile:missionsDescLocation]; |
178 |
180 |
179 - (NSArray *)missionsTypes |
181 - (NSArray *)missionsTypes |
180 { |
182 { |
181 if (!_missionsTypes) |
183 if (!_missionsTypes) |
182 { |
184 { |
183 _missionsTypes = @[ TRAINING_MISSION_TYPE ]; |
185 _missionsTypes = @[ TRAINING_MISSION_TYPE, CHALLENGE_MISSION_TYPE, SCENARIO_MISSION_TYPE ]; |
184 } |
186 } |
185 |
187 |
186 return _missionsTypes; |
188 return _missionsTypes; |
187 } |
189 } |
188 |
190 |
189 - (NSDictionary *)dictOfAllMissions |
191 - (NSDictionary *)dictOfAllMissions |
190 { |
192 { |
191 if (!_dictOfAllMissions) |
193 if (!_dictOfAllMissions) |
192 { |
194 { |
193 NSArray *types = [self missionsTypes]; |
195 NSArray *types = [self missionsTypes]; |
194 _dictOfAllMissions = @{ types[0] : [self dictOfTraining] }; |
196 _dictOfAllMissions = @{ types[0] : self.dictOfTraining, |
|
197 types[1] : self.dictOfChallenge, |
|
198 types[2] : self.dictOfScenario }; |
195 } |
199 } |
196 |
200 |
197 return _dictOfAllMissions; |
201 return _dictOfAllMissions; |
198 } |
202 } |
199 |
203 |
200 - (NSArray *)listOfTrainingIDs |
204 - (NSArray *)listOfTrainingIDs |
201 { |
205 { |
202 if (!_listOfTrainingIDs) |
206 if (!_listOfTrainingIDs) |
203 { |
207 { |
204 NSArray *sortedKeys = [[self.dictOfTraining allKeys] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]; |
208 _listOfTrainingIDs = [[self.dictOfTraining allKeys] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]; |
205 _listOfTrainingIDs = [[NSArray alloc] initWithArray:sortedKeys]; |
|
206 } |
209 } |
207 |
210 |
208 return _listOfTrainingIDs; |
211 return _listOfTrainingIDs; |
209 } |
212 } |
210 |
213 |
214 { |
217 { |
215 _dictOfTraining = [self newLocalizedMissionsDictionaryForType:TRAINING_MISSION_TYPE]; |
218 _dictOfTraining = [self newLocalizedMissionsDictionaryForType:TRAINING_MISSION_TYPE]; |
216 } |
219 } |
217 |
220 |
218 return _dictOfTraining; |
221 return _dictOfTraining; |
|
222 } |
|
223 |
|
224 - (NSArray *)listOfChallengeIDs |
|
225 { |
|
226 if (!_listOfChallengeIDs) |
|
227 { |
|
228 _listOfChallengeIDs = [[self.dictOfChallenge allKeys] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]; |
|
229 } |
|
230 |
|
231 return _listOfChallengeIDs; |
|
232 } |
|
233 |
|
234 - (NSDictionary *)dictOfChallenge |
|
235 { |
|
236 if (!_dictOfChallenge) |
|
237 { |
|
238 _dictOfChallenge = [self newLocalizedMissionsDictionaryForType:CHALLENGE_MISSION_TYPE]; |
|
239 } |
|
240 |
|
241 return _dictOfChallenge; |
|
242 } |
|
243 |
|
244 - (NSArray *)listOfScenarioIDs |
|
245 { |
|
246 if (!_listOfScenarioIDs) |
|
247 { |
|
248 _listOfScenarioIDs = [[self.dictOfScenario allKeys] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)]; |
|
249 } |
|
250 |
|
251 return _listOfScenarioIDs; |
|
252 } |
|
253 |
|
254 - (NSDictionary *)dictOfScenario |
|
255 { |
|
256 if (!_dictOfScenario) |
|
257 { |
|
258 _dictOfScenario = [self newLocalizedMissionsDictionaryForType:SCENARIO_MISSION_TYPE]; |
|
259 } |
|
260 |
|
261 return _dictOfScenario; |
219 } |
262 } |
220 |
263 |
221 #pragma mark - |
264 #pragma mark - |
222 #pragma mark Missions types |
265 #pragma mark Missions types |
223 |
266 |
224 - (NSString *)missionsDirectoryForType:(NSString *)type |
267 - (NSString *)missionsDirectoryForType:(NSString *)type |
225 { |
268 { |
226 if ([type isEqualToString:TRAINING_MISSION_TYPE]) { |
269 if ([type isEqualToString:TRAINING_MISSION_TYPE]) { |
227 return TRAININGS_DIRECTORY(); |
270 return TRAININGS_DIRECTORY(); |
|
271 } else if ([type isEqualToString:CHALLENGE_MISSION_TYPE]) { |
|
272 return CHALLENGE_DIRECTORY(); |
|
273 } else if ([type isEqualToString:SCENARIO_MISSION_TYPE]) { |
|
274 return SCENARIO_DIRECTORY(); |
228 } |
275 } |
229 return nil; |
276 return nil; |
230 } |
277 } |
231 |
278 |
232 - (NSArray *)listOfMissionsIDsForType:(NSString *)type |
279 - (NSArray *)listOfMissionsIDsForType:(NSString *)type |
233 { |
280 { |
234 if ([type isEqualToString:TRAINING_MISSION_TYPE]) { |
281 if ([type isEqualToString:TRAINING_MISSION_TYPE]) { |
235 return self.listOfTrainingIDs; |
282 return self.listOfTrainingIDs; |
|
283 } else if ([type isEqualToString:CHALLENGE_MISSION_TYPE]) { |
|
284 return self.listOfChallengeIDs; |
|
285 } else if ([type isEqualToString:SCENARIO_MISSION_TYPE]) { |
|
286 return self.listOfScenarioIDs; |
236 } |
287 } |
237 return nil; |
288 return nil; |
238 } |
289 } |
239 |
290 |
240 - (NSDictionary *)dictOfMissionsForType:(NSString *)type |
291 - (NSDictionary *)dictOfMissionsForType:(NSString *)type |
241 { |
292 { |
242 if ([type isEqualToString:TRAINING_MISSION_TYPE]) { |
293 if ([type isEqualToString:TRAINING_MISSION_TYPE]) { |
243 return self.dictOfTraining; |
294 return self.dictOfTraining; |
|
295 } else if ([type isEqualToString:CHALLENGE_MISSION_TYPE]) { |
|
296 return self.dictOfChallenge; |
|
297 } else if ([type isEqualToString:SCENARIO_MISSION_TYPE]) { |
|
298 return self.dictOfScenario; |
244 } |
299 } |
245 return nil; |
300 return nil; |
246 } |
301 } |
247 |
302 |
248 #pragma mark - |
303 #pragma mark - |