project_files/HedgewarsMobile/Classes/OverlayViewController.m
changeset 4028 eb371ada631d
parent 3996 eb549fd864a5
child 4078 da01196fb5ab
--- a/project_files/HedgewarsMobile/Classes/OverlayViewController.m	Sun Oct 31 00:06:46 2010 +0200
+++ b/project_files/HedgewarsMobile/Classes/OverlayViewController.m	Sun Oct 31 01:49:20 2010 +0200
@@ -20,7 +20,6 @@
 
 
 #import "OverlayViewController.h"
-#import "SDL_uikitappdelegate.h"
 #import "InGameMenuViewController.h"
 #import "HelpPageViewController.h"
 #import "AmmoMenuViewController.h"
@@ -29,17 +28,13 @@
 #import "CGPointUtils.h"
 #import "SDL_config_iphoneos.h"
 #import "SDL_mouse.h"
+#import "ObjcExports.h"
 
 #define HIDING_TIME_DEFAULT [NSDate dateWithTimeIntervalSinceNow:2.7]
 #define HIDING_TIME_NEVER   [NSDate dateWithTimeIntervalSinceNow:10000]
 #define doDim()             [dimTimer setFireDate: (IS_DUALHEAD()) ? HIDING_TIME_NEVER : HIDING_TIME_DEFAULT]
 #define doNotDim()          [dimTimer setFireDate:HIDING_TIME_NEVER]
 
-#define CONFIRMATION_TAG 5959
-#define GRENADE_TAG 9595
-#define REPLAYBLACKVIEW_TAG 9955
-#define ACTIVITYINDICATOR_TAG 987654
-#define ANIMATION_DURATION 0.25
 #define removeConfirmationInput()   [[self.view viewWithTag:CONFIRMATION_TAG] removeFromSuperview];
 
 @implementation OverlayViewController
