summary refs log tree commit diff stats
path: root/Classes/Cart_CollectAppDelegate.m
diff options
context:
space:
mode:
Diffstat (limited to 'Classes/Cart_CollectAppDelegate.m')
-rwxr-xr-xClasses/Cart_CollectAppDelegate.m40
1 files changed, 35 insertions, 5 deletions
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 @@
142 142
143-(void) applicationDidEnterBackground:(UIApplication*)application { 143-(void) applicationDidEnterBackground:(UIApplication*)application {
144 [[CCDirector sharedDirector] stopAnimation]; 144 [[CCDirector sharedDirector] stopAnimation];
145
146 [[NSUserDefaults standardUserDefaults] synchronize];
145 147
146 if ([[CCDirector sharedDirector] runningScene].tag == GAME_SCENE) 148 if ([[CCDirector sharedDirector] runningScene].tag == GAME_SCENE)
147 { 149 {
@@ -194,20 +196,48 @@
194 { 196 {
195 NSString* databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:databaseName]; 197 NSString* databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:databaseName];
196 [fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil]; 198 [fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil];
197 //[fileManager release];
198 199
199 [userDefaults setInteger:1 forKey:@"databaseVersion"]; 200 [userDefaults setInteger:2 forKey:@"databaseVersion"];
201 }
202
203 if (sqlite3_open([databasePath UTF8String], &database) != SQLITE_OK)
204 {
205 NSLog(@"Failed to open database");
200 } 206 }
201 207
208 // Database migrations!
202 if ([userDefaults integerForKey:@"databaseVersion"] < 1) 209 if ([userDefaults integerForKey:@"databaseVersion"] < 1)
203 { 210 {
204 // Upgrade the database to version 1, which is completely unnecessary as no prior version exists 211 // Upgrade the database to version 1, which is completely unnecessary as no prior version exists
205 } 212 }
206 213
207 if (sqlite3_open([databasePath UTF8String], &database) != SQLITE_OK) 214 if ([userDefaults integerForKey:@"databaseVersion"] < 2)
208 { 215 {
209 NSLog(@"Failed to open database"); 216 // Database version 2 adds a "gameMode" column to highscores to allow for multiple highscore lists
217 const char* sqlQuery = "ALTER TABLE highscores ADD gameMode varchar(255)";
218 sqlite3_stmt* compiled_statement;
219
220 if (sqlite3_prepare_v2(database, sqlQuery, -1, &compiled_statement, NULL) == SQLITE_OK)
221 {
222 sqlite3_step(compiled_statement);
223
224 sqlQuery = "UPDATE highscores SET gameMode = \"Collect\"";
225 if (sqlite3_prepare_v2(database, sqlQuery, -1, &compiled_statement, NULL) == SQLITE_OK)
226 {
227 sqlite3_step(compiled_statement);
228
229 NSLog(@"Updated database to version 2.");
230 [userDefaults setInteger:2 forKey:@"databaseVersion"];
231 } else {
232 NSLog(@"Error while updating database to version 2. '%s'", sqlite3_errmsg(database));
233 }
234 } else {
235 NSLog(@"Error while updating database to version 2. '%s'", sqlite3_errmsg(database));
236 }
210 } 237 }
238
239 // It's rather important that the database version gets saved
240 [userDefaults synchronize];
211 } 241 }
212 242
213 return database; 243 return database;