diff options
author | Starla Insigna <starla4444@gmail.com> | 2011-08-24 11:53:40 -0400 |
---|---|---|
committer | Starla Insigna <starla4444@gmail.com> | 2011-08-24 11:53:40 -0400 |
commit | d8f00310e486aed1ab289a0f816acec571193c32 (patch) | |
tree | 5f2ce4b1a1187035514bcd4e3c8b0b0f17b7c12c /Classes/Highscore.m | |
parent | 21294a54c49ab67e04898aac3482035bab6c79ae (diff) | |
download | cartcollect-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-x | Classes/Highscore.m | 53 |
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]; |