diff -r 506f7d6a82b3 -r 988e39ef3c20 cocoaTouch/MainMenuViewController.m --- a/cocoaTouch/MainMenuViewController.m Wed Apr 07 12:15:49 2010 +0000 +++ b/cocoaTouch/MainMenuViewController.m Wed Apr 07 15:54:15 2010 +0000 @@ -38,21 +38,23 @@ } -(void) viewDidLoad { - char *ver; HW_versionInfo(NULL, &ver); NSString *versionNumber = [[NSString alloc] initWithCString:ver]; self.versionLabel.text = versionNumber; [versionNumber release]; - // initialize some files the first time we load the game - [NSThread detachNewThreadSelector:@selector(checkFirstRun) toTarget:self withObject:nil]; // listen to request to remove the modalviewcontroller [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dismissModalViewController) name: @"dismissModalView" object:nil]; - + + // initialize some files the first time we load the game + NSString *filePath = [[SDLUIKitDelegate sharedAppDelegate] dataFilePath:@"settings.plist"]; + if (!([[NSFileManager defaultManager] fileExistsAtPath:filePath])) + [NSThread detachNewThreadSelector:@selector(checkFirstRun) toTarget:self withObject:nil]; + [super viewDidLoad]; } @@ -60,72 +62,69 @@ // if it is it blocks user interaction with an alertView until files are created -(void) checkFirstRun { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSLog(@"First time run, creating settings files"); + + // show a popup with an indicator to make the user wait + UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Please wait",@"") + message:nil + delegate:nil + cancelButtonTitle:nil + otherButtonTitles:nil]; + [alert show]; + + UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] + initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; + indicator.center = CGPointMake(alert.bounds.size.width / 2, alert.bounds.size.height - 50); + [indicator startAnimating]; + [alert addSubview:indicator]; + [indicator release]; + [alert release]; + + // create Default Team.plist + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); + NSString *teamsDirectory = [[paths objectAtIndex:0] stringByAppendingString:@"/Teams/"]; + [[NSFileManager defaultManager] createDirectoryAtPath:teamsDirectory + withIntermediateDirectories:NO + attributes:nil + error:NULL]; + + NSMutableArray *hedgehogs = [[NSMutableArray alloc] init]; + + for (int i = 0; i < 8; i++) { + NSString *hogName = [[NSString alloc] initWithFormat:@"hedgehog %d",i]; + NSDictionary *hog = [[NSDictionary alloc] initWithObjectsAndKeys:@"100",@"health",@"0",@"level", + hogName,@"hogname",@"NoHat",@"hat",nil]; + [hogName release]; + [hedgehogs addObject:hog]; + [hog release]; + } + + NSDictionary *defaultTeam = [[NSDictionary alloc] initWithObjectsAndKeys:@"4421353",@"color",@"0",@"hash", + @"Default Team",@"teamname",@"Statue",@"grave",@"Plane",@"fort", + @"Default",@"voicepack",@"hedgewars",@"flag",hedgehogs,@"hedgehogs",nil]; + [hedgehogs release]; + NSString *defaultTeamFile = [teamsDirectory stringByAppendingString:@"Default Team.plist"]; + [defaultTeam writeToFile:defaultTeamFile atomically:YES]; + [defaultTeam release]; + + // create settings.plist + NSMutableDictionary *saveDict = [[NSMutableDictionary alloc] init]; - NSString *filePath = [[SDLUIKitDelegate sharedAppDelegate] dataFilePath:@"settings.plist"]; - if (!([[NSFileManager defaultManager] fileExistsAtPath:filePath])) { - // file not present, means that also other files are absent - NSLog(@"First time run, creating settings files"); - - // show a popup with an indicator to make the user wait - UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Please wait",@"") - message:nil - delegate:nil - cancelButtonTitle:nil - otherButtonTitles:nil]; - [alert show]; - - UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] - initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; - indicator.center = CGPointMake(alert.bounds.size.width / 2, alert.bounds.size.height - 50); - [indicator startAnimating]; - [alert addSubview:indicator]; - [indicator release]; - [alert release]; - - // create Default Team.plist - NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); - NSString *teamsDirectory = [[paths objectAtIndex:0] stringByAppendingString:@"/Teams/"]; - [[NSFileManager defaultManager] createDirectoryAtPath:teamsDirectory - withIntermediateDirectories:NO - attributes:nil - error:NULL]; - - NSMutableArray *hedgehogs = [[NSMutableArray alloc] init]; + [saveDict setObject:@"" forKey:@"username"]; + [saveDict setObject:@"" forKey:@"password"]; + [saveDict setObject:@"1" forKey:@"music"]; + [saveDict setObject:@"1" forKey:@"sounds"]; + [saveDict setObject:@"0" forKey:@"alternate"]; - for (int i = 0; i < 8; i++) { - NSString *hogName = [[NSString alloc] initWithFormat:@"hedgehog %d",i]; - NSDictionary *hog = [[NSDictionary alloc] initWithObjectsAndKeys:@"100",@"health",@"0",@"level", - hogName,@"hogname",@"NoHat",@"hat",nil]; - [hogName release]; - [hedgehogs addObject:hog]; - [hog release]; - } - - NSDictionary *defaultTeam = [[NSDictionary alloc] initWithObjectsAndKeys:@"4421353",@"color",@"0",@"hash", - @"Default Team",@"teamname",@"Statue",@"grave",@"Plane",@"fort", - @"Default",@"voicepack",@"hedgewars",@"flag",hedgehogs,@"hedgehogs",nil]; - [hedgehogs release]; - NSString *defaultTeamFile = [teamsDirectory stringByAppendingString:@"Default Team.plist"]; - [defaultTeam writeToFile:defaultTeamFile atomically:YES]; - [defaultTeam release]; - - // create settings.plist - NSMutableDictionary *saveDict = [[NSMutableDictionary alloc] init]; - - [saveDict setObject:@"" forKey:@"username"]; - [saveDict setObject:@"" forKey:@"password"]; - [saveDict setObject:@"1" forKey:@"music"]; - [saveDict setObject:@"1" forKey:@"sounds"]; - [saveDict setObject:@"0" forKey:@"alternate"]; - - [saveDict writeToFile:filePath atomically:YES]; - [saveDict release]; - - // create other files - - // ok let the user take control - [alert dismissWithClickedButtonIndex:0 animated:YES]; - } + NSString *filePath = [[SDLUIKitDelegate sharedAppDelegate] dataFilePath:@"settings.plist"]; + [saveDict writeToFile:filePath atomically:YES]; + [saveDict release]; + + // create other files + + // ok let the user take control + [alert dismissWithClickedButtonIndex:0 animated:YES]; + [pool release]; [NSThread exit]; }