summary refs log tree commit diff stats
path: root/Classes/ClassicGameMode.m
diff options
context:
space:
mode:
Diffstat (limited to 'Classes/ClassicGameMode.m')
-rwxr-xr-xClasses/ClassicGameMode.m111
1 files changed, 80 insertions, 31 deletions
diff --git a/Classes/ClassicGameMode.m b/Classes/ClassicGameMode.m index 46ad337..00bf049 100755 --- a/Classes/ClassicGameMode.m +++ b/Classes/ClassicGameMode.m
@@ -8,17 +8,36 @@
8 8
9#import "ClassicGameMode.h" 9#import "ClassicGameMode.h"
10#import "FallingObject.h" 10#import "FallingObject.h"
11#import "Cherry.h"
12#import "Bottle.h"
13#import "OneUp.h"
14#import "Rock.h"
15#import "GameOverScene.h" 11#import "GameOverScene.h"
16#import "SimpleAudioEngine.h" 12#import "SimpleAudioEngine.h"
17#import "CCNotifications.h"
18#import "TestFlight.h"
19 13
20@implementation ClassicGameMode 14@implementation ClassicGameMode
21 15
16typedef enum {
17 kCherryObject = 0,
18 kEnergyDrinkObject,
19 kOneUpObject,
20 kRockObject
21} FallingObjects;
22
23static GameModeInfo* info;
24
25+ (GameModeInfo*)info
26{
27 if (info == nil)
28 {
29 info = [[GameModeInfo alloc] initWithName:@"Collect"
30 location:@"Paris"
31 numOfStars:3
32 imageFilename:[[NSBundle mainBundle] pathForResource:@"paris" ofType:@"png"]
33 unlocked:YES
34 gameClass:[ClassicGameMode class]
35 globalHighscoreKey:@"Classic"];
36 }
37
38 return info;
39}
40
22- (void)tick:(ccTime)dt 41- (void)tick:(ccTime)dt
23{ 42{
24 int lastScore = score; 43 int lastScore = score;
@@ -29,7 +48,7 @@
29 { 48 {
30 [self unscheduleAllSelectors]; 49 [self unscheduleAllSelectors];
31 50
32 [[CCDirector sharedDirector] replaceScene:[CCTransitionSlideInT transitionWithDuration:1.5f scene:[GameOverScene sceneWithScore:score gameMode:@"Collect"]]]; 51 [[CCDirector sharedDirector] replaceScene:[CCTransitionSlideInT transitionWithDuration:1.5f scene:[GameOverScene sceneWithScore:score gameMode:[ClassicGameMode info]]]];
33 } else if (score > lastScore) 52 } else if (score > lastScore)
34 { 53 {
35 if ((lastScore < 6500) && (score >= 6500)) 54 if ((lastScore < 6500) && (score >= 6500))
@@ -42,24 +61,14 @@
42 [self unschedule:@selector(randomlyAddObject:)]; 61 [self unschedule:@selector(randomlyAddObject:)];
43 [self schedule:@selector(randomlyAddObject:) interval:0.7f]; 62 [self schedule:@selector(randomlyAddObject:) interval:0.7f];
44 addSpeed = 0.7f; 63 addSpeed = 0.7f;
45 } else if ((lastScore < 3000) && (score >= 3000))
46 {
47 NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
48
49 if (![defaults boolForKey:@"unlockedJumpMode"])
50 {
51 [[CCNotifications sharedManager] addWithTitle:@"Jump" message:@"You've unlocked a new game mode!" image:@"venice.png"];
52
53 [defaults setBool:YES forKey:@"unlockedJumpMode"];
54 [defaults synchronize];
55
56 [TestFlight passCheckpoint:@"Unlocked Jump Mode"];
57 }
58 } else if ((lastScore < 2500) && (score >= 2500)) 64 } else if ((lastScore < 2500) && (score >= 2500))
59 { 65 {
60 [self unschedule:@selector(randomlyAddObject:)]; 66 [self unschedule:@selector(randomlyAddObject:)];
61 [self schedule:@selector(randomlyAddObject:) interval:0.8f]; 67 [self schedule:@selector(randomlyAddObject:) interval:0.8f];
62 addSpeed = 0.8f; 68 addSpeed = 0.8f;
69 } else if ((lastScore < 2000) && (score >= 2000))
70 {
71 [[ClassicGameMode info] setStar:1 withMessage:@"Get 2000 points"];
63 } else if ((lastScore < 1500) && (score >= 1500)) 72 } else if ((lastScore < 1500) && (score >= 1500))
64 { 73 {
65 [self unschedule:@selector(randomlyAddObject:)]; 74 [self unschedule:@selector(randomlyAddObject:)];
@@ -70,6 +79,8 @@
70 [self unschedule:@selector(randomlyAddObject:)]; 79 [self unschedule:@selector(randomlyAddObject:)];
71 [self schedule:@selector(randomlyAddObject:) interval:1.0f]; 80 [self schedule:@selector(randomlyAddObject:) interval:1.0f];
72 addSpeed = 1.0f; 81 addSpeed = 1.0f;
82
83 [[ClassicGameMode info] setStar:0 withMessage:@"Get 500 points"];
73 } else if ((lastScore < 150) && (score >= 150)) 84 } else if ((lastScore < 150) && (score >= 150))
74 { 85 {
75 [self unschedule:@selector(randomlyAddObject:)]; 86 [self unschedule:@selector(randomlyAddObject:)];
@@ -83,6 +94,7 @@
83{ 94{
84 FallingObject* object; 95 FallingObject* object;
85 int oneuppercent = 98 - (lives == 1 ? 1 : 0); 96 int oneuppercent = 98 - (lives == 1 ? 1 : 0);
97 int recipeIdentifier;
86 98
87 if (score < 1000) 99 if (score < 1000)
88 { 100 {
@@ -90,31 +102,33 @@
90 102
91 if (randomval < 65) 103 if (randomval < 65)
92 { 104 {
93 object = [[Cherry alloc] init]; 105 recipeIdentifier = kCherryObject;
94 } else if (randomval < oneuppercent) 106 } else if (randomval < oneuppercent)
95 { 107 {
96 object = [[Bottle alloc] init]; 108 recipeIdentifier = kEnergyDrinkObject;
97 } else { 109 } else {
98 object = [[OneUp alloc] init]; 110 recipeIdentifier = kOneUpObject;
99 } 111 }
100 } else { 112 } else {
101 int randomval = arc4random()%100; 113 int randomval = arc4random()%100;
102 114
103 if (randomval < 40) 115 if (randomval < 40)
104 { 116 {
105 object = [[Cherry alloc] init]; 117 recipeIdentifier = kCherryObject;
106 } else if (randomval < 70) 118 } else if (randomval < 70)
107 { 119 {
108 object = [[Rock alloc] init]; 120 recipeIdentifier = kRockObject;
109 } else if (randomval < oneuppercent) 121 } else if (randomval < oneuppercent)
110 { 122 {
111 object = [[Bottle alloc] init]; 123 recipeIdentifier = kEnergyDrinkObject;
112 } else { 124 } else {
113 object = [[OneUp alloc] init]; 125 recipeIdentifier = kOneUpObject;
114 } 126 }
115 } 127 }
116 128
117 int objectX = arc4random()%448+16; 129 int objectX = arc4random()%448+16;
130 object = [[objectFactory buildFallingObjectWithRecipeIdentifier:recipeIdentifier] retain];
131 object.delegate = self;
118 object.sprite.position = ccp(objectX, 360); 132 object.sprite.position = ccp(objectX, 360);
119 object.sprite.scale = 1; 133 object.sprite.scale = 1;
120 [self addChild:object.sprite]; 134 [self addChild:object.sprite];
@@ -126,8 +140,8 @@
126 { 140 {
127 if (arc4random() % 100 > 80) 141 if (arc4random() % 100 > 80)
128 { 142 {
129 object = [[Rock alloc] init]; 143 object = [[objectFactory buildFallingObjectWithRecipeIdentifier:kRockObject] retain];
130 144 object.delegate = self;
131 objectX = arc4random()%448+16; 145 objectX = arc4random()%448+16;
132 object.sprite.position = ccp(objectX, 360); 146 object.sprite.position = ccp(objectX, 360);
133 object.sprite.scale = 1; 147 object.sprite.scale = 1;
@@ -142,8 +156,8 @@
142 { 156 {
143 if (arc4random() % 100 > 80) 157 if (arc4random() % 100 > 80)
144 { 158 {
145 object = [[Rock alloc] init]; 159 object = [[objectFactory buildFallingObjectWithRecipeIdentifier:kRockObject] retain];
146 160 object.delegate = self;
147 objectX = arc4random()%448+16; 161 objectX = arc4random()%448+16;
148 object.sprite.position = ccp(objectX, 360); 162 object.sprite.position = ccp(objectX, 360);
149 object.sprite.scale = 1; 163 object.sprite.scale = 1;
@@ -166,6 +180,11 @@
166 [self addChild:backgroundImage z:-1]; 180 [self addChild:backgroundImage z:-1];
167 181
168 addSpeed = 2.5f; 182 addSpeed = 2.5f;
183
184 [objectFactory createRecipeWithIdentifier:kCherryObject spriteFilename:@"cherry.png" weight:5];
185 [objectFactory createRecipeWithIdentifier:kEnergyDrinkObject spriteFilename:@"bottle.png" weight:6];
186 [objectFactory createRecipeWithIdentifier:kOneUpObject spriteFilename:@"oneup.png" weight:10];
187 [objectFactory createRecipeWithIdentifier:kRockObject spriteFilename:@"rock.png" weight:7];
169 } 188 }
170 189
171 return self; 190 return self;
@@ -178,4 +197,34 @@
178 [self schedule:@selector(randomlyAddObject:) interval:addSpeed]; 197 [self schedule:@selector(randomlyAddObject:) interval:addSpeed];
179} 198}
180 199
200- (void)didCatchItem:(FallingObject *)item
201{
202 if (item.objectType == kCherryObject)
203 {
204 [[SimpleAudioEngine sharedEngine] playEffect:[[NSBundle mainBundle] pathForResource:@"Item1" ofType:@"wav"]];
205 self.score += 10;
206 } else if (item.objectType == kEnergyDrinkObject)
207 {
208 [[SimpleAudioEngine sharedEngine] playEffect:[[NSBundle mainBundle] pathForResource:@"Item1" ofType:@"wav"]];
209 self.score += 25;
210 } else if (item.objectType == kOneUpObject)
211 {
212 [[SimpleAudioEngine sharedEngine] playEffect:[[NSBundle mainBundle] pathForResource:@"1up" ofType:@"wav"]];
213 self.lives++;
214 } else if (item.objectType == kRockObject)
215 {
216 [[SimpleAudioEngine sharedEngine] playEffect:[[NSBundle mainBundle] pathForResource:@"Damage1" ofType:@"wav"]];
217 self.lives--;
218 }
219}
220
221- (void)didMissItem:(FallingObject *)item
222{
223 if ((item.objectType == kCherryObject) || (item.objectType == kEnergyDrinkObject))
224 {
225 [[SimpleAudioEngine sharedEngine] playEffect:[[NSBundle mainBundle] pathForResource:@"Damage1" ofType:@"wav"]];
226 self.lives--;
227 }
228}
229
181@end 230@end