equal
deleted
inserted
replaced
34 |
34 |
35 |
35 |
36 static OverlayViewController *mainOverlay; |
36 static OverlayViewController *mainOverlay; |
37 |
37 |
38 @implementation OverlayViewController |
38 @implementation OverlayViewController |
39 @synthesize popoverController, popupMenu, helpPage, amvc, initialScreenCount, lowerIndicator, savesIndicator, |
39 @synthesize popoverController, popupMenu, helpPage, amvc, initialScreenCount, loadingIndicator, |
40 confirmButton, grenadeTimeSegment; |
40 confirmButton, grenadeTimeSegment; |
41 |
41 |
42 #pragma mark - |
42 #pragma mark - |
43 #pragma mark rotation |
43 #pragma mark rotation |
44 |
44 |
51 -(id) initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { |
51 -(id) initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { |
52 if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { |
52 if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { |
53 isAttacking = NO; |
53 isAttacking = NO; |
54 isPopoverVisible = NO; |
54 isPopoverVisible = NO; |
55 initialScreenCount = (IS_DUALHEAD() ? 2 : 1); |
55 initialScreenCount = (IS_DUALHEAD() ? 2 : 1); |
56 lowerIndicator = nil; |
56 loadingIndicator = nil; |
57 savesIndicator = nil; |
|
58 mainOverlay = self; |
57 mainOverlay = self; |
59 } |
58 } |
60 return self; |
59 return self; |
61 } |
60 } |
62 |
61 |
117 mainOverlay = nil; |
116 mainOverlay = nil; |
118 self.helpPage = nil; |
117 self.helpPage = nil; |
119 [self dismissPopover]; |
118 [self dismissPopover]; |
120 self.popoverController = nil; |
119 self.popoverController = nil; |
121 self.amvc = nil; |
120 self.amvc = nil; |
122 self.lowerIndicator = nil; |
121 self.loadingIndicator = nil; |
123 self.savesIndicator = nil; |
|
124 MSG_DIDUNLOAD(); |
122 MSG_DIDUNLOAD(); |
125 [super viewDidUnload]; |
123 [super viewDidUnload]; |
126 } |
124 } |
127 |
125 |
128 -(void) didReceiveMemoryWarning { |
126 -(void) didReceiveMemoryWarning { |
130 self.popupMenu = nil; |
128 self.popupMenu = nil; |
131 if (self.helpPage.view.superview == nil) |
129 if (self.helpPage.view.superview == nil) |
132 self.helpPage = nil; |
130 self.helpPage = nil; |
133 if (self.amvc.view.superview == nil) |
131 if (self.amvc.view.superview == nil) |
134 self.amvc = nil; |
132 self.amvc = nil; |
135 if (self.lowerIndicator.superview == nil) |
133 if (self.loadingIndicator.superview == nil) |
136 self.lowerIndicator = nil; |
134 self.loadingIndicator = nil; |
137 if (self.savesIndicator.superview == nil) |
|
138 self.savesIndicator = nil; |
|
139 if (self.confirmButton.superview == nil) |
135 if (self.confirmButton.superview == nil) |
140 self.confirmButton = nil; |
136 self.confirmButton = nil; |
141 if (self.grenadeTimeSegment.superview == nil) |
137 if (self.grenadeTimeSegment.superview == nil) |
142 self.grenadeTimeSegment = nil; |
138 self.grenadeTimeSegment = nil; |
143 if (IS_IPAD()) |
139 if (IS_IPAD()) |
151 -(void) dealloc { |
147 -(void) dealloc { |
152 releaseAndNil(popupMenu); |
148 releaseAndNil(popupMenu); |
153 releaseAndNil(helpPage); |
149 releaseAndNil(helpPage); |
154 releaseAndNil(popoverController); |
150 releaseAndNil(popoverController); |
155 releaseAndNil(amvc); |
151 releaseAndNil(amvc); |
156 releaseAndNil(lowerIndicator); |
152 releaseAndNil(loadingIndicator); |
157 releaseAndNil(savesIndicator); |
|
158 releaseAndNil(confirmButton); |
153 releaseAndNil(confirmButton); |
159 releaseAndNil(grenadeTimeSegment); |
154 releaseAndNil(grenadeTimeSegment); |
160 // dimTimer is autoreleased |
155 // dimTimer is autoreleased |
161 [super dealloc]; |
156 [super dealloc]; |
162 } |
157 } |
189 |
184 |
190 #pragma mark - |
185 #pragma mark - |
191 #pragma mark overlay appearance |
186 #pragma mark overlay appearance |
192 // nice transition for dimming, should be called only by the timer himself |
187 // nice transition for dimming, should be called only by the timer himself |
193 -(void) dimOverlay { |
188 -(void) dimOverlay { |
194 if (isGameRunning()) { |
189 if ([HWUtils isGameRunning]) { |
195 [UIView beginAnimations:@"overlay dim" context:NULL]; |
190 [UIView beginAnimations:@"overlay dim" context:NULL]; |
196 [UIView setAnimationDuration:0.6]; |
191 [UIView setAnimationDuration:0.6]; |
197 self.view.alpha = 0.2; |
192 self.view.alpha = 0.2; |
198 [UIView commitAnimations]; |
193 [UIView commitAnimations]; |
199 } |
194 } |
213 |
208 |
214 #pragma mark - |
209 #pragma mark - |
215 #pragma mark overlay user interaction |
210 #pragma mark overlay user interaction |
216 // dim the overlay when there's no more input for a certain amount of time |
211 // dim the overlay when there's no more input for a certain amount of time |
217 -(IBAction) buttonReleased:(id) sender { |
212 -(IBAction) buttonReleased:(id) sender { |
218 if (isGameRunning() == NO) |
213 if ([HWUtils isGameRunning] == NO) |
219 return; |
214 return; |
220 |
215 |
221 UIButton *theButton = (UIButton *)sender; |
216 UIButton *theButton = (UIButton *)sender; |
222 |
217 |
223 switch (theButton.tag) { |
218 switch (theButton.tag) { |
246 |
241 |
247 // issue certain action based on the tag of the button |
242 // issue certain action based on the tag of the button |
248 -(IBAction) buttonPressed:(id) sender { |
243 -(IBAction) buttonPressed:(id) sender { |
249 [self activateOverlay]; |
244 [self activateOverlay]; |
250 |
245 |
251 if (isGameRunning() == NO) |
246 if ([HWUtils isGameRunning] == NO) |
252 return; |
247 return; |
253 |
248 |
254 if (isPopoverVisible) |
249 if (isPopoverVisible) |
255 [self dismissPopover]; |
250 [self dismissPopover]; |
256 |
251 |
331 doDim(); |
326 doDim(); |
332 } |
327 } |
333 |
328 |
334 -(void) setGrenadeTime:(id) sender { |
329 -(void) setGrenadeTime:(id) sender { |
335 UISegmentedControl *theSegment = (UISegmentedControl *)sender; |
330 UISegmentedControl *theSegment = (UISegmentedControl *)sender; |
336 if (cachedGrenadeTime() != theSegment.selectedSegmentIndex) { |
331 if ([ObjcExports grenadeTime] != theSegment.selectedSegmentIndex) { |
337 HW_setGrenadeTime(theSegment.selectedSegmentIndex + 1); |
332 HW_setGrenadeTime(theSegment.selectedSegmentIndex + 1); |
338 setGrenadeTime(theSegment.selectedSegmentIndex); |
333 [ObjcExports setGrenadeTime:theSegment.selectedSegmentIndex]; |
339 } |
334 } |
340 } |
335 } |
341 |
336 |
342 #pragma mark - |
337 #pragma mark - |
343 #pragma mark in-game menu and help page |
338 #pragma mark in-game menu and help page |
399 } |
394 } |
400 |
395 |
401 #pragma mark - |
396 #pragma mark - |
402 #pragma mark Custom touch event handling |
397 #pragma mark Custom touch event handling |
403 -(BOOL) shouldIgnoreTouch:(NSSet *)allTouches { |
398 -(BOOL) shouldIgnoreTouch:(NSSet *)allTouches { |
404 if (isGameRunning() == NO) |
399 if ([HWUtils isGameRunning] == NO) |
405 return YES; |
400 return YES; |
406 |
401 |
407 // ignore activity near the dpad and buttons |
402 // ignore activity near the dpad and buttons |
408 CGPoint touchPoint = [[[allTouches allObjects] objectAtIndex:0] locationInView:self.view]; |
403 CGPoint touchPoint = [[[allTouches allObjects] objectAtIndex:0] locationInView:self.view]; |
409 CGSize screen = [[UIScreen mainScreen] bounds].size; |
404 CGSize screen = [[UIScreen mainScreen] bounds].size; |
510 [grenadeSegment addTarget:self action:@selector(setGrenadeTime:) forControlEvents:UIControlEventValueChanged]; |
505 [grenadeSegment addTarget:self action:@selector(setGrenadeTime:) forControlEvents:UIControlEventValueChanged]; |
511 self.grenadeTimeSegment = grenadeSegment; |
506 self.grenadeTimeSegment = grenadeSegment; |
512 [grenadeSegment release]; |
507 [grenadeSegment release]; |
513 } |
508 } |
514 self.grenadeTimeSegment.frame = CGRectMake(screen.size.height / 2 - 125, screen.size.width, 250, 50); |
509 self.grenadeTimeSegment.frame = CGRectMake(screen.size.height / 2 - 125, screen.size.width, 250, 50); |
515 self.grenadeTimeSegment.selectedSegmentIndex = cachedGrenadeTime(); |
510 self.grenadeTimeSegment.selectedSegmentIndex = [ObjcExports grenadeTime]; |
516 self.grenadeTimeSegment.alpha = 1; |
511 self.grenadeTimeSegment.alpha = 1; |
517 [self.view addSubview:self.grenadeTimeSegment]; |
512 [self.view addSubview:self.grenadeTimeSegment]; |
518 |
513 |
519 [UIView beginAnimations:@"inserting segmented control" context:NULL]; |
514 [UIView beginAnimations:@"inserting segmented control" context:NULL]; |
520 [UIView setAnimationDuration:ANIMATION_DURATION]; |
515 [UIView setAnimationDuration:ANIMATION_DURATION]; |