diff -r f1bbe35ddb83 -r 2829ea0dd47c cocoaTouch/iPad/MainMenuViewController.m --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cocoaTouch/iPad/MainMenuViewController.m Sat Mar 27 16:57:18 2010 +0000 @@ -0,0 +1,142 @@ +// +// MainMenuViewController.m +// hwengine +// +// Created by Vittorio on 08/01/10. +// Copyright 2010 __MyCompanyName__. All rights reserved. +// + +#import "MainMenuViewController.h" +#import "SDL_uikitappdelegate.h" +#import "PascalImports.h" +#import "SplitViewRootController.h" + +// in case we don't want SDL_mixer... +//#import "SoundEffect.h" +//SoundEffect *erasingSound = [[SoundEffect alloc] initWithContentsOfFile:[mainBundle pathForResource:@"Erase" ofType:@"caf"]]; +//SoundEffect *selectSound = [[SoundEffect alloc] initWithContentsOfFile:[mainBundle pathForResource:@"Select" ofType:@"caf"]]; + + +@implementation MainMenuViewController + +-(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { + return (interfaceOrientation == UIInterfaceOrientationLandscapeRight); +} + +- (void)didReceiveMemoryWarning { + // Releases the view if it doesn't have a superview. + [super didReceiveMemoryWarning]; +} + +- (void)dealloc { + [super dealloc]; +} + +-(void) viewDidLoad { + // initialize some files the first time we load the game + [NSThread detachNewThreadSelector:@selector(checkFirstRun) toTarget:self withObject:nil]; + // listet to request to remove the modalviewcontroller + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dismissModalViewController) name: @"dismissModalView" object:nil]; + + [super viewDidLoad]; +} + +// this is called to verify whether it's the first time the app is launched +// if it is it blocks user interaction with an alertView until files are created +-(void) checkFirstRun { + NSAutoreleasePool *pool = [[NSAutoreleasePool 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(@"One-time Preferences Configuration",@"") + message:nil + delegate:nil + cancelButtonTitle:nil + otherButtonTitles:nil]; + [alert show]; + [alert release]; + + 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]; + + // 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 + + [alert dismissWithClickedButtonIndex:0 animated:YES]; + } + [pool release]; + [NSThread exit]; +} + +#pragma mark - +-(void) appear { + [[SDLUIKitDelegate sharedAppDelegate].uiwindow addSubview:self.view]; + [self release]; + + [UIView beginAnimations:@"inserting main controller" context:NULL]; + [UIView setAnimationDuration:1]; + self.view.alpha = 1; + [UIView commitAnimations]; +} + +-(void) disappear { + [UIView beginAnimations:@"removing main controller" context:NULL]; + [UIView setAnimationDuration:1]; + self.view.alpha = 0; + [UIView commitAnimations]; + + [self retain]; + [self.view removeFromSuperview]; +} + +#pragma mark - +-(IBAction) switchViews:(id) sender { + UIButton *button = (UIButton *)sender; + SplitViewRootController *splitViewController; + UIAlertView *alert; + + switch (button.tag) { + case 0: + [[SDLUIKitDelegate sharedAppDelegate] startSDLgame]; + break; + case 2: + // for now this controller is just to simplify code management + splitViewController = [[SplitViewRootController alloc] init]; + splitViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; + [self presentModalViewController:splitViewController animated:YES]; + break; + default: + alert = [[UIAlertView alloc] initWithTitle:@"Not Yet Implemented" + message:@"Sorry, this feature is not yet implemented" + delegate:nil + cancelButtonTitle:@"Well, don't worry" + otherButtonTitles:nil]; + [alert show]; + [alert release]; + break; + } +} + +-(void) dismissModalViewController { + [self dismissModalViewControllerAnimated:YES]; +} + +@end