diff options
Diffstat (limited to 'Classes/GameModeInfo.m')
-rw-r--r-- | Classes/GameModeInfo.m | 126 |
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 | ||