summary refs log tree commit diff stats
path: root/Classes/ClassicGameMode.m
diff options
context:
space:
mode:
authorStarla Insigna <starla4444@gmail.com>2011-11-30 12:57:06 -0500
committerStarla Insigna <starla4444@gmail.com>2011-11-30 12:57:06 -0500
commit6e96fb2144718722208d22f892716b55548135e1 (patch)
tree4dd550de787dd370a13039c03969442f54a3a856 /Classes/ClassicGameMode.m
parentfd58a0cde1bb5473e39e6cb82d28113da84b9ae0 (diff)
downloadcartcollect-6e96fb2144718722208d22f892716b55548135e1.tar.gz
cartcollect-6e96fb2144718722208d22f892716b55548135e1.tar.bz2
cartcollect-6e96fb2144718722208d22f892716b55548135e1.zip
Created a game mode manager
There is now one location for information relating to each GameMode instead of several places, so that info can be easily updated and propagated to, for instance, GameModeSelectionLayer. GameModes can also be specified by an info instance each owns. There's also a way to get an ordered list of game modes.

The three star game mode unlocking system has also been added.

Closes #213
Diffstat (limited to 'Classes/ClassicGameMode.m')
-rwxr-xr-xClasses/ClassicGameMode.m42
1 files changed, 26 insertions, 16 deletions
diff --git a/Classes/ClassicGameMode.m b/Classes/ClassicGameMode.m index 306c1d1..9356fea 100755 --- a/Classes/ClassicGameMode.m +++ b/Classes/ClassicGameMode.m
@@ -10,8 +10,6 @@
10#import "FallingObject.h" 10#import "FallingObject.h"
11#import "GameOverScene.h" 11#import "GameOverScene.h"
12#import "SimpleAudioEngine.h" 12#import "SimpleAudioEngine.h"
13#import "CCNotifications.h"
14#import "TestFlight.h"
15 13
16@implementation ClassicGameMode 14@implementation ClassicGameMode
17 15
@@ -22,6 +20,26 @@ typedef enum {
22 kRockObject 20 kRockObject
23} FallingObjects; 21} FallingObjects;
24 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:NO
34 unlockCondition:@"Beat the tutorial!"
35 gameClass:[ClassicGameMode class]
36 globalHighscoreKey:@"Classic"
37 starsToUnlock:0];
38 }
39
40 return info;
41}
42
25- (void)tick:(ccTime)dt 43- (void)tick:(ccTime)dt
26{ 44{
27 int lastScore = score; 45 int lastScore = score;
@@ -32,7 +50,7 @@ typedef enum {
32 { 50 {
33 [self unscheduleAllSelectors]; 51 [self unscheduleAllSelectors];
34 52
35 [[CCDirector sharedDirector] replaceScene:[CCTransitionSlideInT transitionWithDuration:1.5f scene:[GameOverScene sceneWithScore:score gameMode:@"Collect"]]]; 53 [[CCDirector sharedDirector] replaceScene:[CCTransitionSlideInT transitionWithDuration:1.5f scene:[GameOverScene sceneWithScore:score gameMode:[ClassicGameMode info]]]];
36 } else if (score > lastScore) 54 } else if (score > lastScore)
37 { 55 {
38 if ((lastScore < 6500) && (score >= 6500)) 56 if ((lastScore < 6500) && (score >= 6500))
@@ -45,24 +63,14 @@ typedef enum {
45 [self unschedule:@selector(randomlyAddObject:)]; 63 [self unschedule:@selector(randomlyAddObject:)];
46 [self schedule:@selector(randomlyAddObject:) interval:0.7f]; 64 [self schedule:@selector(randomlyAddObject:) interval:0.7f];
47 addSpeed = 0.7f; 65 addSpeed = 0.7f;
48 } else if ((lastScore < 3000) && (score >= 3000))
49 {
50 NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
51
52 if (![defaults boolForKey:@"unlockedJumpMode"])
53 {
54 [[CCNotifications sharedManager] addWithTitle:@"Jump" message:@"You've unlocked a new game mode!" image:@"venice.png"];
55
56 [defaults setBool:YES forKey:@"unlockedJumpMode"];
57 [defaults synchronize];
58
59 [TestFlight passCheckpoint:@"Unlocked Jump Mode"];
60 }
61 } else if ((lastScore < 2500) && (score >= 2500)) 66 } else if ((lastScore < 2500) && (score >= 2500))
62 { 67 {
63 [self unschedule:@selector(randomlyAddObject:)]; 68 [self unschedule:@selector(randomlyAddObject:)];
64 [self schedule:@selector(randomlyAddObject:) interval:0.8f]; 69 [self schedule:@selector(randomlyAddObject:) interval:0.8f];
65 addSpeed = 0.8f; 70 addSpeed = 0.8f;
71 } else if ((lastScore < 2000) && (score >= 2000))
72 {
73 [[ClassicGameMode info] setStar:1 withMessage:@"Get 2000 points"];
66 } else if ((lastScore < 1500) && (score >= 1500)) 74 } else if ((lastScore < 1500) && (score >= 1500))
67 { 75 {
68 [self unschedule:@selector(randomlyAddObject:)]; 76 [self unschedule:@selector(randomlyAddObject:)];
@@ -73,6 +81,8 @@ typedef enum {
73 [self unschedule:@selector(randomlyAddObject:)]; 81 [self unschedule:@selector(randomlyAddObject:)];
74 [self schedule:@selector(randomlyAddObject:) interval:1.0f]; 82 [self schedule:@selector(randomlyAddObject:) interval:1.0f];
75 addSpeed = 1.0f; 83 addSpeed = 1.0f;
84
85 [[ClassicGameMode info] setStar:0 withMessage:@"Get 500 points"];
76 } else if ((lastScore < 150) && (score >= 150)) 86 } else if ((lastScore < 150) && (score >= 150))
77 { 87 {
78 [self unschedule:@selector(randomlyAddObject:)]; 88 [self unschedule:@selector(randomlyAddObject:)];