cocoaTouch/iPad/MainMenuViewController.m
author koda
Fri, 02 Apr 2010 12:38:36 +0000
changeset 3250 d5cd1a617123
parent 3165 3ec07a7d8456
child 3251 221c163ad5d9
permissions -rw-r--r--
intial support for team configuration on the ifrontend
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3113
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
     1
//
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
     2
//  MainMenuViewController.m
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
     3
//  hwengine
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
     4
//
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
     5
//  Created by Vittorio on 08/01/10.
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
     6
//  Copyright 2010 __MyCompanyName__. All rights reserved.
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
     7
//
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
     8
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
     9
#import "MainMenuViewController.h"
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    10
#import "SDL_uikitappdelegate.h"
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    11
#import "PascalImports.h"
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    12
#import "SplitViewRootController.h"
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    13
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    14
// in case we don't want SDL_mixer...
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    15
//#import "SoundEffect.h"	
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    16
//SoundEffect *erasingSound = [[SoundEffect alloc] initWithContentsOfFile:[mainBundle pathForResource:@"Erase" ofType:@"caf"]];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    17
//SoundEffect *selectSound = [[SoundEffect alloc] initWithContentsOfFile:[mainBundle pathForResource:@"Select" ofType:@"caf"]];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    18
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    19
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    20
@implementation MainMenuViewController
3122
e005359efc59 hide the background gl context that remains active (might be worth freeing ithide the background gl context that remains active (might be worth freeing it))
koda
parents: 3113
diff changeset
    21
@synthesize cover;
3113
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    22
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    23
-(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation {
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    24
	return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    25
}
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    26
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    27
- (void)didReceiveMemoryWarning {
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    28
	// Releases the view if it doesn't have a superview.
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    29
	[super didReceiveMemoryWarning];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    30
}
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    31
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    32
- (void)dealloc {
3250
d5cd1a617123 intial support for team configuration on the ifrontend
koda
parents: 3165
diff changeset
    33
    [cover release];
3113
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    34
	[super dealloc];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    35
}
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    36
3250
d5cd1a617123 intial support for team configuration on the ifrontend
koda
parents: 3165
diff changeset
    37
-(void) viewDidUnload {
d5cd1a617123 intial support for team configuration on the ifrontend
koda
parents: 3165
diff changeset
    38
    self.cover = nil;
d5cd1a617123 intial support for team configuration on the ifrontend
koda
parents: 3165
diff changeset
    39
	[super viewDidUnload];
d5cd1a617123 intial support for team configuration on the ifrontend
koda
parents: 3165
diff changeset
    40
}
d5cd1a617123 intial support for team configuration on the ifrontend
koda
parents: 3165
diff changeset
    41
3113
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    42
-(void) viewDidLoad {
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    43
    // initialize some files the first time we load the game
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    44
	[NSThread detachNewThreadSelector:@selector(checkFirstRun) toTarget:self withObject:nil];
3250
d5cd1a617123 intial support for team configuration on the ifrontend
koda
parents: 3165
diff changeset
    45
    // listen to request to remove the modalviewcontroller
3113
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    46
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(dismissModalViewController) name: @"dismissModalView" object:nil];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    47
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    48
	[super viewDidLoad];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    49
}
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    50
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    51
// this is called to verify whether it's the first time the app is launched
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    52
// if it is it blocks user interaction with an alertView until files are created
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    53
-(void) checkFirstRun {
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    54
	NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    55
	
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    56
	NSString *filePath = [[SDLUIKitDelegate sharedAppDelegate] dataFilePath:@"settings.plist"];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    57
	if (!([[NSFileManager defaultManager] fileExistsAtPath:filePath])) {
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    58
		// file not present, means that also other files are absent
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    59
		NSLog(@"First time run, creating settings files");
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    60
		
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    61
		// show a popup with an indicator to make the user wait
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    62
		UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"One-time Preferences Configuration",@"")
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    63
                                                        message:nil
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    64
                                                       delegate:nil
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    65
                                              cancelButtonTitle:nil
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    66
                                              otherButtonTitles:nil];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    67
		[alert show];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    68
		[alert release];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    69
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    70
		UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    71
		indicator.center = CGPointMake(alert.bounds.size.width / 2, alert.bounds.size.height - 50);
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    72
		[indicator startAnimating];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    73
		[alert addSubview:indicator];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    74
		[indicator release];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    75
		
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    76
		// create settings.plist
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    77
		NSMutableDictionary *saveDict = [[NSMutableDictionary alloc] init];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    78
	
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    79
		[saveDict setObject:@"" forKey:@"username"];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    80
		[saveDict setObject:@"" forKey:@"password"];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    81
		[saveDict setObject:@"1" forKey:@"music"];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    82
		[saveDict setObject:@"1" forKey:@"sounds"];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    83
		[saveDict setObject:@"0" forKey:@"alternate"];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    84
	
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    85
		[saveDict writeToFile:filePath atomically:YES];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    86
		[saveDict release];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    87
		
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    88
		// create other files
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    89
		
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    90
		[alert dismissWithClickedButtonIndex:0 animated:YES];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    91
	}
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    92
	[pool release];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    93
	[NSThread exit];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    94
}
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    95
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    96
#pragma mark -
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    97
-(void) appear {
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    98
    [[SDLUIKitDelegate sharedAppDelegate].uiwindow addSubview:self.view];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
    99
    [self release];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   100
    
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   101
    [UIView beginAnimations:@"inserting main controller" context:NULL];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   102
	[UIView setAnimationDuration:1];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   103
	self.view.alpha = 1;
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   104
	[UIView commitAnimations];
3122
e005359efc59 hide the background gl context that remains active (might be worth freeing ithide the background gl context that remains active (might be worth freeing it))
koda
parents: 3113
diff changeset
   105
    
3165
3ec07a7d8456 just some very sane stuff for the iphone port (plus some macro on pascal files)
koda
parents: 3122
diff changeset
   106
    [NSTimer scheduledTimerWithTimeInterval:0.7 target:self selector:@selector(hideBehind) userInfo:nil repeats:NO];
3113
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   107
}
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   108
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   109
-(void) disappear {
3122
e005359efc59 hide the background gl context that remains active (might be worth freeing ithide the background gl context that remains active (might be worth freeing it))
koda
parents: 3113
diff changeset
   110
    if (nil != cover)
e005359efc59 hide the background gl context that remains active (might be worth freeing ithide the background gl context that remains active (might be worth freeing it))
koda
parents: 3113
diff changeset
   111
        [cover release];
e005359efc59 hide the background gl context that remains active (might be worth freeing ithide the background gl context that remains active (might be worth freeing it))
koda
parents: 3113
diff changeset
   112
    
3113
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   113
    [UIView beginAnimations:@"removing main controller" context:NULL];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   114
	[UIView setAnimationDuration:1];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   115
	self.view.alpha = 0;
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   116
	[UIView commitAnimations];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   117
    
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   118
    [self retain];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   119
    [self.view removeFromSuperview];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   120
}
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   121
3165
3ec07a7d8456 just some very sane stuff for the iphone port (plus some macro on pascal files)
koda
parents: 3122
diff changeset
   122
