diff options
Diffstat (limited to 'Classes/GameModeSelection.m')
-rw-r--r-- | Classes/GameModeSelection.m | 90 |
1 files changed, 32 insertions, 58 deletions
diff --git a/Classes/GameModeSelection.m b/Classes/GameModeSelection.m index 61004fa..ea5f45b 100644 --- a/Classes/GameModeSelection.m +++ b/Classes/GameModeSelection.m | |||
@@ -26,6 +26,13 @@ | |||
26 | 26 | ||
27 | if (nil != self) | 27 | if (nil != self) |
28 | { | 28 | { |
29 | if (!m_gameMode.unlocked) | ||
30 | { | ||
31 | @throw [NSException exceptionWithName:NSInvalidArgumentException | ||
32 | reason:@"Game mode must be unlocked to appear on selection screen" | ||
33 | userInfo:nil]; | ||
34 | } | ||
35 | |||
29 | self.anchorPoint = CGPointMake(0.5f, 0.5f); | 36 | self.anchorPoint = CGPointMake(0.5f, 0.5f); |
30 | 37 | ||
31 | gameMode = m_gameMode; | 38 | gameMode = m_gameMode; |
@@ -34,16 +41,6 @@ | |||
34 | 41 | ||
35 | NSString* name = gameMode.name; | 42 | NSString* name = gameMode.name; |
36 | NSString* location = gameMode.location; | 43 | NSString* location = gameMode.location; |
37 | NSString* filenameMod; | ||
38 | |||
39 | if (gameMode.unlocked) | ||
40 | { | ||
41 | filenameMod = [NSString stringWithFormat:@"%@-unlocked", name]; | ||
42 | } else { | ||
43 | filenameMod = [NSString stringWithFormat:@"%@-locked", name]; | ||
44 | name = [@"" stringByPaddingToLength:name.length withString:@"?" startingAtIndex:0]; | ||
45 | location = [@"" stringByPaddingToLength:location.length withString:@"?" startingAtIndex:0]; | ||
46 | } | ||
47 | 44 | ||
48 | // First, create the frame that we will put the level picture inside | 45 | // First, create the frame that we will put the level picture inside |
49 | CGImageRef framestuff = [[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"framestuff" ofType:@"png"]] CGImage]; | 46 | CGImageRef framestuff = [[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"framestuff" ofType:@"png"]] CGImage]; |
@@ -99,26 +96,13 @@ | |||
99 | context = UIGraphicsGetCurrentContext(); | 96 | context = UIGraphicsGetCurrentContext(); |
100 | CGContextSaveGState(context); | 97 | CGContextSaveGState(context); |
101 | 98 | ||
102 | if (gameMode.unlocked) | 99 | CGContextSetShadow(context, CGSizeMake(-6, 6), 4.0f); |
103 | { | 100 | [selectionBackground drawInRect:CGRectMake(10, 0, boxSize.width, boxSize.height)]; |
104 | CGContextSetShadow(context, CGSizeMake(-6, 6), 4.0f); | ||
105 | [selectionBackground drawInRect:CGRectMake(10, 0, boxSize.width, boxSize.height)]; | ||
106 | } else { | ||
107 | // Draw the picture in grayscale if the level has not yet been unlocked | ||
108 | CGContextClipToMask(context, CGRectMake(10, 0, boxSize.width, boxSize.height), [selectionBackground CGImage]); | ||
109 | CGContextSetFillColorWithColor(context, [[UIColor whiteColor] CGColor]); | ||
110 | CGContextFillRect(context, CGRectMake(10, 0, boxSize.width, boxSize.height)); | ||
111 | CGContextRestoreGState(context); | ||
112 | |||
113 | CGContextSaveGState(context); | ||
114 | CGContextSetShadow(context, CGSizeMake(-6, 6), 4.0f); | ||
115 | [selectionBackground drawInRect:CGRectMake(10, 0, boxSize.width, boxSize.height) blendMode:kCGBlendModeLuminosity alpha:1.0]; | ||
116 | } | ||
117 | 101 | ||
118 | CGContextRestoreGState(context); | 102 | CGContextRestoreGState(context); |
119 | CGImageRef pictureRef = [UIGraphicsGetImageFromCurrentImageContext() CGImage]; | 103 | CGImageRef pictureRef = [UIGraphicsGetImageFromCurrentImageContext() CGImage]; |
120 | 104 | ||
121 | CCSprite* picture = [CCSprite spriteWithCGImage:pictureRef key:[NSString stringWithFormat:@"gms-%@", filenameMod]]; | 105 | CCSprite* picture = [CCSprite spriteWithCGImage:pictureRef key:[NSString stringWithFormat:@"gms-%@", name]]; |
122 | 106 | ||
123 | // We're also going to need a "selected" image state for the button | 107 | // We're also going to need a "selected" image state for the button |
124 | CGContextSaveGState(context); | 108 | CGContextSaveGState(context); |
@@ -128,7 +112,7 @@ | |||
128 | CGContextRestoreGState(context); | 112 | CGContextRestoreGState(context); |
129 | CGImageRef selectedButtonRef = [UIGraphicsGetImageFromCurrentImageContext() CGImage]; | 113 | CGImageRef selectedButtonRef = [UIGraphicsGetImageFromCurrentImageContext() CGImage]; |
130 | UIGraphicsEndImageContext(); | 114 | UIGraphicsEndImageContext(); |
131 | CCSprite* selectedButton = [CCSprite spriteWithCGImage:selectedButtonRef key:[NSString stringWithFormat:@"gms-%@-selected", filenameMod]]; | 115 | CCSprite* selectedButton = [CCSprite spriteWithCGImage:selectedButtonRef key:[NSString stringWithFormat:@"gms-%@-selected", name]]; |
132 | 116 | ||
133 | CCMenuItemSprite* pictureMenuItem = [CCMenuItemSprite itemFromNormalSprite:picture selectedSprite:selectedButton target:self selector:@selector(buttonTapped)]; | 117 | CCMenuItemSprite* pictureMenuItem = [CCMenuItemSprite itemFromNormalSprite:picture selectedSprite:selectedButton target:self selector:@selector(buttonTapped)]; |
134 | NMPanelMenu* theMenu = [NMPanelMenu menuWithItems:pictureMenuItem, nil]; | 118 | NMPanelMenu* theMenu = [NMPanelMenu menuWithItems:pictureMenuItem, nil]; |
@@ -150,32 +134,29 @@ | |||
150 | 134 | ||
151 | CGImageRef titleImage = [UIGraphicsGetImageFromCurrentImageContext() CGImage]; | 135 | CGImageRef titleImage = [UIGraphicsGetImageFromCurrentImageContext() CGImage]; |
152 | UIGraphicsEndImageContext(); | 136 | UIGraphicsEndImageContext(); |
153 | CCSprite* titleSprite = [CCSprite spriteWithCGImage:titleImage key:[NSString stringWithFormat:@"gms-%@-title", filenameMod]]; | 137 | CCSprite* titleSprite = [CCSprite spriteWithCGImage:titleImage key:[NSString stringWithFormat:@"gms-%@-title", name]]; |
154 | titleSprite.position = ccp(-10, (boxSize.height)/2+(combinedTitleSize.height)/2); | 138 | titleSprite.position = ccp(-10, (boxSize.height)/2+(combinedTitleSize.height)/2); |
155 | [self addChild:titleSprite]; | 139 | [self addChild:titleSprite]; |
156 | 140 | ||
157 | if (gameMode.unlocked) | 141 | Highscore* localHighscore = [Highscore localHighscoreForGameMode:name]; |
142 | |||
143 | if (localHighscore != nil) | ||
158 | { | 144 | { |
159 | Highscore* localHighscore = [Highscore localHighscoreForGameMode:name]; | 145 | // Render the highscore label |
146 | NSString* highscoreString = [NSString stringWithFormat:@"Highscore: %d", localHighscore.score]; | ||
147 | UIFont* highscoreFont = [UIFont fontWithName:@"AmericanTypewriter" size:16.0f]; | ||
148 | CGSize highscoreSize = [highscoreString sizeWithFont:highscoreFont]; | ||
160 | 149 | ||
161 | if (localHighscore != nil) | 150 | UIGraphicsBeginImageContext(CGSizeMake(highscoreSize.width+10, highscoreSize.height+10)); |
162 | { | 151 | CGContextRef context = UIGraphicsGetCurrentContext(); |
163 | // Render the highscore label | 152 | CGContextSetShadow(context, CGSizeMake(-6, 6), 4.0f); |
164 | NSString* highscoreString = [NSString stringWithFormat:@"Highscore: %d", localHighscore.score]; | 153 | [highscoreString drawInRect:CGRectMake(10, 0, highscoreSize.width, highscoreSize.height) withFont:highscoreFont]; |
165 | UIFont* highscoreFont = [UIFont fontWithName:@"AmericanTypewriter" size:16.0f]; | 154 | |
166 | CGSize highscoreSize = [highscoreString sizeWithFont:highscoreFont]; | 155 | CGImageRef highscoreImage = [UIGraphicsGetImageFromCurrentImageContext() CGImage]; |
167 | 156 | UIGraphicsEndImageContext(); | |
168 | UIGraphicsBeginImageContext(CGSizeMake(highscoreSize.width+10, highscoreSize.height+10)); | 157 | CCSprite* highscoreSprite = [CCSprite spriteWithCGImage:highscoreImage key:[NSString stringWithFormat:@"gms-%@-highscore-%d", name, localHighscore.score]]; |
169 | CGContextRef context = UIGraphicsGetCurrentContext(); | 158 | highscoreSprite.position = ccp(-5, 0-64-(highscoreSize.height)/2-10); |
170 | CGContextSetShadow(context, CGSizeMake(-6, 6), 4.0f); | 159 | [self addChild:highscoreSprite]; |
171 | [highscoreString drawInRect:CGRectMake(10, 0, highscoreSize.width, highscoreSize.height) withFont:highscoreFont]; | ||
172 | |||
173 | CGImageRef highscoreImage = [UIGraphicsGetImageFromCurrentImageContext() CGImage]; | ||
174 | UIGraphicsEndImageContext(); | ||
175 | CCSprite* highscoreSprite = [CCSprite spriteWithCGImage:highscoreImage key:[NSString stringWithFormat:@"gms-%@-highscore-%d", name, localHighscore.score]]; | ||
176 | highscoreSprite.position = ccp(-5, 0-64-(highscoreSize.height)/2-10); | ||
177 | [self addChild:highscoreSprite]; | ||
178 | } | ||
179 | } | 160 | } |
180 | } | 161 | } |
181 | 162 | ||
@@ -184,18 +165,11 @@ | |||
184 | 165 | ||
185 | - (void)buttonTapped | 166 | - (void)buttonTapped |
186 | { | 167 | { |
187 | if (gameMode.unlocked) | 168 | if (delegate != nil) |
188 | { | 169 | { |
189 | if (delegate != nil) | 170 | [delegate didSelectGameMode:self]; |
190 | { | ||
191 | [delegate didSelectGameMode:self]; | ||
192 | } else { | ||
193 | NSLog(@"I don't have a GameModeSelectionDelegate to call for some reason..."); | ||
194 | } | ||
195 | } else { | 171 | } else { |
196 | UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:@"To unlock this game mode:" message:gameMode.unlockCondition delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:nil]; | 172 | NSLog(@"I don't have a GameModeSelectionDelegate to call for some reason..."); |
197 | [alertView show]; | ||
198 | [alertView release]; | ||
199 | } | 173 | } |
200 | } | 174 | } |
201 | 175 | ||