project_files/HedgewarsMobile/Classes/MissionTrainingViewController.m
branchios-develop
changeset 13192 d6aea85111c7
parent 13191 0c1f3a8ba0bb
child 13199 e17efd663125
--- a/project_files/HedgewarsMobile/Classes/MissionTrainingViewController.m	Wed Mar 14 00:25:31 2018 +0100
+++ b/project_files/HedgewarsMobile/Classes/MissionTrainingViewController.m	Wed Mar 14 00:46:20 2018 +0100
@@ -22,6 +22,8 @@
 #import "GameInterfaceBridge.h"
 
 #define TRAINING_MISSION_TYPE @"Training"
+#define CHALLENGE_MISSION_TYPE @"Challenge"
+#define SCENARIO_MISSION_TYPE @"Scenario"
 
 @implementation MissionTrainingViewController
 
@@ -85,7 +87,7 @@
 {
     NSString *languageID = [HWUtils languageID];
     
-    NSString *missionsDescLocation = [[NSString alloc] initWithFormat:@"%@/missions_en.txt",LOCALE_DIRECTORY()];
+    NSString *missionsDescLocation = [[NSString alloc] initWithFormat:@"%@/missions_en.txt", LOCALE_DIRECTORY()];
     NSString *localizedMissionsDescLocation = [[NSString alloc] initWithFormat:@"%@/missions_%@.txt", LOCALE_DIRECTORY(), languageID];
     
     if (![languageID isEqualToString:@"en"] && [[NSFileManager defaultManager] fileExistsAtPath:localizedMissionsDescLocation])
@@ -180,7 +182,7 @@
 {
     if (!_missionsTypes)
     {
-        _missionsTypes = @[ TRAINING_MISSION_TYPE ];
+        _missionsTypes = @[ TRAINING_MISSION_TYPE, CHALLENGE_MISSION_TYPE, SCENARIO_MISSION_TYPE ];
     }
     
     return _missionsTypes;
@@ -191,7 +193,9 @@
     if (!_dictOfAllMissions)
     {
         NSArray *types = [self missionsTypes];
-        _dictOfAllMissions = @{ types[0] : [self dictOfTraining] };
+        _dictOfAllMissions = @{ types[0] : self.dictOfTraining,
+                                types[1] : self.dictOfChallenge,
+                                types[2] : self.dictOfScenario };
     }
     
     return _dictOfAllMissions;
@@ -201,8 +205,7 @@
 {
     if (!_listOfTrainingIDs)
     {
-        NSArray *sortedKeys = [[self.dictOfTraining allKeys] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
-        _listOfTrainingIDs = [[NSArray alloc] initWithArray:sortedKeys];
+        _listOfTrainingIDs = [[self.dictOfTraining allKeys] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
     }
     
     return _listOfTrainingIDs;
@@ -218,6 +221,46 @@
     return _dictOfTraining;
 }
 
+- (NSArray *)listOfChallengeIDs
+{
+    if (!_listOfChallengeIDs)
+    {
+        _listOfChallengeIDs = [[self.dictOfChallenge allKeys] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
+    }
+    
+    return _listOfChallengeIDs;
+}
+
+- (NSDictionary *)dictOfChallenge
+{
+    if (!_dictOfChallenge)
+    {
+        _dictOfChallenge = [self newLocalizedMissionsDictionaryForType:CHALLENGE_MISSION_TYPE];
+    }
+    
+    return _dictOfChallenge;
+}
+
+- (NSArray *)listOfScenarioIDs
+{
+    if (!_listOfScenarioIDs)
+    {
+        _listOfScenarioIDs = [[self.dictOfScenario allKeys] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
+    }
+
+    return _listOfScenarioIDs;
+}
+
+- (NSDictionary *)dictOfScenario
+{
+    if (!_dictOfScenario)
+    {
+        _dictOfScenario = [self newLocalizedMissionsDictionaryForType:SCENARIO_MISSION_TYPE];
+    }
+
+    return _dictOfScenario;
+}
+
 #pragma mark -
 #pragma mark Missions types
 
@@ -225,6 +268,10 @@
 {
     if ([type isEqualToString:TRAINING_MISSION_TYPE]) {
         return TRAININGS_DIRECTORY();
+    } else if ([type isEqualToString:CHALLENGE_MISSION_TYPE]) {
+        return CHALLENGE_DIRECTORY();
+    } else if ([type isEqualToString:SCENARIO_MISSION_TYPE]) {
+        return SCENARIO_DIRECTORY();
     }
     return nil;
 }
@@ -233,6 +280,10 @@
 {
     if ([type isEqualToString:TRAINING_MISSION_TYPE]) {
         return self.listOfTrainingIDs;
+    } else if ([type isEqualToString:CHALLENGE_MISSION_TYPE]) {
+        return self.listOfChallengeIDs;
+    } else if ([type isEqualToString:SCENARIO_MISSION_TYPE]) {
+        return self.listOfScenarioIDs;
     }
     return nil;
 }
@@ -241,6 +292,10 @@
 {
     if ([type isEqualToString:TRAINING_MISSION_TYPE]) {
         return self.dictOfTraining;
+    } else if ([type isEqualToString:CHALLENGE_MISSION_TYPE]) {
+        return self.dictOfChallenge;
+    } else if ([type isEqualToString:SCENARIO_MISSION_TYPE]) {
+        return self.dictOfScenario;
     }
     return nil;
 }