diff options
Diffstat (limited to 'Classes')
| -rwxr-xr-x | Classes/ClassicGameMode.m | 42 | ||||
| -rw-r--r-- | Classes/GameMode.h | 3 | ||||
| -rw-r--r-- | Classes/GameMode.m | 20 | ||||
| -rw-r--r-- | Classes/GameModeInfo.h | 41 | ||||
| -rw-r--r-- | Classes/GameModeInfo.m | 128 | ||||
| -rw-r--r-- | Classes/GameModeManager.h | 20 | ||||
| -rw-r--r-- | Classes/GameModeManager.m | 74 | ||||
| -rw-r--r-- | Classes/GameModeSelection.h | 16 | ||||
| -rw-r--r-- | Classes/GameModeSelection.m | 49 | ||||
| -rw-r--r-- | Classes/GameModeSelectionLayer.m | 45 | ||||
| -rwxr-xr-x | Classes/GameOverScene.h | 7 | ||||
| -rwxr-xr-x | Classes/GameOverScene.m | 31 | ||||
| -rw-r--r-- | Classes/JumpGameMode.m | 22 | ||||
| -rw-r--r-- | Classes/TutorialMode.m | 24 |
14 files changed, 382 insertions, 140 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 | ||
| 23 | static 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:)]; |
| diff --git a/Classes/GameMode.h b/Classes/GameMode.h index cd0359d..cd41884 100644 --- a/Classes/GameMode.h +++ b/Classes/GameMode.h | |||
| @@ -9,6 +9,7 @@ | |||
| 9 | #import "CCLayer.h" | 9 | #import "CCLayer.h" |
| 10 | #import "Cart.h" | 10 | #import "Cart.h" |
| 11 | #import "FallingObjectFactory.h" | 11 | #import "FallingObjectFactory.h" |
| 12 | #import "GameModeInfo.h" | ||
| 12 | 13 | ||
| 13 | #define GAME_SCENE 436 | 14 | #define GAME_SCENE 436 |
| 14 | #define GAME_LAYER 437 | 15 | #define GAME_LAYER 437 |
| @@ -37,7 +38,6 @@ | |||
| 37 | @property (nonatomic,assign) int lives; | 38 | @property (nonatomic,assign) int lives; |
| 38 | @property (nonatomic,assign) int pointMultiplier; | 39 | @property (nonatomic,assign) int pointMultiplier; |
| 39 | @property (readonly) BOOL isPaused; | 40 | @property (readonly) BOOL isPaused; |
| 40 | + (CCScene*)scene; | ||
| 41 | - (void)tick:(ccTime)dt; | 41 | - (void)tick:(ccTime)dt; |
| 42 | - (BOOL)canPause; | 42 | - (BOOL)canPause; |
| 43 | - (void)pause; | 43 | - (void)pause; |
| @@ -45,5 +45,6 @@ | |||
| 45 | - (void)mainmenu; | 45 | - (void)mainmenu; |
| 46 | - (void)scheduleDelayedAction:(void(^)(void))delayedAction delay:(float)delay; | 46 | - (void)scheduleDelayedAction:(void(^)(void))delayedAction delay:(float)delay; |
| 47 | - (void)runDelayedAction; | 47 | - (void)runDelayedAction; |
| 48 | + (GameModeInfo*)info; | ||
| 48 | 49 | ||
| 49 | @end | 50 | @end |
| diff --git a/Classes/GameMode.m b/Classes/GameMode.m index 1f2451d..3e2f3ee 100644 --- a/Classes/GameMode.m +++ b/Classes/GameMode.m | |||
| @@ -14,19 +14,6 @@ | |||
| 14 | 14 | ||
| 15 | @synthesize cart, score, lives, isPaused, pointMultiplier; | 15 | @synthesize cart, score, lives, isPaused, pointMultiplier; |
| 16 | 16 | ||
| 17 | + (CCScene*)scene | ||
| 18 | { | ||
| 19 | CCScene* scene = [CCScene node]; | ||
| 20 | |||
| 21 | GameMode* layer = [self node]; | ||
| 22 | layer.tag = GAME_LAYER; | ||
| 23 | [scene addChild:layer]; | ||
| 24 | |||
| 25 | scene.tag = GAME_SCENE; | ||
| 26 | |||
| 27 | return scene; | ||
| 28 | } | ||
| 29 | |||
| 30 | - (id)init | 17 | - (id)init |
| 31 | { | 18 | { |
| 32 | self = [super init]; | 19 | self = [super init]; |
| @@ -213,6 +200,13 @@ | |||
| 213 | } | 200 | } |
| 214 | } | 201 | } |
| 215 | 202 | ||
| 203 | + (GameModeInfo*)info | ||
| 204 | { | ||
| 205 | [NSException raise:@"Unimplemented method" format:@"Method -info of GameMode subclasses must be overridden"]; | ||
| 206 | |||
| 207 | return nil; | ||
| 208 | } | ||
| 209 | |||
| 216 | - (void)dealloc | 210 | - (void)dealloc |
| 217 | { | 211 | { |
| 218 | [objects release]; | 212 | [objects release]; |
| diff --git a/Classes/GameModeInfo.h b/Classes/GameModeInfo.h new file mode 100644 index 0000000..2262526 --- /dev/null +++ b/Classes/GameModeInfo.h | |||
| @@ -0,0 +1,41 @@ | |||
| 1 | // | ||
| 2 | // GameModeInfo.h | ||
| 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 <Foundation/Foundation.h> | ||
| 10 | #import "cocos2d.h" | ||
| 11 | |||
| 12 | @interface GameModeInfo : NSObject { | ||
| 13 | NSString* name; | ||
| 14 | NSString* location; | ||
| 15 | BOOL* stars; | ||
| 16 | int numOfStars; | ||
| 17 | BOOL unlocked; | ||
| 18 | UIImage* image; | ||
| 19 | NSString* unlockCondition; | ||
| 20 | Class gameClass; | ||
| 21 | NSString* globalHighscoreKey; | ||
| 22 | int starsToUnlock; | ||
| 23 | } | ||
| 24 | |||
| 25 | @property (readonly) NSString* name; | ||
| 26 | @property (readonly) NSString* location; | ||
| 27 | @property (readonly) int numOfStars; | ||
| 28 | @property (readonly) UIImage* image; | ||
| 29 | @property (readonly) BOOL unlocked; | ||
| 30 | @property (readonly) NSString* unlockCondition; | ||
| 31 | @property (readonly) NSString* globalHighscoreKey; | ||
| 32 | @property (readonly) int starsToUnlock; | ||
| 33 | - (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; | ||
| 34 | - (void)setStar:(int)star_id withMessage:(NSString*)message; | ||
| 35 | - (BOOL)star:(int)star_id; | ||
| 36 | - (int)starsCollected; | ||
| 37 | - (CCScene*)scene; | ||
| 38 | - (void)unlock; | ||
| 39 | - (void)dealloc; | ||
| 40 | |||
| 41 | @end | ||
| 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 | ||
| diff --git a/Classes/GameModeManager.h b/Classes/GameModeManager.h new file mode 100644 index 0000000..fdaae60 --- /dev/null +++ b/Classes/GameModeManager.h | |||
| @@ -0,0 +1,20 @@ | |||
| 1 | // | ||
| 2 | // GameModeManager.h | ||
| 3 | // Cartographic | ||
| 4 | // | ||
| 5 | // Created by Starla Insigna on 11/29/11. | ||
| 6 | // Copyright (c) 2011 Four Island. All rights reserved. | ||
| 7 | // | ||
| 8 | |||
| 9 | #import <Foundation/Foundation.h> | ||
| 10 | |||
| 11 | @interface GameModeManager : NSObject { | ||
| 12 | NSArray* gameModes; | ||
| 13 | int stars; | ||
| 14 | } | ||
| 15 | |||
| 16 | @property (readonly) NSArray* gameModes; | ||
| 17 | @property (assign) int stars; | ||
| 18 | + (GameModeManager*)sharedInstance; | ||
| 19 | |||
| 20 | @end | ||
| diff --git a/Classes/GameModeManager.m b/Classes/GameModeManager.m new file mode 100644 index 0000000..5a6e109 --- /dev/null +++ b/Classes/GameModeManager.m | |||
| @@ -0,0 +1,74 @@ | |||
| 1 | // | ||
| 2 | // GameModeManager.m | ||
| 3 | // Cartographic | ||
| 4 | // | ||
| 5 | // Created by Starla Insigna on 11/29/11. | ||
| 6 | // Copyright (c) 2011 Four Island. All rights reserved. | ||
| 7 | // | ||
| 8 | |||
| 9 | #import "GameModeManager.h" | ||
| 10 | #import "GameModeInfo.h" | ||
| 11 | #import "TutorialMode.h" | ||
| 12 | #import "ClassicGameMode.h" | ||
| 13 | #import "JumpGameMode.h" | ||
| 14 | |||
| 15 | @implementation GameModeManager | ||
| 16 | |||
| 17 | @synthesize gameModes; | ||
| 18 | |||
| 19 | static GameModeManager* sharedInstance = nil; | ||
| 20 | |||
| 21 | + (GameModeManager*)sharedInstance | ||
| 22 | { | ||
| 23 | if (sharedInstance == nil) | ||
| 24 | { | ||
| 25 | sharedInstance = [[GameModeManager alloc] init]; | ||
| 26 | } | ||
| 27 | |||
| 28 | return sharedInstance; | ||
| 29 | } | ||
| 30 | |||
| 31 | - (id)init | ||
| 32 | { | ||
| 33 | self = [super init]; | ||
| 34 | |||
| 35 | if (nil != self) | ||
| 36 | { | ||
| 37 | gameModes = [[NSArray alloc] initWithObjects: | ||
| 38 | [TutorialMode info], | ||
| 39 | [ClassicGameMode info], | ||
| 40 | [JumpGameMode info], | ||
| 41 | nil]; | ||
| 42 | |||
| 43 | NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; | ||
| 44 | stars = [defaults integerForKey:@"stars"]; | ||
| 45 | } | ||
| 46 | |||
| 47 | return self; | ||
| 48 | } | ||
| 49 | |||
| 50 | - (void)setStars:(int)m_stars | ||
| 51 | { | ||
| 52 | if (stars != m_stars) | ||
| 53 | { | ||
| 54 | stars = m_stars; | ||
| 55 | |||
| 56 | NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; | ||
| 57 | [defaults setInteger:m_stars forKey:@"stars"]; | ||
| 58 | |||
| 59 | for (GameModeInfo* gameMode in gameModes) | ||
| 60 | { | ||
| 61 | if ((!gameMode.unlocked) && (stars >= gameMode.starsToUnlock)) | ||
| 62 | { | ||
| 63 | [gameMode unlock]; | ||
| 64 | } | ||
| 65 | } | ||
| 66 | } | ||
| 67 | } | ||
| 68 | |||
| 69 | - (int)stars | ||
| 70 | { | ||
| 71 | return stars; | ||
| 72 | } | ||
| 73 | |||
| 74 | @end | ||
| diff --git a/Classes/GameModeSelection.h b/Classes/GameModeSelection.h index bdb38fb..ec6d5ad 100644 --- a/Classes/GameModeSelection.h +++ b/Classes/GameModeSelection.h | |||
| @@ -8,23 +8,17 @@ | |||
| 8 | 8 | ||
| 9 | #import "cocos2d.h" | 9 | #import "cocos2d.h" |
| 10 | #import "GameModeSelectionDelegate.h" | 10 | #import "GameModeSelectionDelegate.h" |
| 11 | #import "GameModeInfo.h" | ||
| 11 | 12 | ||
| 12 | @interface GameModeSelection : CCMenuItem { | 13 | @interface GameModeSelection : CCMenuItem { |
| 13 | NSString* name; | 14 | GameModeInfo* gameMode; |
| 14 | NSString* location; | ||
| 15 | BOOL unlocked; | ||
| 16 | NSString* unlockCondition; | ||
| 17 | id<GameModeSelectionDelegate> delegate; | 15 | id<GameModeSelectionDelegate> delegate; |
| 18 | } | 16 | } |
| 19 | 17 | ||
| 20 | @property (readonly) NSString* name; | 18 | @property (readonly) GameModeInfo* gameMode; |
| 21 | @property (readonly) NSString* location; | ||
| 22 | @property (readonly) BOOL unlocked; | ||
| 23 | @property (nonatomic,retain) id<GameModeSelectionDelegate> delegate; | 19 | @property (nonatomic,retain) id<GameModeSelectionDelegate> delegate; |
| 24 | + (id)selectionWithName:(NSString*)name location:(NSString*)location filename:(NSString*)filename unlocked:(BOOL)unlocked; | 20 | + (id)selectionWithGameModeInfo:(GameModeInfo*)m_gameMode; |
| 25 | + (id)selectionWithName:(NSString *)name location:(NSString *)location filename:(NSString *)filename unlockCondition:(NSString*)unlockCondition; | 21 | - (id)initWithGameModeInfo:(GameModeInfo*)m_gameMode; |
| 26 | - (id)initWithName:(NSString*)name location:(NSString*)location filename:(NSString*)filename unlocked:(BOOL)unlocked; | ||
| 27 | - (id)initWithName:(NSString *)name location:(NSString *)location filename:(NSString *)filename unlockCondition:(NSString*)unlockCondition; | ||
| 28 | - (void)buttonTapped; | 22 | - (void)buttonTapped; |
| 29 | 23 | ||
| 30 | @end | 24 | @end |
| diff --git a/Classes/GameModeSelection.m b/Classes/GameModeSelection.m index 40981b1..61004fa 100644 --- a/Classes/GameModeSelection.m +++ b/Classes/GameModeSelection.m | |||
| @@ -13,19 +13,14 @@ | |||
| 13 | 13 | ||
| 14 | @implementation GameModeSelection | 14 | @implementation GameModeSelection |
| 15 | 15 | ||
| 16 | @synthesize name, location, unlocked, delegate; | 16 | @synthesize gameMode, delegate; |
| 17 | 17 | ||
| 18 | + (id)selectionWithName:(NSString*)name location:(NSString*)location filename:(NSString*)filename unlocked:(BOOL)unlocked | 18 | + (id)selectionWithGameModeInfo:(GameModeInfo*)m_gameMode |
| 19 | { | 19 | { |
| 20 | return [[[GameModeSelection alloc] initWithName:name location:location filename:filename unlocked:unlocked] autorelease]; | 20 | return [[[GameModeSelection alloc] initWithGameModeInfo:m_gameMode] autorelease]; |
| 21 | } | 21 | } |
| 22 | 22 | ||
| 23 | + (id)selectionWithName:(NSString *)name location:(NSString *)location filename:(NSString *)filename unlockCondition:(NSString*)unlockCondition | 23 | - (id)initWithGameModeInfo:(GameModeInfo*)m_gameMode |
| 24 | { | ||
| 25 | return [[[GameModeSelection alloc] initWithName:name location:location filename:filename unlockCondition:unlockCondition] autorelease]; | ||
| 26 | } | ||
| 27 | |||
| 28 | - (id)initWithName:(NSString*)m_name location:(NSString*)m_location filename:(NSString*)filename unlocked:(BOOL)m_unlocked; | ||
| 29 | { | 24 | { |
| 30 | self = [super initWithTarget:nil selector:nil]; | 25 | self = [super initWithTarget:nil selector:nil]; |
| 31 | 26 | ||
| @@ -33,19 +28,19 @@ | |||
| 33 | { | 28 | { |
| 34 | self.anchorPoint = CGPointMake(0.5f, 0.5f); | 29 | self.anchorPoint = CGPointMake(0.5f, 0.5f); |
| 35 | 30 | ||
| 36 | name = m_name; | 31 | gameMode = m_gameMode; |
| 37 | location = m_location; | ||
| 38 | unlocked = m_unlocked; | ||
| 39 | 32 | ||
| 40 | contentSize_ = CGSizeMake(128, 320); | 33 | contentSize_ = CGSizeMake(128, 320); |
| 41 | 34 | ||
| 35 | NSString* name = gameMode.name; | ||
| 36 | NSString* location = gameMode.location; | ||
| 42 | NSString* filenameMod; | 37 | NSString* filenameMod; |
| 43 | 38 | ||
| 44 | if (unlocked) | 39 | if (gameMode.unlocked) |
| 45 | { | 40 | { |
| 46 | filenameMod = [NSString stringWithFormat:@"%@-unlocked", filename]; | 41 | filenameMod = [NSString stringWithFormat:@"%@-unlocked", name]; |
| 47 | } else { | 42 | } else { |
| 48 | filenameMod = [NSString stringWithFormat:@"%@-locked", filename]; | 43 | filenameMod = [NSString stringWithFormat:@"%@-locked", name]; |
| 49 | name = [@"" stringByPaddingToLength:name.length withString:@"?" startingAtIndex:0]; | 44 | name = [@"" stringByPaddingToLength:name.length withString:@"?" startingAtIndex:0]; |
| 50 | location = [@"" stringByPaddingToLength:location.length withString:@"?" startingAtIndex:0]; | 45 | location = [@"" stringByPaddingToLength:location.length withString:@"?" startingAtIndex:0]; |
| 51 | } | 46 | } |
| @@ -93,7 +88,7 @@ | |||
| 93 | UIImage* selectionBackground = UIGraphicsGetImageFromCurrentImageContext(); | 88 | UIImage* selectionBackground = UIGraphicsGetImageFromCurrentImageContext(); |
| 94 | 89 | ||
| 95 | // Now we want to put the level image inside the frame without messing up the frame itself | 90 | // Now we want to put the level image inside the frame without messing up the frame itself |
| 96 | UIImage* innerPicture = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:filename ofType:@"png"]]; | 91 | UIImage* innerPicture = gameMode.image; |
| 97 | CGContextClipToMask(context, CGRectMake(0, 0, boxSize.width, boxSize.height), [[selectionBackground opaqueMaskFromWhiteImage] CGImage]); | 92 | CGContextClipToMask(context, CGRectMake(0, 0, boxSize.width, boxSize.height), [[selectionBackground opaqueMaskFromWhiteImage] CGImage]); |
| 98 | [innerPicture drawInRect:CGRectMake(6, 6, 128, 128)]; | 93 | [innerPicture drawInRect:CGRectMake(6, 6, 128, 128)]; |
| 99 | selectionBackground = UIGraphicsGetImageFromCurrentImageContext(); | 94 | selectionBackground = UIGraphicsGetImageFromCurrentImageContext(); |
| @@ -104,7 +99,7 @@ | |||
| 104 | context = UIGraphicsGetCurrentContext(); | 99 | context = UIGraphicsGetCurrentContext(); |
| 105 | CGContextSaveGState(context); | 100 | CGContextSaveGState(context); |
| 106 | 101 | ||
| 107 | if (unlocked) | 102 | if (gameMode.unlocked) |
| 108 | { | 103 | { |
| 109 | CGContextSetShadow(context, CGSizeMake(-6, 6), 4.0f); | 104 | CGContextSetShadow(context, CGSizeMake(-6, 6), 4.0f); |
| 110 | [selectionBackground drawInRect:CGRectMake(10, 0, boxSize.width, boxSize.height)]; | 105 | [selectionBackground drawInRect:CGRectMake(10, 0, boxSize.width, boxSize.height)]; |
| @@ -159,7 +154,7 @@ | |||
| 159 | titleSprite.position = ccp(-10, (boxSize.height)/2+(combinedTitleSize.height)/2); | 154 | titleSprite.position = ccp(-10, (boxSize.height)/2+(combinedTitleSize.height)/2); |
| 160 | [self addChild:titleSprite]; | 155 | [self addChild:titleSprite]; |
| 161 | 156 | ||
| 162 | if (unlocked) | 157 | if (gameMode.unlocked) |
| 163 | { | 158 | { |
| 164 | Highscore* localHighscore = [Highscore localHighscoreForGameMode:name]; | 159 | Highscore* localHighscore = [Highscore localHighscoreForGameMode:name]; |
| 165 | 160 | ||
| @@ -177,7 +172,7 @@ | |||
| 177 | 172 | ||
| 178 | CGImageRef highscoreImage = [UIGraphicsGetImageFromCurrentImageContext() CGImage]; | 173 | CGImageRef highscoreImage = [UIGraphicsGetImageFromCurrentImageContext() CGImage]; |
| 179 | UIGraphicsEndImageContext(); | 174 | UIGraphicsEndImageContext(); |
| 180 | CCSprite* highscoreSprite = [CCSprite spriteWithCGImage:highscoreImage key:[NSString stringWithFormat:@"gms-%@-highscore-%d", filename, localHighscore.score]]; | 175 | CCSprite* highscoreSprite = [CCSprite spriteWithCGImage:highscoreImage key:[NSString stringWithFormat:@"gms-%@-highscore-%d", name, localHighscore.score]]; |
| 181 | highscoreSprite.position = ccp(-5, 0-64-(highscoreSize.height)/2-10); | 176 | highscoreSprite.position = ccp(-5, 0-64-(highscoreSize.height)/2-10); |
| 182 | [self addChild:highscoreSprite]; | 177 | [self addChild:highscoreSprite]; |
| 183 | } | 178 | } |
| @@ -187,21 +182,9 @@ | |||
| 187 | return self; | 182 | return self; |
| 188 | } | 183 | } |
| 189 | 184 | ||
| 190 | - (id)initWithName:(NSString *)m_name location:(NSString *)m_location filename:(NSString *)m_filename unlockCondition:(NSString*)m_unlockCondition | ||
| 191 | { | ||
| 192 | self = [self initWithName:m_name location:m_location filename:m_filename unlocked:NO]; | ||
| 193 | |||
| 194 | if (nil != self) | ||
| 195 | { | ||
| 196 | unlockCondition = m_unlockCondition; | ||
| 197 | } | ||
| 198 | |||
| 199 | return self; | ||
| 200 | } | ||
| 201 | |||
| 202 | - (void)buttonTapped | 185 | - (void)buttonTapped |
| 203 | { | 186 | { |
| 204 | if (unlocked) | 187 | if (gameMode.unlocked) |
| 205 | { | 188 | { |
| 206 | if (delegate != nil) | 189 | if (delegate != nil) |
| 207 | { | 190 | { |
| @@ -210,7 +193,7 @@ | |||
| 210 | NSLog(@"I don't have a GameModeSelectionDelegate to call for some reason..."); | 193 | NSLog(@"I don't have a GameModeSelectionDelegate to call for some reason..."); |
| 211 | } | 194 | } |
| 212 | } else { | 195 | } else { |
| 213 | UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:@"To unlock this game mode:" message:unlockCondition delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:nil]; | 196 | UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:@"To unlock this game mode:" message:gameMode.unlockCondition delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:nil]; |
| 214 | [alertView show]; | 197 | [alertView show]; |
| 215 | [alertView release]; | 198 | [alertView release]; |
| 216 | } | 199 | } |
| diff --git a/Classes/GameModeSelectionLayer.m b/Classes/GameModeSelectionLayer.m index e7b6966..e5a83f1 100644 --- a/Classes/GameModeSelectionLayer.m +++ b/Classes/GameModeSelectionLayer.m | |||
| @@ -11,11 +11,10 @@ | |||
| 11 | #import <sqlite3.h> | 11 | #import <sqlite3.h> |
| 12 | #import "Cart_CollectAppDelegate.h" | 12 | #import "Cart_CollectAppDelegate.h" |
| 13 | #import "MainMenuLayer.h" | 13 | #import "MainMenuLayer.h" |
| 14 | #import "TutorialMode.h" | ||
| 15 | #import "ClassicGameMode.h" | ||
| 16 | #import "NMPanelMenu.h" | 14 | #import "NMPanelMenu.h" |
| 17 | #import "JumpGameMode.h" | ||
| 18 | #import "ZoomFadeTransition.h" | 15 | #import "ZoomFadeTransition.h" |
| 16 | #import "GameModeInfo.h" | ||
| 17 | #import "GameModeManager.h" | ||
| 19 | 18 | ||
| 20 | @implementation GameModeSelectionLayer | 19 | @implementation GameModeSelectionLayer |
| 21 | 20 | ||
| @@ -44,31 +43,12 @@ | |||
| 44 | NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; | 43 | NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; |
| 45 | gameModes = [[NSMutableArray alloc] init]; | 44 | gameModes = [[NSMutableArray alloc] init]; |
| 46 | 45 | ||
| 47 | GameModeSelection* tutorialSelection = [GameModeSelection selectionWithName:@"Tutorial" location:@"Florence" filename:@"florence" unlocked:YES]; | 46 | for (GameModeInfo* info in [[GameModeManager sharedInstance] gameModes]) |
| 48 | [gameModes addObject:tutorialSelection]; | ||
| 49 | |||
| 50 | GameModeSelection* collectSelection; | ||
| 51 | |||
| 52 | if ([defaults boolForKey:@"hasDoneTutorial"]) | ||
| 53 | { | ||
| 54 | collectSelection = [GameModeSelection selectionWithName:@"Collect" location:@"Paris" filename:@"paris" unlocked:YES]; | ||
| 55 | } else { | ||
| 56 | collectSelection = [GameModeSelection selectionWithName:@"Collect" location:@"Paris" filename:@"paris" unlockCondition:@"Beat the tutorial!"]; | ||
| 57 | } | ||
| 58 | |||
| 59 | [gameModes addObject:collectSelection]; | ||
| 60 | |||
| 61 | GameModeSelection* jumpSelection; | ||
| 62 | |||
| 63 | if ([defaults boolForKey:@"unlockedJumpMode"]) | ||
| 64 | { | 47 | { |
| 65 | jumpSelection = [GameModeSelection selectionWithName:@"Jump" location:@"Venice" filename:@"venice" unlocked:YES]; | 48 | GameModeSelection* selection = [GameModeSelection selectionWithGameModeInfo:info]; |
| 66 | } else { | 49 | [gameModes addObject:selection]; |
| 67 | jumpSelection = [GameModeSelection selectionWithName:@"Jump" location:@"Venice" filename:@"venice" unlockCondition:@"Get 3000 points in Collect!"]; | ||
| 68 | } | 50 | } |
| 69 | 51 | ||
| 70 | [gameModes addObject:jumpSelection]; | ||
| 71 | |||
| 72 | CCMenu* menu = [CCMenu menuWithItems:nil]; | 52 | CCMenu* menu = [CCMenu menuWithItems:nil]; |
| 73 | float onePanelWide = 128; | 53 | float onePanelWide = 128; |
| 74 | float padding = 15; | 54 | float padding = 15; |
| @@ -131,24 +111,15 @@ | |||
| 131 | [[CCDirector sharedDirector] replaceScene:[MainMenuLayer scene]]; | 111 | [[CCDirector sharedDirector] replaceScene:[MainMenuLayer scene]]; |
| 132 | } | 112 | } |
| 133 | 113 | ||
| 134 | - (void)didSelectGameMode:(GameModeSelection *)gameMode | 114 | - (void)didSelectGameMode:(GameModeSelection *)selection |
| 135 | { | 115 | { |
| 136 | [scrollView setScrollEnabled:NO]; | 116 | [scrollView setScrollEnabled:NO]; |
| 137 | [pageControl removeFromSuperview]; | 117 | [pageControl removeFromSuperview]; |
| 138 | 118 | ||
| 139 | CGPoint opp = [scrollView convertPoint:gameMode.position toView:[[CCDirector sharedDirector] openGLView]]; | 119 | CGPoint opp = [scrollView convertPoint:selection.position toView:[[CCDirector sharedDirector] openGLView]]; |
| 140 | CGPoint endPosition = ccp(0-(opp.x+158), opp.y); | 120 | CGPoint endPosition = ccp(0-(opp.x+158), opp.y); |
| 141 | 121 | ||
| 142 | if ([gameMode.name isEqual:@"Tutorial"]) | 122 | [[CCDirector sharedDirector] replaceScene:[ZoomFadeTransition transitionWithDuration:5.0f scene:[selection.gameMode scene] position:endPosition]]; |
| 143 | { | ||
| 144 | [[CCDirector sharedDirector] replaceScene:[ZoomFadeTransition transitionWithDuration:5.0f scene:[TutorialMode scene] position:endPosition]]; | ||
| 145 | } else if ([gameMode.name isEqual:@"Collect"]) | ||
| 146 | { | ||
| 147 | [[CCDirector sharedDirector] replaceScene:[ZoomFadeTransition transitionWithDuration:5.0f scene:[ClassicGameMode scene] position:endPosition]]; | ||
| 148 | } else if ([gameMode.name isEqual:@"Jump"]) | ||
| 149 | { | ||
| 150 | [[CCDirector sharedDirector] replaceScene:[ZoomFadeTransition transitionWithDuration:5.0f scene:[JumpGameMode scene] position:endPosition]]; | ||
| 151 | } | ||
| 152 | } | 123 | } |
| 153 | 124 | ||
| 154 | @end | 125 | @end |
| diff --git a/Classes/GameOverScene.h b/Classes/GameOverScene.h index f596211..5987c20 100755 --- a/Classes/GameOverScene.h +++ b/Classes/GameOverScene.h | |||
| @@ -8,6 +8,7 @@ | |||
| 8 | 8 | ||
| 9 | #import <Foundation/Foundation.h> | 9 | #import <Foundation/Foundation.h> |
| 10 | #import "cocos2d.h" | 10 | #import "cocos2d.h" |
| 11 | #import "GameModeInfo.h" | ||
| 11 | 12 | ||
| 12 | @interface GameOverScene : CCScene <UITextFieldDelegate, UIAlertViewDelegate> { | 13 | @interface GameOverScene : CCScene <UITextFieldDelegate, UIAlertViewDelegate> { |
| 13 | CCLayer* theLayer; | 14 | CCLayer* theLayer; |
| @@ -19,12 +20,12 @@ | |||
| 19 | UIButton* backButton; | 20 | UIButton* backButton; |
| 20 | UIButton* playButton; | 21 | UIButton* playButton; |
| 21 | int score; | 22 | int score; |
| 22 | NSString* gameMode; | 23 | GameModeInfo* gameMode; |
| 23 | BOOL playAgain; | 24 | BOOL playAgain; |
| 24 | } | 25 | } |
| 25 | 26 | ||
| 26 | + (GameOverScene*)sceneWithScore:(int)score gameMode:(NSString*)gameMode; | 27 | + (GameOverScene*)sceneWithScore:(int)score gameMode:(GameModeInfo*)gameMode; |
| 27 | - (id)initWithScore:(int)score gameMode:(NSString*)gameMode; | 28 | - (id)initWithScore:(int)score gameMode:(GameModeInfo*)gameMode; |
| 28 | - (void)newgame:(id)sender; | 29 | - (void)newgame:(id)sender; |
| 29 | - (void)submitScore; | 30 | - (void)submitScore; |
| 30 | - (void)exit; | 31 | - (void)exit; |
| diff --git a/Classes/GameOverScene.m b/Classes/GameOverScene.m index a56aeac..07186c2 100755 --- a/Classes/GameOverScene.m +++ b/Classes/GameOverScene.m | |||
| @@ -11,17 +11,15 @@ | |||
| 11 | #import <sqlite3.h> | 11 | #import <sqlite3.h> |
| 12 | #import "cocoslive.h" | 12 | #import "cocoslive.h" |
| 13 | #import "MainMenuLayer.h" | 13 | #import "MainMenuLayer.h" |
| 14 | #import "ClassicGameMode.h" | ||
| 15 | #import "JumpGameMode.h" | ||
| 16 | 14 | ||
| 17 | @implementation GameOverScene | 15 | @implementation GameOverScene |
| 18 | 16 | ||
| 19 | + (GameOverScene*)sceneWithScore:(int)score gameMode:(NSString*)gameMode | 17 | + (GameOverScene*)sceneWithScore:(int)score gameMode:(GameModeInfo*)gameMode |
| 20 | { | 18 | { |
| 21 | return [[[GameOverScene alloc] initWithScore:score gameMode:gameMode] autorelease]; | 19 | return [[[GameOverScene alloc] initWithScore:score gameMode:gameMode] autorelease]; |
| 22 | } | 20 | } |
| 23 | 21 | ||
| 24 | - (id)initWithScore:(int)score2 gameMode:(NSString*)gameMode2 | 22 | - (id)initWithScore:(int)m_score gameMode:(GameModeInfo*)m_gameMode |
| 25 | { | 23 | { |
| 26 | self = [super init]; | 24 | self = [super init]; |
| 27 | 25 | ||
| @@ -37,8 +35,8 @@ | |||
| 37 | backgroundImage.position = ccp(240, 160); | 35 | backgroundImage.position = ccp(240, 160); |
| 38 | [theLayer addChild:backgroundImage z:0]; | 36 | [theLayer addChild:backgroundImage z:0]; |
| 39 | 37 | ||
| 40 | score = score2; | 38 | score = m_score; |
| 41 | gameMode = gameMode2; | 39 | gameMode = m_gameMode; |
| 42 | 40 | ||
| 43 | movingLayer = [[UIView alloc] initWithFrame:CGRectMake(0, -320, 480, 320)]; | 41 | movingLayer = [[UIView alloc] initWithFrame:CGRectMake(0, -320, 480, 320)]; |
| 44 | movingLayer.backgroundColor = [UIColor clearColor]; | 42 | movingLayer.backgroundColor = [UIColor clearColor]; |
| @@ -47,7 +45,7 @@ | |||
| 47 | scoreField = [[UILabel alloc] initWithFrame:CGRectMake(205, 320-200, 0, 0)]; | 45 | scoreField = [[UILabel alloc] initWithFrame:CGRectMake(205, 320-200, 0, 0)]; |
| 48 | [scoreField setFont:[UIFont systemFontOfSize:20.0f]]; | 46 | [scoreField setFont:[UIFont systemFontOfSize:20.0f]]; |
| 49 | [scoreField setBackgroundColor:[UIColor clearColor]]; | 47 | [scoreField setBackgroundColor:[UIColor clearColor]]; |
| 50 | [scoreField setText:[NSString stringWithFormat:@"%d", score2]]; | 48 | [scoreField setText:[NSString stringWithFormat:@"%d", score]]; |
| 51 | CGSize labelSize = [scoreField.text sizeWithFont:scoreField.font constrainedToSize:CGSizeMake(160, 31) lineBreakMode:UILineBreakModeClip]; | 49 | CGSize labelSize = [scoreField.text sizeWithFont:scoreField.font constrainedToSize:CGSizeMake(160, 31) lineBreakMode:UILineBreakModeClip]; |
| 52 | [scoreField setFrame:CGRectMake(scoreField.frame.origin.x, scoreField.frame.origin.y, labelSize.width, labelSize.height)]; | 50 | [scoreField setFrame:CGRectMake(scoreField.frame.origin.x, scoreField.frame.origin.y, labelSize.width, labelSize.height)]; |
| 53 | [movingLayer addSubview:scoreField]; | 51 | [movingLayer addSubview:scoreField]; |
| @@ -103,7 +101,7 @@ | |||
| 103 | textField.enabled = NO; | 101 | textField.enabled = NO; |
| 104 | submitSwitch.enabled = NO; | 102 | submitSwitch.enabled = NO; |
| 105 | 103 | ||
| 106 | const char* sqlQuery = [[NSString stringWithFormat:@"INSERT INTO highscores (name, score, gameMode) VALUES (\"%@\",%d,\"%@\")", [textField text], score, gameMode] UTF8String]; | 104 | const char* sqlQuery = [[NSString stringWithFormat:@"INSERT INTO highscores (name, score, gameMode) VALUES (\"%@\",%d,\"%@\")", [textField text], score, gameMode.name] UTF8String]; |
| 107 | sqlite3_stmt* compiled_statement; | 105 | sqlite3_stmt* compiled_statement; |
| 108 | 106 | ||
| 109 | if (sqlite3_prepare_v2([Cart_CollectAppDelegate database], sqlQuery, -1, &compiled_statement, NULL) == SQLITE_OK) | 107 | if (sqlite3_prepare_v2([Cart_CollectAppDelegate database], sqlQuery, -1, &compiled_statement, NULL) == SQLITE_OK) |
| @@ -128,14 +126,7 @@ | |||
| 128 | 126 | ||
| 129 | CLScoreServerPost* server = [[CLScoreServerPost alloc] initWithGameName:@"Cart Collect" gameKey:@"38f440a074b3264386455a36b2706d8f" delegate:self]; | 127 | CLScoreServerPost* server = [[CLScoreServerPost alloc] initWithGameName:@"Cart Collect" gameKey:@"38f440a074b3264386455a36b2706d8f" delegate:self]; |
| 130 | NSMutableDictionary* dict = [[NSMutableDictionary alloc] init]; | 128 | NSMutableDictionary* dict = [[NSMutableDictionary alloc] init]; |
| 131 | 129 | [dict setObject:gameMode.globalHighscoreKey forKey:@"cc_category"]; | |
| 132 | if ([gameMode isEqual:@"Collect"]) | ||
| 133 | { | ||
| 134 | [dict setObject:@"Classic" forKey:@"cc_category"]; | ||
| 135 | } else { | ||
| 136 | [dict setObject:gameMode forKey:@"cc_category"]; | ||
| 137 | } | ||
| 138 | |||
| 139 | [dict setObject:[textField text] forKey:@"cc_playername"]; | 130 | [dict setObject:[textField text] forKey:@"cc_playername"]; |
| 140 | [dict setObject:[NSNumber numberWithInt:score] forKey:@"cc_score"]; | 131 | [dict setObject:[NSNumber numberWithInt:score] forKey:@"cc_score"]; |
| 141 | [server sendScore:dict]; | 132 | [server sendScore:dict]; |
| @@ -224,13 +215,7 @@ | |||
| 224 | 215 | ||
| 225 | if (playAgain) | 216 | if (playAgain) |
| 226 | { | 217 | { |
| 227 | if ([gameMode isEqual:@"Collect"]) | 218 | [[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:3.0f scene:[gameMode scene] withColor:ccc3(0, 0, 0)]]; |
| 228 | { | ||
| 229 | [[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:3.0f scene:[ClassicGameMode scene] withColor:ccc3(0, 0, 0)]]; | ||
| 230 | } else if ([gameMode isEqual:@"Jump"]) | ||
| 231 | { | ||
| 232 | [[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:3.0f scene:[JumpGameMode scene] withColor:ccc3(0, 0, 0)]]; | ||
| 233 | } | ||
| 234 | } else { | 219 | } else { |
| 235 | [[CCDirector sharedDirector] replaceScene:[MainMenuLayer scene]]; | 220 | [[CCDirector sharedDirector] replaceScene:[MainMenuLayer scene]]; |
| 236 | } | 221 | } |
| diff --git a/Classes/JumpGameMode.m b/Classes/JumpGameMode.m index a5c2b8f..b1c5989 100644 --- a/Classes/JumpGameMode.m +++ b/Classes/JumpGameMode.m | |||
| @@ -35,6 +35,26 @@ typedef enum { | |||
| 35 | kPointMultiplierObject | 35 | kPointMultiplierObject |
| 36 | } FallingObjects; | 36 | } FallingObjects; |
| 37 | 37 | ||
| 38 | static GameModeInfo* info; | ||
| 39 | |||
| 40 | + (GameModeInfo*)info | ||
| 41 | { | ||
| 42 | if (info == nil) | ||
| 43 | { | ||
| 44 | info = [[GameModeInfo alloc] initWithName:@"Jump" | ||
| 45 | location:@"Venice" | ||
| 46 | numOfStars:3 | ||
| 47 | imageFilename:[[NSBundle mainBundle] pathForResource:@"venice" ofType:@"png"] | ||
| 48 | unlocked:NO | ||
| 49 | unlockCondition:@"Get 2000 points in Collect!" | ||
| 50 | gameClass:[JumpGameMode class] | ||
| 51 | globalHighscoreKey:@"Jump" | ||
| 52 | starsToUnlock:2]; | ||
| 53 | } | ||
| 54 | |||
| 55 | return info; | ||
| 56 | } | ||
| 57 | |||
| 38 | - (id)init | 58 | - (id)init |
| 39 | { | 59 | { |
| 40 | self = [super init]; | 60 | self = [super init]; |
| @@ -208,7 +228,7 @@ typedef enum { | |||
| 208 | { | 228 | { |
| 209 | [self unscheduleAllSelectors]; | 229 | [self unscheduleAllSelectors]; |
| 210 | 230 | ||
| 211 | [[CCDirector sharedDirector] replaceScene:[CCTransitionSlideInT transitionWithDuration:1.5f scene:[GameOverScene sceneWithScore:score gameMode:@"Jump"]]]; | 231 | [[CCDirector sharedDirector] replaceScene:[CCTransitionSlideInT transitionWithDuration:1.5f scene:[GameOverScene sceneWithScore:score gameMode:[JumpGameMode info]]]]; |
| 212 | } | 232 | } |
| 213 | 233 | ||
| 214 | if (wave) | 234 | if (wave) |
| diff --git a/Classes/TutorialMode.m b/Classes/TutorialMode.m index 156b939..54f4e16 100644 --- a/Classes/TutorialMode.m +++ b/Classes/TutorialMode.m | |||
| @@ -10,6 +10,7 @@ | |||
| 10 | #import "FallingObject.h" | 10 | #import "FallingObject.h" |
| 11 | #import "GameModeSelectionLayer.h" | 11 | #import "GameModeSelectionLayer.h" |
| 12 | #import "SimpleAudioEngine.h" | 12 | #import "SimpleAudioEngine.h" |
| 13 | #import "ClassicGameMode.h" | ||
| 13 | 14 | ||
| 14 | // Item tags: | 15 | // Item tags: |
| 15 | // 2000 - first dropped item | 16 | // 2000 - first dropped item |
| @@ -30,6 +31,26 @@ typedef enum { | |||
| 30 | 31 | ||
| 31 | @synthesize currentTutorial; | 32 | @synthesize currentTutorial; |
| 32 | 33 | ||
| 34 | static GameModeInfo* info; | ||
| 35 | |||
| 36 | + (GameModeInfo*)info | ||
| 37 | { | ||
| 38 | if (info == nil) | ||
| 39 | { | ||
| 40 | info = [[GameModeInfo alloc] initWithName:@"Tutorial" | ||
| 41 | location:@"Florence" | ||
| 42 | numOfStars:0 | ||
| 43 | imageFilename:[[NSBundle mainBundle] pathForResource:@"florence" ofType:@"png"] | ||
| 44 | unlocked:YES | ||
| 45 | unlockCondition:nil | ||
| 46 | gameClass:[TutorialMode class] | ||
| 47 | globalHighscoreKey:nil | ||
| 48 | starsToUnlock:0]; | ||
| 49 | } | ||
| 50 | |||
| 51 | return info; | ||
| 52 | } | ||
| 53 | |||
| 33 | - (id)init | 54 | - (id)init |
| 34 | { | 55 | { |
| 35 | self = [super init]; | 56 | self = [super init]; |
| @@ -357,8 +378,7 @@ typedef enum { | |||
| 357 | 378 | ||
| 358 | [self unschedule:@selector(randomlyAddObject:)]; | 379 | [self unschedule:@selector(randomlyAddObject:)]; |
| 359 | 380 | ||
| 360 | NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; | 381 | [[ClassicGameMode info] unlock]; |
| 361 | [defaults setBool:YES forKey:@"hasDoneTutorial"]; | ||
| 362 | 382 | ||
| 363 | return; | 383 | return; |
| 364 | } else { | 384 | } else { |
