19 */ |
19 */ |
20 |
20 |
21 |
21 |
22 #import "MainMenuViewController.h" |
22 #import "MainMenuViewController.h" |
23 #import "CreationChamber.h" |
23 #import "CreationChamber.h" |
24 #import "PascalImports.h" |
|
25 #import "GameConfigViewController.h" |
24 #import "GameConfigViewController.h" |
26 #import "SplitViewRootController.h" |
25 #import "SettingsContainerViewController.h" |
27 #import "AboutViewController.h" |
26 #import "AboutViewController.h" |
28 #import "SavedGamesViewController.h" |
27 #import "SavedGamesViewController.h" |
29 #import "RestoreViewController.h" |
28 #import "RestoreViewController.h" |
|
29 #import "MissionTrainingViewController.h" |
30 #import "GameInterfaceBridge.h" |
30 #import "GameInterfaceBridge.h" |
31 #import "Appirater.h" |
31 #import "Appirater.h" |
32 #import "ServerSetup.h" |
32 #import "ServerSetup.h" |
33 |
33 |
34 |
34 |
35 @implementation MainMenuViewController |
35 @implementation MainMenuViewController |
36 @synthesize gameConfigViewController, settingsViewController, aboutViewController, savedGamesViewController, restoreViewController; |
36 @synthesize gameConfigViewController, settingsViewController, aboutViewController, savedGamesViewController, |
|
37 restoreViewController, missionsViewController; |
37 |
38 |
38 -(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { |
39 -(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { |
39 return rotationManager(interfaceOrientation); |
40 return rotationManager(interfaceOrientation); |
40 } |
41 } |
41 |
42 |
42 // check if some configuration files are already set; if they are present it means that the current copy must be updated |
43 // check if some configuration files are already set; if they are present it means that the current copy must be updated |
43 -(void) createNecessaryFiles { |
44 -(void) createNecessaryFiles { |
44 NSString *resourcesDir = [[NSBundle mainBundle] resourcePath]; |
|
45 DLog(@"Creating necessary files"); |
45 DLog(@"Creating necessary files"); |
|
46 NSInteger index; |
46 |
47 |
47 // SAVES - just delete and overwrite |
48 // SAVES - just delete and overwrite |
48 if ([[NSFileManager defaultManager] fileExistsAtPath:SAVES_DIRECTORY()]) |
49 if ([[NSFileManager defaultManager] fileExistsAtPath:SAVES_DIRECTORY()]) |
49 [[NSFileManager defaultManager] removeItemAtPath:SAVES_DIRECTORY() error:NULL]; |
50 [[NSFileManager defaultManager] removeItemAtPath:SAVES_DIRECTORY() error:NULL]; |
50 [[NSFileManager defaultManager] createDirectoryAtPath:SAVES_DIRECTORY() withIntermediateDirectories:NO attributes:nil error:NULL]; |
51 [[NSFileManager defaultManager] createDirectoryAtPath:SAVES_DIRECTORY() |
|
52 withIntermediateDirectories:NO |
|
53 attributes:nil |
|
54 error:NULL]; |
51 |
55 |
52 // SETTINGS - nsuserdefaults ftw |
56 // SETTINGS - nsuserdefaults ftw |
53 createSettings(); |
57 [CreationChamber createSettings]; |
54 |
58 |
55 // TEAMS - update exisiting teams with new format |
59 // TEAMS - update exisiting teams with new format |
56 if ([[NSFileManager defaultManager] fileExistsAtPath:TEAMS_DIRECTORY()] == NO) { |
60 NSArray *teamNames = [[NSArray alloc] initWithObjects:@"Edit Me!",@"Ninjas",@"Pirates",@"Robots",nil]; |
57 [[NSFileManager defaultManager] createDirectoryAtPath:TEAMS_DIRECTORY() |
61 index = 0; |
58 withIntermediateDirectories:YES |
62 for (NSString *name in teamNames) |
59 attributes:nil |
63 [CreationChamber createTeamNamed:name ofType:index++ controlledByAI:[name isEqualToString:@"Robots"]]; |
60 error:NULL]; |
64 [teamNames release]; |
61 // we copy teams only the first time because it's unlikely that newer ones are going to be added |
|
62 NSString *baseTeamsDir = [[NSString alloc] initWithFormat:@"%@/Settings/Teams/",resourcesDir]; |
|
63 for (NSString *str in [[NSFileManager defaultManager] contentsOfDirectoryAtPath:baseTeamsDir error:NULL]) { |
|
64 NSString *sourceFile = [baseTeamsDir stringByAppendingString:str]; |
|
65 NSString *destinationFile = [TEAMS_DIRECTORY() stringByAppendingString:str]; |
|
66 [[NSFileManager defaultManager] removeItemAtPath:destinationFile error:NULL]; |
|
67 [[NSFileManager defaultManager] copyItemAtPath:sourceFile toPath:destinationFile error:NULL]; |
|
68 } |
|
69 [baseTeamsDir release]; |
|
70 } |
|
71 // merge not needed as format rarely changes |
|
72 |
65 |
73 // SCHEMES - always overwrite and delete custom ones |
66 // SCHEMES - always overwrite and delete custom ones |
74 if ([[NSFileManager defaultManager] fileExistsAtPath:SCHEMES_DIRECTORY()] == YES) |
67 if ([[NSFileManager defaultManager] fileExistsAtPath:SCHEMES_DIRECTORY()] == YES) |
75 [[NSFileManager defaultManager] removeItemAtPath:SCHEMES_DIRECTORY() error:NULL]; |
68 [[NSFileManager defaultManager] removeItemAtPath:SCHEMES_DIRECTORY() error:NULL]; |
76 createSchemeNamed(@"Default", 0); |
69 NSArray *schemeNames = [[NSArray alloc] initWithObjects:@"Default",@"Pro Mode",@"Shoppa",@"Clean Slate", |
77 createSchemeNamed(@"Pro Mode", 1); |
70 @"Minefield",@"Barrel Mayhem",@"Tunnel Hogs",@"Fort Mode",@"Timeless", |
78 createSchemeNamed(@"Shoppa", 2); |
71 @"Thinking with Portals",@"King Mode",nil]; |
79 createSchemeNamed(@"Clean Slate", 3); |
72 index = 0; |
80 createSchemeNamed(@"Minefield", 4); |
73 for (NSString *name in schemeNames) |
81 createSchemeNamed(@"Barrel Mayhem", 5); |
74 [CreationChamber createSchemeNamed:name ofType:index++]; |
82 createSchemeNamed(@"Tunnel Hogs", 6); |
75 [schemeNames release]; |
83 createSchemeNamed(@"Fort Mode", 7); |
76 |
84 createSchemeNamed(@"Timeless", 8); |
77 // WEAPONS - always overwrite as merge is not needed (missing weaps are 0ed automatically) |
85 createSchemeNamed(@"Thinking with Portals", 9); |
78 NSArray *weaponNames = [[NSArray alloc] initWithObjects:@"Default",@"Crazy",@"Pro Mode",@"Shoppa",@"Clean Slate", |
86 createSchemeNamed(@"King Mode", 10); |
79 @"Minefield",@"Thinking with Portals",nil]; |
87 |
80 index = 0; |
88 // WEAPONS - always overwrite |
81 for (NSString *name in weaponNames) |
89 createWeaponNamed(@"Default", 0); |
82 [CreationChamber createWeaponNamed:name ofType:index++]; |
90 createWeaponNamed(@"Crazy", 1); |
83 [weaponNames release]; |
91 createWeaponNamed(@"Pro Mode", 2); |
|
92 createWeaponNamed(@"Shoppa", 3); |
|
93 createWeaponNamed(@"Clean Slate", 4); |
|
94 createWeaponNamed(@"Minefield", 5); |
|
95 createWeaponNamed(@"Thinking with Portals", 6); |
|
96 // merge not needed because weapons not present in the set are 0ed by GameSetup |
|
97 } |
84 } |
98 |
85 |
99 #pragma mark - |
86 #pragma mark - |
100 -(void) viewDidLoad { |
87 -(void) viewDidLoad { |
101 [super viewDidLoad]; |
88 [super viewDidLoad]; |
162 |
149 |
163 [AudioManagerController playClickSound]; |
150 [AudioManagerController playClickSound]; |
164 switch (button.tag) { |
151 switch (button.tag) { |
165 case 0: |
152 case 0: |
166 if (nil == self.gameConfigViewController) { |
153 if (nil == self.gameConfigViewController) { |
167 xib = IS_IPAD() ? nil : @"GameConfigViewController"; |
154 xib = IS_IPAD() ? @"GameConfigViewController-iPad" : @"GameConfigViewController-iPhone"; |
168 |
155 |
169 GameConfigViewController *gcvc = [[GameConfigViewController alloc] initWithNibName:xib bundle:nil]; |
156 GameConfigViewController *gcvc = [[GameConfigViewController alloc] initWithNibName:xib bundle:nil]; |
170 gcvc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; |
157 gcvc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; |
171 self.gameConfigViewController = gcvc; |
158 self.gameConfigViewController = gcvc; |
172 [gcvc release]; |
159 [gcvc release]; |
173 } |
160 } |
174 |
|
175 [self presentModalViewController:self.gameConfigViewController animated:YES]; |
161 [self presentModalViewController:self.gameConfigViewController animated:YES]; |
176 break; |
162 break; |
177 case 2: |
163 case 2: |
178 if (nil == self.settingsViewController) { |
164 if (nil == self.settingsViewController) { |
179 SplitViewRootController *svrc = [[SplitViewRootController alloc] initWithNibName:nil bundle:nil]; |
165 SettingsContainerViewController *svrc = [[SettingsContainerViewController alloc] initWithNibName:nil bundle:nil]; |
180 svrc.modalTransitionStyle = UIModalTransitionStyleCoverVertical; |
166 svrc.modalTransitionStyle = UIModalTransitionStyleCoverVertical; |
181 self.settingsViewController = svrc; |
167 self.settingsViewController = svrc; |
182 [svrc release]; |
168 [svrc release]; |
183 } |
169 } |
184 |
|
185 [self presentModalViewController:self.settingsViewController animated:YES]; |
170 [self presentModalViewController:self.settingsViewController animated:YES]; |
186 break; |
171 break; |
187 case 3: |
172 case 3: |
188 #ifdef DEBUG |
173 #ifdef DEBUG |
189 if ([[NSFileManager defaultManager] fileExistsAtPath:DEBUG_FILE()]) |
174 if ([[NSFileManager defaultManager] fileExistsAtPath:DEBUG_FILE()]) |