summary refs log tree commit diff stats
path: root/Classes/GameModeInfo.m
diff options
context:
space:
mode:
Diffstat (limited to 'Classes/GameModeInfo.m')
-rw-r--r--Classes/GameModeInfo.m126
1 files changed, 126 insertions, 0 deletions
diff --git a/Classes/GameModeInfo.m b/Classes/GameModeInfo.m new file mode 100644 index 0000000..1f85978 --- /dev/null +++ b/Classes/GameModeInfo.m
@@ -0,0 +1,126 @@
1//
2// GameModeInfo.m
3// Cartographic
4//
5// Created by Starla Insigna on 11/28/11.
6// Copyright (c) 2011 Four Island. All rights reserved.
7//
8
9#import "GameModeInfo.h"
10#import "CCNotifications.h"
11#import "GameMode.h"
12#import "GameModeManager.h"
13#import "TestFlight.h"
14
15@implementation GameModeInfo
16
17@synthesize name, location, numOfStars, image, unlocked, globalHighscoreKey;
18
19- (id)initWithName:(NSString*)m_name location:(NSString*)m_location numOfStars:(int)m_numOfStars imageFilename:(NSString*)m_imageFilename unlocked:(BOOL)m_unlocked gameClass:(Class)m_gameClass globalHighscoreKey:(NSString*)m_globalHighscoreKey
20{
21 self = [super init];
22
23 if (nil != self)
24 {
25 name = m_name;
26 location = m_location;
27 numOfStars = m_numOfStars;
28 image = [[UIImage alloc] initWithContentsOfFile:m_imageFilename];
29 globalHighscoreKey = m_globalHighscoreKey;
30
31 NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
32 unlocked = [defaults boolForKey:[NSString stringWithFormat:@"gameModeUnlocked-%@", name]];
33 if (!unlocked)
34 {
35 unlocked = m_unlocked;
36 }
37
38 stars = (BOOL*) calloc(numOfStars, sizeof(BOOL));
39 for (int i=0; i<numOfStars; i++)
40 {
41 stars[i] = [defaults boolForKey:[NSString stringWithFormat:@"gameModeStar-%@-%d", name, i]];
42 }
43
44 if ([m_gameClass isSubclassOfClass:[GameMode class]])
45 {
46 gameClass = m_gameClass;
47 } else {
48 [NSException raise:@"Invalid gameClass value" format:@"gameClass must be a subclass of GameMode"];
49 }
50 }
51
52 return self;
53}
54
55- (void)setStar:(int)star_id withMessage:(NSString*)message
56{
57 if (!stars[star_id])
58 {
59 stars[star_id] = YES;
60
61 NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
62 [defaults setBool:YES forKey:[NSString stringWithFormat:@"gameModeStar-%@-%d", name, star_id]];
63
64 [[CCNotifications sharedManager] addWithTitle:@"Star Achieved!" message:message image:[NSString stringWithFormat:@"star_%d.png", star_id+1]];
65
66 [GameModeManager sharedInstance].stars++;
67 }
68}
69
70- (BOOL)star:(int)star_id
71{
72 return stars[star_id];
73}
74
75- (int)starsCollected
76{
77 int result = 0;
78
79 for (int i=0; i<numOfStars; i++)
80 {
81 if (stars[i])
82 {
83 result++;
84 }
85 }
86
87 return result;
88}
89
90- (CCScene*)scene
91{
92 CCScene* scene = [CCScene node];
93
94 GameMode* layer = [[((GameMode*) [gameClass alloc]) init] autorelease];
95 layer.tag = GAME_LAYER;
96 [scene addChild:layer];
97
98 scene.tag = GAME_SCENE;
99
100 return scene;
101}
102
103- (void)unlock
104{
105 if (!unlocked)
106 {
107 unlocked = YES;
108
109 NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
110 [defaults setBool:YES forKey:[NSString stringWithFormat:@"gameModeUnlocked-%@", name]];
111
112 CCTexture2D* texture = [[CCTexture2D alloc] initWithImage:image];
113 [[CCNotifications sharedManager] addWithTitle:name message:@"You've unlocked a new game mode!" texture:texture];
114 [texture release];
115
116 [TestFlight passCheckpoint:[NSString stringWithFormat:@"Unlocked %@ Mode", name]];
117 }
118}
119
120- (void)dealloc
121{
122 free(stars);
123 [super dealloc];
124}
125
126@end