diff options
Diffstat (limited to 'Classes/GameModeInfo.m')
-rw-r--r-- | Classes/GameModeInfo.m | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/Classes/GameModeInfo.m b/Classes/GameModeInfo.m new file mode 100644 index 0000000..8b33fd8 --- /dev/null +++ b/Classes/GameModeInfo.m | |||
@@ -0,0 +1,128 @@ | |||
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, unlockCondition, globalHighscoreKey, starsToUnlock; | ||
18 | |||
19 | - (id)initWithName:(NSString*)m_name location:(NSString*)m_location numOfStars:(int)m_numOfStars imageFilename:(NSString*)m_imageFilename unlocked:(BOOL)m_unlocked unlockCondition:(NSString*)m_unlockCondition gameClass:(Class)m_gameClass globalHighscoreKey:(NSString*)m_globalHighscoreKey starsToUnlock:(int)m_starsToUnlock | ||
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 | unlockCondition = m_unlockCondition; | ||
30 | globalHighscoreKey = m_globalHighscoreKey; | ||
31 | starsToUnlock = m_starsToUnlock; | ||
32 | |||
33 | NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; | ||
34 | unlocked = [defaults boolForKey:[NSString stringWithFormat:@"gameModeUnlocked-%@", name]]; | ||
35 | if (!unlocked) | ||
36 | { | ||
37 | unlocked = m_unlocked; | ||
38 | } | ||
39 | |||
40 | stars = (BOOL*) calloc(numOfStars, sizeof(BOOL)); | ||
41 | for (int i=0; i<numOfStars; i++) | ||
42 | { | ||
43 | stars[i] = [defaults boolForKey:[NSString stringWithFormat:@"gameModeStar-%@-%d", name, i]]; | ||
44 | } | ||
45 | |||
46 | if ([m_gameClass isSubclassOfClass:[GameMode class]]) | ||
47 | { | ||
48 | gameClass = m_gameClass; | ||
49 | } else { | ||
50 | [NSException raise:@"Invalid gameClass value" format:@"gameClass must be a subclass of GameMode"]; | ||
51 | } | ||
52 | } | ||
53 | |||
54 | return self; | ||
55 | } | ||
56 | |||
57 | - (void)setStar:(int)star_id withMessage:(NSString*)message | ||
58 | { | ||
59 | if (!stars[star_id]) | ||
60 | { | ||
61 | stars[star_id] = YES; | ||
62 | |||
63 | NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; | ||
64 | [defaults setBool:YES forKey:[NSString stringWithFormat:@"gameModeStar-%@-%d", name, star_id]]; | ||
65 | |||
66 | [[CCNotifications sharedManager] addWithTitle:@"Star Achieved!" message:message image:[NSString stringWithFormat:@"star_%d.png", star_id+1]]; | ||
67 | |||
68 | [GameModeManager sharedInstance].stars++; | ||
69 | } | ||
70 | } | ||
71 | |||
72 | - (BOOL)star:(int)star_id | ||
73 | { | ||
74 | return stars[star_id]; | ||
75 | } | ||
76 | |||
77 | - (int)starsCollected | ||
78 | { | ||
79 | int result = 0; | ||
80 | |||
81 | for (int i=0; i<numOfStars; i++) | ||
82 | { | ||
83 | if (stars[i]) | ||
84 | { | ||
85 | result++; | ||
86 | } | ||
87 | } | ||
88 | |||
89 | return result; | ||
90 | } | ||
91 | |||
92 | - (CCScene*)scene | ||
93 | { | ||
94 | CCScene* scene = [CCScene node]; | ||
95 | |||
96 | GameMode* layer = [[((GameMode*) [gameClass alloc]) init] autorelease]; | ||
97 | layer.tag = GAME_LAYER; | ||
98 | [scene addChild:layer]; | ||
99 | |||
100 | scene.tag = GAME_SCENE; | ||
101 | |||
102 | return scene; | ||
103 | } | ||
104 | |||
105 | - (void)unlock | ||
106 | { | ||
107 | if (!unlocked) | ||
108 | { | ||
109 | unlocked = YES; | ||
110 | |||
111 | NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; | ||
112 | [defaults setBool:YES forKey:[NSString stringWithFormat:@"gameModeUnlocked-%@", name]]; | ||
113 | |||
114 | CCTexture2D* texture = [[CCTexture2D alloc] initWithImage:image]; | ||
115 | [[CCNotifications sharedManager] addWithTitle:name message:@"You've unlocked a new game mode!" texture:texture]; | ||
116 | [texture release]; | ||
117 | |||
118 | [TestFlight passCheckpoint:[NSString stringWithFormat:@"Unlocked %@ Mode", name]]; | ||
119 | } | ||
120 | } | ||
121 | |||
122 | - (void)dealloc | ||
123 | { | ||
124 | free(stars); | ||
125 | [super dealloc]; | ||
126 | } | ||
127 | |||
128 | @end | ||