summary refs log tree commit diff stats
path: root/Classes/Highscore.m
diff options
context:
space:
mode:
authorStarla Insigna <starla4444@gmail.com>2011-08-24 11:53:40 -0400
committerStarla Insigna <starla4444@gmail.com>2011-08-24 11:53:40 -0400
commitd8f00310e486aed1ab289a0f816acec571193c32 (patch)
tree5f2ce4b1a1187035514bcd4e3c8b0b0f17b7c12c /Classes/Highscore.m
parent21294a54c49ab67e04898aac3482035bab6c79ae (diff)
downloadcartcollect-d8f00310e486aed1ab289a0f816acec571193c32.tar.gz
cartcollect-d8f00310e486aed1ab289a0f816acec571193c32.tar.bz2
cartcollect-d8f00310e486aed1ab289a0f816acec571193c32.zip
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.
Diffstat (limited to 'Classes/Highscore.m')
-rwxr-xr-xClasses/Highscore.m53
1 files changed, 53 insertions, 0 deletions
diff --git a/Classes/Highscore.m b/Classes/Highscore.m index 20ce56f..546cbfe 100755 --- a/Classes/Highscore.m +++ b/Classes/Highscore.m
@@ -7,11 +7,64 @@
7// 7//
8 8
9#import "Highscore.h" 9#import "Highscore.h"
10#import <sqlite3.h>
11#import "Cart_CollectAppDelegate.h"
10 12
11@implementation Highscore 13@implementation Highscore
12 14
13@synthesize name, score, date; 15@synthesize name, score, date;
14 16
17+ (NSArray*)localHighscoreListForGameMode:(NSString*)gameMode
18{
19 NSMutableArray* highscores = [NSMutableArray arrayWithCapacity:15];
20 const char* sqlQuery = [[NSString stringWithFormat:@"SELECT * FROM highscores WHERE gameMode = \"%@\" ORDER BY score DESC LIMIT 15", gameMode] UTF8String];
21 sqlite3_stmt* compiled_statement;
22
23 if (sqlite3_prepare_v2([Cart_CollectAppDelegate database], sqlQuery, -1, &compiled_statement, NULL) == SQLITE_OK)
24 {
25 while (sqlite3_step(compiled_statement) == SQLITE_ROW)
26 {
27 NSString* name = [NSString stringWithUTF8String:(char*)sqlite3_column_text(compiled_statement, 1)];
28 int score = sqlite3_column_int(compiled_statement, 2);
29
30 NSDate* date = nil;
31 char* dateStr = (char*)sqlite3_column_text(compiled_statement, 3);
32 if (dateStr != NULL)
33 {
34 NSString* theDate = [NSString stringWithUTF8String:dateStr];
35 NSDateComponents* comps = [[NSDateComponents alloc] init];
36 [comps setYear:[[theDate substringToIndex:4] intValue]];
37 [comps setMonth:[[theDate substringWithRange:NSMakeRange(5, 2)] intValue]];
38 [comps setDay:[[theDate substringWithRange:NSMakeRange(8, 2)] intValue]];
39 [comps setHour:[[theDate substringWithRange:NSMakeRange(11, 2)] intValue]];
40 [comps setMinute:[[theDate substringWithRange:NSMakeRange(14, 2)] intValue]];
41 [comps setSecond:[[theDate substringWithRange:NSMakeRange(17, 2)] intValue]];
42 date = [[NSCalendar currentCalendar] dateFromComponents:comps];
43 date = [date dateByAddingTimeInterval:[[NSTimeZone localTimeZone] secondsFromGMT]];
44 [comps release];
45 }
46
47 Highscore* highscore = [[Highscore alloc] initWithName:name score:score date:date];
48 [highscores addObject:highscore];
49 [highscore release];
50 }
51 }
52
53 return [highscores copy];
54}
55
56+ (Highscore*)localHighscoreForGameMode:(NSString*)gameMode
57{
58 NSArray* localHighscores = [Highscore localHighscoreListForGameMode:gameMode];
59
60 if ([localHighscores count] > 0)
61 {
62 return [localHighscores objectAtIndex:0];
63 } else {
64 return nil;
65 }
66}
67
15- (id)initWithName:(NSString*)m_name score:(int)m_score date:(NSDate*)m_date 68- (id)initWithName:(NSString*)m_name score:(int)m_score date:(NSDate*)m_date
16{ 69{
17 self = [super init]; 70 self = [super init];