--- a/project_files/HedgewarsMobile/Classes/MainMenuViewController.m Fri Oct 28 17:41:39 2011 +0200
+++ b/project_files/HedgewarsMobile/Classes/MainMenuViewController.m Fri Oct 28 18:26:17 2011 +0200
@@ -21,19 +21,20 @@
#import "MainMenuViewController.h"
#import "CreationChamber.h"
-#import "PascalImports.h"
#import "GameConfigViewController.h"
-#import "SplitViewRootController.h"
+#import "SettingsContainerViewController.h"
#import "AboutViewController.h"
#import "SavedGamesViewController.h"
#import "RestoreViewController.h"
+#import "MissionTrainingViewController.h"
#import "GameInterfaceBridge.h"
#import "Appirater.h"
#import "ServerSetup.h"
@implementation MainMenuViewController
-@synthesize gameConfigViewController, settingsViewController, aboutViewController, savedGamesViewController, restoreViewController;
+@synthesize gameConfigViewController, settingsViewController, aboutViewController, savedGamesViewController,
+ restoreViewController, missionsViewController;
-(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation {
return rotationManager(interfaceOrientation);
@@ -41,59 +42,45 @@
// check if some configuration files are already set; if they are present it means that the current copy must be updated
-(void) createNecessaryFiles {
- NSString *resourcesDir = [[NSBundle mainBundle] resourcePath];
DLog(@"Creating necessary files");
+ NSInteger index;
// SAVES - just delete and overwrite
if ([[NSFileManager defaultManager] fileExistsAtPath:SAVES_DIRECTORY()])
[[NSFileManager defaultManager] removeItemAtPath:SAVES_DIRECTORY() error:NULL];
- [[NSFileManager defaultManager] createDirectoryAtPath:SAVES_DIRECTORY() withIntermediateDirectories:NO attributes:nil error:NULL];
+ [[NSFileManager defaultManager] createDirectoryAtPath:SAVES_DIRECTORY()
+ withIntermediateDirectories:NO
+ attributes:nil
+ error:NULL];
// SETTINGS - nsuserdefaults ftw
- createSettings();
+ [CreationChamber createSettings];
// TEAMS - update exisiting teams with new format
- if ([[NSFileManager defaultManager] fileExistsAtPath:TEAMS_DIRECTORY()] == NO) {
- [[NSFileManager defaultManager] createDirectoryAtPath:TEAMS_DIRECTORY()
- withIntermediateDirectories:YES
- attributes:nil
- error:NULL];
- // we copy teams only the first time because it's unlikely that newer ones are going to be added
- NSString *baseTeamsDir = [[NSString alloc] initWithFormat:@"%@/Settings/Teams/",resourcesDir];
- for (NSString *str in [[NSFileManager defaultManager] contentsOfDirectoryAtPath:baseTeamsDir error:NULL]) {
- NSString *sourceFile = [baseTeamsDir stringByAppendingString:str];
- NSString *destinationFile = [TEAMS_DIRECTORY() stringByAppendingString:str];
- [[NSFileManager defaultManager] removeItemAtPath:destinationFile error:NULL];
- [[NSFileManager defaultManager] copyItemAtPath:sourceFile toPath:destinationFile error:NULL];
- }
- [baseTeamsDir release];
- }
- // merge not needed as format rarely changes
+ NSArray *teamNames = [[NSArray alloc] initWithObjects:@"Edit Me!",@"Ninjas",@"Pirates",@"Robots",nil];
+ index = 0;
+ for (NSString *name in teamNames)
+ [CreationChamber createTeamNamed:name ofType:index++ controlledByAI:[name isEqualToString:@"Robots"]];
+ [teamNames release];
// SCHEMES - always overwrite and delete custom ones
if ([[NSFileManager defaultManager] fileExistsAtPath:SCHEMES_DIRECTORY()] == YES)
[[NSFileManager defaultManager] removeItemAtPath:SCHEMES_DIRECTORY() error:NULL];
- createSchemeNamed(@"Default", 0);
- createSchemeNamed(@"Pro Mode", 1);
- createSchemeNamed(@"Shoppa", 2);
- createSchemeNamed(@"Clean Slate", 3);
- createSchemeNamed(@"Minefield", 4);
- createSchemeNamed(@"Barrel Mayhem", 5);
- createSchemeNamed(@"Tunnel Hogs", 6);
- createSchemeNamed(@"Fort Mode", 7);
- createSchemeNamed(@"Timeless", 8);
- createSchemeNamed(@"Thinking with Portals", 9);
- createSchemeNamed(@"King Mode", 10);
+ NSArray *schemeNames = [[NSArray alloc] initWithObjects:@"Default",@"Pro Mode",@"Shoppa",@"Clean Slate",
+ @"Minefield",@"Barrel Mayhem",@"Tunnel Hogs",@"Fort Mode",@"Timeless",
+ @"Thinking with Portals",@"King Mode",nil];
+ index = 0;
+ for (NSString *name in schemeNames)
+ [CreationChamber createSchemeNamed:name ofType:index++];
+ [schemeNames release];
- // WEAPONS - always overwrite
- createWeaponNamed(@"Default", 0);
- createWeaponNamed(@"Crazy", 1);
- createWeaponNamed(@"Pro Mode", 2);
- createWeaponNamed(@"Shoppa", 3);
- createWeaponNamed(@"Clean Slate", 4);
- createWeaponNamed(@"Minefield", 5);
- createWeaponNamed(@"Thinking with Portals", 6);
- // merge not needed because weapons not present in the set are 0ed by GameSetup
+ // WEAPONS - always overwrite as merge is not needed (missing weaps are 0ed automatically)
+ NSArray *weaponNames = [[NSArray alloc] initWithObjects:@"Default",@"Crazy",@"Pro Mode",@"Shoppa",@"Clean Slate",
+ @"Minefield",@"Thinking with Portals",nil];
+ index = 0;
+ for (NSString *name in weaponNames)
+ [CreationChamber createWeaponNamed:name ofType:index++];
+ [weaponNames release];
}
#pragma mark -
@@ -164,24 +151,22 @@
switch (button.tag) {
case 0:
if (nil == self.gameConfigViewController) {
- xib = IS_IPAD() ? nil : @"GameConfigViewController";
+ xib = IS_IPAD() ? @"GameConfigViewController-iPad" : @"GameConfigViewController-iPhone";
GameConfigViewController *gcvc = [[GameConfigViewController alloc] initWithNibName:xib bundle:nil];
gcvc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
self.gameConfigViewController = gcvc;
[gcvc release];
}
-
[self presentModalViewController:self.gameConfigViewController animated:YES];
break;
case 2:
if (nil == self.settingsViewController) {
- SplitViewRootController *svrc = [[SplitViewRootController alloc] initWithNibName:nil bundle:nil];
+ SettingsContainerViewController *svrc = [[SettingsContainerViewController alloc] initWithNibName:nil bundle:nil];
svrc.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
self.settingsViewController = svrc;
[svrc release];
}
-
[self presentModalViewController:self.settingsViewController animated:YES];
break;
case 3:
@@ -224,9 +209,20 @@
self.savedGamesViewController = savedgames;
[savedgames release];
}
-
[self presentModalViewController:self.savedGamesViewController animated:YES];
break;
+ case 5:
+ if (nil == self.missionsViewController) {
+ xib = IS_IPAD() ? @"MissionTrainingViewController-iPad" : @"MissionTrainingViewController-iPhone";
+ MissionTrainingViewController *missions = [[MissionTrainingViewController alloc] initWithNibName:xib bundle:nil];
+ missions.modalTransitionStyle = IS_IPAD() ? UIModalTransitionStyleCoverVertical : UIModalTransitionStyleCrossDissolve;
+ if ([missions respondsToSelector:@selector(setModalPresentationStyle:)])
+ missions.modalPresentationStyle = UIModalPresentationPageSheet;
+ self.missionsViewController = missions;
+ [missions release];
+ }
+ [self presentModalViewController:self.missionsViewController animated:YES];
+ break;
default:
alert = [[UIAlertView alloc] initWithTitle:@"Not Yet Implemented"
message:@"Sorry, this feature is not yet implemented"
@@ -254,6 +250,7 @@
self.aboutViewController = nil;
self.savedGamesViewController = nil;
self.restoreViewController = nil;
+ self.missionsViewController = nil;
MSG_DIDUNLOAD();
[super viewDidUnload];
}
@@ -269,6 +266,8 @@
self.savedGamesViewController = nil;
if (self.restoreViewController.view.superview == nil)
self.restoreViewController = nil;
+ if (self.missionsViewController.view.superview == nil)
+ self.missionsViewController = nil;
MSG_MEMCLEAN();
[super didReceiveMemoryWarning];
}
@@ -279,6 +278,7 @@
releaseAndNil(aboutViewController);
releaseAndNil(savedGamesViewController);
releaseAndNil(restoreViewController);
+ releaseAndNil(missionsViewController);
[super dealloc];
}