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 | ||
