# HG changeset patch # User antonc27 # Date 1520984780 -3600 # Node ID d6aea85111c733cb408ec55f4989b1c5dd60bfcd # Parent 0c1f3a8ba0bb0b2044d7739e8b804cca15602e4c - Fix missions regression: presentation of list is good, still problem with path during launching diff -r 0c1f3a8ba0bb -r d6aea85111c7 project_files/HedgewarsMobile/Classes/DefinesAndMacros.h --- a/project_files/HedgewarsMobile/Classes/DefinesAndMacros.h Wed Mar 14 00:25:31 2018 +0100 +++ b/project_files/HedgewarsMobile/Classes/DefinesAndMacros.h Wed Mar 14 00:46:20 2018 +0100 @@ -63,6 +63,8 @@ #define MAPS_DIRECTORY() [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/Data/Maps/"] #define MISSIONS_DIRECTORY() [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/Data/Missions/Maps/"] #define TRAININGS_DIRECTORY() [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/Data/Missions/Training/"] +#define SCENARIO_DIRECTORY() [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/Data/Missions/Scenario/"] +#define CHALLENGE_DIRECTORY() [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/Data/Missions/Challenge/"] #define CAMPAIGNS_DIRECTORY() [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/Data/Missions/Campaign/"] #define LOCALE_DIRECTORY() [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/Data/Locale/"] #define SCRIPTS_DIRECTORY() [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/Data/Scripts/Multiplayer/"] diff -r 0c1f3a8ba0bb -r d6aea85111c7 project_files/HedgewarsMobile/Classes/MissionTrainingViewController.h --- a/project_files/HedgewarsMobile/Classes/MissionTrainingViewController.h Wed Mar 14 00:25:31 2018 +0100 +++ b/project_files/HedgewarsMobile/Classes/MissionTrainingViewController.h Wed Mar 14 00:46:20 2018 +0100 @@ -30,6 +30,12 @@ @property (nonatomic, strong) NSArray *listOfTrainingIDs; @property (nonatomic, strong) NSDictionary *dictOfTraining; +@property (nonatomic, strong) NSArray *listOfChallengeIDs; +@property (nonatomic, strong) NSDictionary *dictOfChallenge; + +@property (nonatomic, strong) NSArray *listOfScenarioIDs; +@property (nonatomic, strong) NSDictionary *dictOfScenario; + @property (nonatomic, strong) IBOutlet UIImageView *previewImage; @property (nonatomic, strong) IBOutlet UITableView *tableView; @property (nonatomic, strong) IBOutlet UILabel *descriptionLabel; diff -r 0c1f3a8ba0bb -r d6aea85111c7 project_files/HedgewarsMobile/Classes/MissionTrainingViewController.m --- 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; }