|
|
//
// Cart_CollectAppDelegate.m
// Cart Collect
//
// Created by iD Student Account on 7/18/11.
// Copyright __MyCompanyName__ 2011. All rights reserved.
//
#import "cocos2d.h"
#import "Cart_CollectAppDelegate.h"
#import "GameConfig.h"
#import "GameMode.h"
#import "RootViewController.h"
#import "MainMenuLayer.h"
#import "TestFlight.h"
#import "CCNotifications.h"
#import "notificationDesign.h"
@implementation Cart_CollectAppDelegate
@synthesize window, viewController;
- (void) removeStartupFlicker
{
//
// THIS CODE REMOVES THE STARTUP FLICKER
//
// Uncomment the following code if you Application only supports landscape mode
//
#if GAME_AUTOROTATION == kGameAutorotationUIViewController
// CC_ENABLE_DEFAULT_GL_STATES();
// CCDirector *director = [CCDirector sharedDirector];
// CGSize size = [director winSize];
// CCSprite *sprite = [CCSprite spriteWithFile:@"Default.png"];
// sprite.position = ccp(size.width/2, size.height/2);
// sprite.rotation = -90;
// [sprite visit];
// [[director openGLView] swapBuffers];
// CC_ENABLE_DEFAULT_GL_STATES();
#endif // GAME_AUTOROTATION == kGameAutorotationUIViewController
}
- (void) applicationDidFinishLaunching:(UIApplication*)application
{
// REMOVE THIS LINE FOR RELEASE BUILDS
[TestFlight takeOff:@"66a3925c85c93e7628c14d167ff6c1b7_MjM4MTEyMDExLTA4LTE3IDEzOjEyOjQ4Ljg2NDE2OQ"];
[[UIApplication sharedApplication] setIdleTimerDisabled:YES];
NSMutableDictionary* registerDefaults = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@"", @"username",
[NSNumber numberWithBool:YES], @"submitScore",
nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:registerDefaults];
// Init the window
window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Try to use CADisplayLink director
// if it fails (SDK < 3.1) use the default director
if( ! [CCDirector setDirectorType:kCCDirectorTypeDisplayLink] )
[CCDirector setDirectorType:kCCDirectorTypeDefault];
CCDirector *director = [CCDirector sharedDirector];
CCNotifications* notifications = [CCNotifications sharedManager];
[director setNotificationNode:notifications];
// Init the View Controller
viewController = [[RootViewController alloc] initWithNibName:nil bundle:nil];
viewController.wantsFullScreenLayout = YES;
//
// Create the EAGLView manually
// 1. Create a RGB565 format. Alternative: RGBA8
// 2. depth format of 0 bit. Use 16 or 24 bit for 3d effects, like CCPageTurnTransition
//
//
EAGLView *glView = [EAGLView viewWithFrame:[window bounds]
pixelFormat:kEAGLColorFormatRGB565 // kEAGLColorFormatRGBA8
depthFormat:0 // GL_DEPTH_COMPONENT16_OES
];
// attach the openglView to the director
[director setOpenGLView:glView];
// // Enables High Res mode (Retina Display) on iPhone 4 and maintains low res on all other devices
//if( ! [director enableRetinaDisplay:YES] )
// CCLOG(@"Retina Display Not supported");
//
// VERY IMPORTANT:
// If the rotation is going to be controlled by a UIViewController
// then the device orientation should be "Portrait".
//
// IMPORTANT:
// By default, this template only supports Landscape orientations.
// Edit the RootViewController.m file to edit the supported orientations.
//
#if GAME_AUTOROTATION == kGameAutorotationUIViewController
[director setDeviceOrientation:kCCDeviceOrientationPortrait];
#else
[director setDeviceOrientation:kCCDeviceOrientationPortrait];
#endif
[director setAnimationInterval:1.0/60];
//[director setDisplayFPS:YES];
// make the OpenGLView a child of the view controller
[viewController setView:glView];
// make the View Controller a child of the main window
[window addSubview: viewController.view];
[window makeKeyAndVisible];
// Default texture format for PNG/BMP/TIFF/JPEG/GIF images
// It can be RGBA8888, RGBA4444, RGB5_A1, RGB565
// You can change anytime.
[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888];
// Removes the startup flicker
[self removeStartupFlicker];
// Run the intro Scene
[[CCDirector sharedDirector] runWithScene: [MainMenuLayer scene]];
}
- (void)applicationWillResignActive:(UIApplication *)application {
[[CCDirector sharedDirector] pause];
[[NSUserDefaults standardUserDefaults] synchronize];
if ([[CCDirector sharedDirector] runningScene].tag == GAME_SCENE)
{
[((GameMode*)[[[CCDirector sharedDirector] runningScene] getChildByTag:GAME_LAYER]) pause];
}
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
[[CCDirector sharedDirector] resume];
}
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
[[CCDirector sharedDirector] purgeCachedData];
}
-(void) applicationDidEnterBackground:(UIApplication*)application {
[[CCDirector sharedDirector] stopAnimation];
}
-(void) applicationWillEnterForeground:(UIApplication*)application {
[[CCDirector sharedDirector] startAnimation];
}
- (void)applicationWillTerminate:(UIApplication *)application {
CCDirector *director = [CCDirector sharedDirector];
sqlite3_close([Cart_CollectAppDelegate database]);
[[director openGLView] removeFromSuperview];
[viewController release];
[window release];
[director end];
}
- (void)applicationSignificantTimeChange:(UIApplication *)application {
[[CCDirector sharedDirector] setNextDeltaTimeZero:YES];
}
- (void)dealloc {
//[[CCDirector sharedDirector] release];
[window release];
[super dealloc];
}
+ (sqlite3*)database
{
static sqlite3* database = nil;
if (database == nil)
{
NSString* databaseName = @"cartdata.sqlite3";
NSArray* documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* documentsDir = [documentPaths objectAtIndex:0];
NSString* databasePath = [documentsDir stringByAppendingPathComponent:databaseName];
NSFileManager* fileManager = [NSFileManager defaultManager];
NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
if (![fileManager fileExistsAtPath:databasePath])
{
NSString* databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:databaseName];
[fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil];
[userDefaults setInteger:2 forKey:@"databaseVersion"];
}
if (sqlite3_open([databasePath UTF8String], &database) != SQLITE_OK)
{
NSLog(@"Failed to open database");
}
// Database migrations!
if ([userDefaults integerForKey:@"databaseVersion"] < 1)
{
// Upgrade the database to version 1, which is completely unnecessary as no prior version exists
}
if ([userDefaults integerForKey:@"databaseVersion"] < 2)
{
// Database version 2 adds a "gameMode" column to highscores to allow for multiple highscore lists
const char* sqlQuery = "ALTER TABLE highscores ADD gameMode varchar(255)";
sqlite3_stmt* compiled_statement;
if (sqlite3_prepare_v2(database, sqlQuery, -1, &compiled_statement, NULL) == SQLITE_OK)
{
sqlite3_step(compiled_statement);
sqlQuery = "UPDATE highscores SET gameMode = \"Collect\"";
if (sqlite3_prepare_v2(database, sqlQuery, -1, &compiled_statement, NULL) == SQLITE_OK)
{
sqlite3_step(compiled_statement);
NSLog(@"Updated database to version 2.");
[userDefaults setInteger:2 forKey:@"databaseVersion"];
} else {
NSLog(@"Error while updating database to version 2. '%s'", sqlite3_errmsg(database));
}
} else {
NSLog(@"Error while updating database to version 2. '%s'", sqlite3_errmsg(database));
}
}
// It's rather important that the database version gets saved
[userDefaults synchronize];
}
return database;
}
@end
|