diff options
Diffstat (limited to 'Classes/GameModeInfo.m')
| -rw-r--r-- | Classes/GameModeInfo.m | 128 |
1 files changed, 128 insertions, 0 deletions
| 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 | ||
