From d8f00310e486aed1ab289a0f816acec571193c32 Mon Sep 17 00:00:00 2001 From: Starla Insigna Date: Wed, 24 Aug 2011 11:53:40 -0400 Subject: Added support for multiple local highscore lists This revision increments the database version to 2. Also fixed a small problem with GameModeSelection that aligned the highscore text incorrectly. --- Classes/Cart_CollectAppDelegate.m | 40 ++++++++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) (limited to 'Classes/Cart_CollectAppDelegate.m') diff --git a/Classes/Cart_CollectAppDelegate.m b/Classes/Cart_CollectAppDelegate.m index 0af3ac0..ba9d60b 100755 --- a/Classes/Cart_CollectAppDelegate.m +++ b/Classes/Cart_CollectAppDelegate.m @@ -142,6 +142,8 @@ -(void) applicationDidEnterBackground:(UIApplication*)application { [[CCDirector sharedDirector] stopAnimation]; + + [[NSUserDefaults standardUserDefaults] synchronize]; if ([[CCDirector sharedDirector] runningScene].tag == GAME_SCENE) { @@ -194,20 +196,48 @@ { NSString* databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:databaseName]; [fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil]; - //[fileManager release]; - [userDefaults setInteger:1 forKey:@"databaseVersion"]; + [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 (sqlite3_open([databasePath UTF8String], &database) != SQLITE_OK) + + if ([userDefaults integerForKey:@"databaseVersion"] < 2) { - NSLog(@"Failed to open database"); + // 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; -- cgit 1.4.1