cocoaTouch/iPad/MainMenuViewController.m
changeset 3113 2829ea0dd47c
child 3122 e005359efc59
--- /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