@@ -112,10 +107,7 @@
 #pragma mark View Management
 -(id) initWithCoder:(NSCoder *)aDecoder {
     if ((self = [super initWithCoder:aDecoder])) {
-        isGameRunning = NO;
-        isReplay = NO;
-        cachedGrenadeTime = 2;
-
+        objcExportsInit();
         isAttacking = NO;
         wasVisible = NO;
         isPopoverVisible = NO;    // it is called "popover" even on the iphone
@@ -288,7 +280,7 @@
 #pragma mark overlay user interaction
 // nice transition for dimming, should be called only by the timer himself
 -(void) dimOverlay {
-    if (isGameRunning) {
+    if (isGameRunning()) {
         [UIView beginAnimations:@"overlay dim" context:NULL];
         [UIView setAnimationDuration:0.6];
         self.view.alpha = 0.2;
@@ -304,7 +296,7 @@
 
 // dim the overlay when there's no more input for a certain amount of time
 -(IBAction) buttonReleased:(id) sender {
-    if (isGameRunning == NO)
+    if (isGameRunning() == NO)
         return;
 
     UIButton *theButton = (UIButton *)sender;
@@ -337,7 +329,7 @@
 -(IBAction) buttonPressed:(id) sender {
     [self activateOverlay];
     
-    if (isGameRunning == NO)
+    if (isGameRunning() == NO)
         return;
     
     if (isPopoverVisible)
@@ -422,9 +414,9 @@
 
 -(void) setGrenadeTime:(id) sender {
     UISegmentedControl *theSegment = (UISegmentedControl *)sender;
-    if (cachedGrenadeTime != theSegment.selectedSegmentIndex) {
+    if (cachedGrenadeTime() != theSegment.selectedSegmentIndex) {
         HW_setGrenadeTime(theSegment.selectedSegmentIndex + 1);
-        cachedGrenadeTime = theSegment.selectedSegmentIndex;
+        setGrenadeTime(theSegment.selectedSegmentIndex);
     }
 }
 
@@ -490,7 +482,7 @@
     NSSet *allTouches = [event allTouches];
     UITouch *first, *second;
 
-    if (isGameRunning == NO)
+    if (isGameRunning() == NO)
         return;
 
     // hide in-game menu
@@ -529,7 +521,7 @@
     NSSet *allTouches = [event allTouches];
     CGPoint currentPosition = [[[allTouches allObjects] objectAtIndex:0] locationInView:self.view];
 
-    if (isGameRunning == NO)
+    if (isGameRunning() == NO)
         return;
     
     switch ([allTouches count]) {
@@ -582,7 +574,7 @@
 
                             [grenadeTime addTarget:self action:@selector(setGrenadeTime:) forControlEvents:UIControlEventValueChanged];
                             grenadeTime.frame = CGRectMake(screen.size.height / 2 - 125, screen.size.width, 250, 50);
-                            grenadeTime.selectedSegmentIndex = cachedGrenadeTime;
+                            grenadeTime.selectedSegmentIndex = cachedGrenadeTime();
                             grenadeTime.tag = GRENADE_TAG;
                             [self.view addSubview:grenadeTime];
                             [grenadeTime release];
@@ -621,7 +613,7 @@
     int x, y, dx, dy;
     UITouch *touch, *first, *second;
 
-    if (isGameRunning == NO)
+    if (isGameRunning() == NO)
         return;
     
     switch ([allTouches count]) {
@@ -674,97 +666,4 @@
     }
 }
 
-#pragma mark -
-#pragma mark Functions called by pascal code
-void inline setGameRunning(BOOL value) {
-    isGameRunning = value;
-}
-
-// called by uStore from AddProgress
-void startSpinning() {
-    setGameRunning(NO);
-    UIWindow *theWindow = [[UIApplication sharedApplication] keyWindow];
-    UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
-    indicator.tag = ACTIVITYINDICATOR_TAG;
-    int offset;
-    if ([[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeLeft)
-        offset = -120;
-    else
-        offset = 120;
-    if (IS_DUALHEAD())
-        indicator.center = CGPointMake(theWindow.frame.size.width/2, theWindow.frame.size.height/2 + offset);
-    else
-        indicator.center = CGPointMake(theWindow.frame.size.width/2 + offset, theWindow.frame.size.height/2);
-    indicator.hidesWhenStopped = YES;
-    [indicator startAnimating];
-    [theWindow addSubview:indicator];
-    [indicator release];
-}
-
-// called by uStore from FinishProgress and by OverlayViewController by replayBegan
-void stopSpinning() {
-    UIWindow *theWindow = [[UIApplication sharedApplication] keyWindow];
-    UIActivityIndicatorView *indicator = (UIActivityIndicatorView *)[theWindow viewWithTag:ACTIVITYINDICATOR_TAG];
-    [indicator stopAnimating];
-    HW_zoomSet(1.7);
-    if (isReplay == NO)
-        setGameRunning(YES);
-}
-
-// called by CCHandlers from chNextTurn
-void clearView() {
-    UIWindow *theWindow = (IS_DUALHEAD()) ? [SDLUIKitDelegate sharedAppDelegate].uiwindow : [[UIApplication sharedApplication] keyWindow];
-    UIButton *theButton = (UIButton *)[theWindow viewWithTag:CONFIRMATION_TAG];
-    UISegmentedControl *theSegment = (UISegmentedControl *)[theWindow viewWithTag:GRENADE_TAG];
-
-    [UIView beginAnimations:@"remove button" context:NULL];
-    [UIView setAnimationDuration:ANIMATION_DURATION];
-    theButton.alpha = 0;
-    theSegment.alpha = 0;
-    [UIView commitAnimations];
-
-    if (theButton)
-        [theWindow performSelector:@selector(removeFromSuperview) withObject:theButton afterDelay:ANIMATION_DURATION];
-    if (theSegment)
-        [theWindow performSelector:@selector(removeFromSuperview) withObject:theSegment afterDelay:ANIMATION_DURATION];
-
-    cachedGrenadeTime = 2;
-}
-
-// called by hwengine
-void replayBegan() {
-    UIWindow *theWindow = [[UIApplication sharedApplication] keyWindow];
-    UIView *blackView = [[UIView alloc] initWithFrame:theWindow.frame];
-    blackView.backgroundColor = [UIColor blackColor];
-    blackView.alpha = 0.6;
-    blackView.tag = REPLAYBLACKVIEW_TAG;
-    blackView.exclusiveTouch = NO;
-    blackView.multipleTouchEnabled = NO;
-    blackView.userInteractionEnabled = NO;
-    UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
-    indicator.center = theWindow.center;
-    [indicator startAnimating];
-    [blackView addSubview:indicator];
-    [indicator release];
-    [theWindow addSubview:blackView];
-    [blackView release];
-    isReplay = YES;
-    stopSpinning();
-}
-
-// called by uGame
-void replayFinished() {
-    UIWindow *theWindow = [[UIApplication sharedApplication] keyWindow];
-    UIView *blackView = (UIView *)[theWindow viewWithTag:REPLAYBLACKVIEW_TAG];
-    
-    [UIView beginAnimations:@"removing black" context:NULL];
-    [UIView setAnimationDuration:1];
-    blackView.alpha = 0;
-    [UIView commitAnimations];
-    [theWindow performSelector:@selector(removeFromSuperview) withObject:blackView afterDelay:1];
-    
-    setGameRunning(YES);
-    isReplay = NO;
-}
-
 @end