From 6e96fb2144718722208d22f892716b55548135e1 Mon Sep 17 00:00:00 2001 From: Starla Insigna Date: Wed, 30 Nov 2011 12:57:06 -0500 Subject: 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 --- Classes/ClassicGameMode.m | 42 ++++++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 16 deletions(-) (limited to 'Classes/ClassicGameMode.m') 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 @@ #import "FallingObject.h" #import "GameOverScene.h" #import "SimpleAudioEngine.h" -#import "CCNotifications.h" -#import "TestFlight.h" @implementation ClassicGameMode @@ -22,6 +20,26 @@ typedef enum { kRockObject } FallingObjects; +static GameModeInfo* info; + ++ (GameModeInfo*)info +{ + if (info == nil) + { + info = [[GameModeInfo alloc] initWithName:@"Collect" + location:@"Paris" + numOfStars:3 + imageFilename:[[NSBundle mainBundle] pathForResource:@"paris" ofType:@"png"] + unlocked:NO + unlockCondition:@"Beat the tutorial!" + gameClass:[ClassicGameMode class] + globalHighscoreKey:@"Classic" + starsToUnlock:0]; + } + + return info; +} + - (void)tick:(ccTime)dt { int lastScore = score; @@ -32,7 +50,7 @@ typedef enum { { [self unscheduleAllSelectors]; - [[CCDirector sharedDirector] replaceScene:[CCTransitionSlideInT transitionWithDuration:1.5f scene:[GameOverScene sceneWithScore:score gameMode:@"Collect"]]]; + [[CCDirector sharedDirector] replaceScene:[CCTransitionSlideInT transitionWithDuration:1.5f scene:[GameOverScene sceneWithScore:score gameMode:[ClassicGameMode info]]]]; } else if (score > lastScore) { if ((lastScore < 6500) && (score >= 6500)) @@ -45,24 +63,14 @@ typedef enum { [self unschedule:@selector(randomlyAddObject:)]; [self schedule:@selector(randomlyAddObject:) interval:0.7f]; addSpeed = 0.7f; - } else if ((lastScore < 3000) && (score >= 3000)) - { - NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; - - if (![defaults boolForKey:@"unlockedJumpMode"]) - { - [[CCNotifications sharedManager] addWithTitle:@"Jump" message:@"You've unlocked a new game mode!" image:@"venice.png"]; - - [defaults setBool:YES forKey:@"unlockedJumpMode"]; - [defaults synchronize]; - - [TestFlight passCheckpoint:@"Unlocked Jump Mode"]; - } } else if ((lastScore < 2500) && (score >= 2500)) { [self unschedule:@selector(randomlyAddObject:)]; [self schedule:@selector(randomlyAddObject:) interval:0.8f]; addSpeed = 0.8f; + } else if ((lastScore < 2000) && (score >= 2000)) + { + [[ClassicGameMode info] setStar:1 withMessage:@"Get 2000 points"]; } else if ((lastScore < 1500) && (score >= 1500)) { [self unschedule:@selector(randomlyAddObject:)]; @@ -73,6 +81,8 @@ typedef enum { [self unschedule:@selector(randomlyAddObject:)]; [self schedule:@selector(randomlyAddObject:) interval:1.0f]; addSpeed = 1.0f; + + [[ClassicGameMode info] setStar:0 withMessage:@"Get 500 points"]; } else if ((lastScore < 150) && (score >= 150)) { [self unschedule:@selector(randomlyAddObject:)]; -- cgit 1.4.1