// this is a silly way to hide the sdl contex that remained active
3ec07a7d8456 just some very sane stuff for the iphone port (plus some macro on pascal files)
koda
parents: 3122
diff changeset
   123
-(void) hideBehind {
3ec07a7d8456 just some very sane stuff for the iphone port (plus some macro on pascal files)
koda
parents: 3122
diff changeset
   124
    if (nil == cover) {
3ec07a7d8456 just some very sane stuff for the iphone port (plus some macro on pascal files)
koda
parents: 3122
diff changeset
   125
        cover= [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
3ec07a7d8456 just some very sane stuff for the iphone port (plus some macro on pascal files)
koda
parents: 3122
diff changeset
   126
        cover.backgroundColor = [UIColor blackColor];
3ec07a7d8456 just some very sane stuff for the iphone port (plus some macro on pascal files)
koda
parents: 3122
diff changeset
   127
    }
3ec07a7d8456 just some very sane stuff for the iphone port (plus some macro on pascal files)
koda
parents: 3122
diff changeset
   128
    [[SDLUIKitDelegate sharedAppDelegate].uiwindow insertSubview:cover belowSubview:self.view];
3ec07a7d8456 just some very sane stuff for the iphone port (plus some macro on pascal files)
koda
parents: 3122
diff changeset
   129
}
3ec07a7d8456 just some very sane stuff for the iphone port (plus some macro on pascal files)
koda
parents: 3122
diff changeset
   130
3113
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   131
#pragma mark -
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   132
-(IBAction) switchViews:(id) sender {
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   133
    UIButton *button = (UIButton *)sender;
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   134
    SplitViewRootController *splitViewController;
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   135
    UIAlertView *alert;
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   136
    
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   137
    switch (button.tag) {
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   138
        case 0:
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   139
            [[SDLUIKitDelegate sharedAppDelegate] startSDLgame];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   140
            break;
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   141
        case 2:
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   142
            // for now this controller is just to simplify code management
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   143
            splitViewController = [[SplitViewRootController alloc] init];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   144
            splitViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   145
            [self presentModalViewController:splitViewController animated:YES];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   146
            break;
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   147
        default:
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   148
            alert = [[UIAlertView alloc] initWithTitle:@"Not Yet Implemented"
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   149
                                               message:@"Sorry, this feature is not yet implemented"
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   150
                                              delegate:nil
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   151
                                     cancelButtonTitle:@"Well, don't worry"
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   152
                                     otherButtonTitles:nil];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   153
            [alert show];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   154
            [alert release];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   155
            break;
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   156
    }
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   157
}
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   158
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   159
-(void) dismissModalViewController {
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   160
    [self dismissModalViewControllerAnimated:YES];
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   161
}
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   162
2829ea0dd47c * port fadeout to opengles
koda
parents:
diff changeset
   163
@end