project_files/HedgewarsMobile/Classes/OverlayViewController.m
changeset 3791 98072b3871c1
parent 3789 c3eb56754e92
child 3792 dd9345e74b66
equal deleted inserted replaced
3790:8f48b54f42ce 3791:98072b3871c1
     6 //  Copyright 2010 __MyCompanyName__. All rights reserved.
     6 //  Copyright 2010 __MyCompanyName__. All rights reserved.
     7 //
     7 //
     8 
     8 
     9 #import "OverlayViewController.h"
     9 #import "OverlayViewController.h"
    10 #import "SDL_uikitappdelegate.h"
    10 #import "SDL_uikitappdelegate.h"
       
    11 #import "InGameMenuViewController.h"
       
    12 #import "HelpPageLobbyViewController.h"
    11 #import "PascalImports.h"
    13 #import "PascalImports.h"
       
    14 #import "CommodityFunctions.h"
    12 #import "CGPointUtils.h"
    15 #import "CGPointUtils.h"
       
    16 #import "SDL_config_iphoneos.h"
    13 #import "SDL_mouse.h"
    17 #import "SDL_mouse.h"
    14 #import "InGameMenuViewController.h"
       
    15 #import "CommodityFunctions.h"
       
    16 #import "SDL_config_iphoneos.h"
       
    17 
    18 
    18 #define HIDING_TIME_DEFAULT [NSDate dateWithTimeIntervalSinceNow:2.7]
    19 #define HIDING_TIME_DEFAULT [NSDate dateWithTimeIntervalSinceNow:2.7]
    19 #define HIDING_TIME_NEVER   [NSDate dateWithTimeIntervalSinceNow:10000]
    20 #define HIDING_TIME_NEVER   [NSDate dateWithTimeIntervalSinceNow:10000]
    20 #define doDim()             [dimTimer setFireDate:HIDING_TIME_DEFAULT]
    21 #define doDim()             [dimTimer setFireDate:HIDING_TIME_DEFAULT]
    21 #define doNotDim()          [dimTimer setFireDate:HIDING_TIME_NEVER]
    22 #define doNotDim()          [dimTimer setFireDate:HIDING_TIME_NEVER]
    24 #define GRENADE_TAG 9595
    25 #define GRENADE_TAG 9595
    25 #define ANIMATION_DURATION 0.25
    26 #define ANIMATION_DURATION 0.25
    26 #define removeConfirmationInput()   [[self.view viewWithTag:CONFIRMATION_TAG] removeFromSuperview];
    27 #define removeConfirmationInput()   [[self.view viewWithTag:CONFIRMATION_TAG] removeFromSuperview];
    27 
    28 
    28 @implementation OverlayViewController
    29 @implementation OverlayViewController
    29 @synthesize popoverController, popupMenu;
    30 @synthesize popoverController, popupMenu, helpPage;
    30 
    31 
    31 -(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation {
    32 -(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation {
    32     return rotationManager(interfaceOrientation);
    33     return rotationManager(interfaceOrientation);
    33 }
    34 }
    34 
    35 
    80 }
    81 }
    81 
    82 
    82 #pragma mark -
    83 #pragma mark -
    83 #pragma mark View Management
    84 #pragma mark View Management
    84 -(void) viewDidLoad {
    85 -(void) viewDidLoad {
       
    86     isGameRunning = NO;
       
    87     cachedGrenadeTime = 2;
    85     isAttacking = NO;
    88     isAttacking = NO;
    86     
    89     
    87     // i called it a popover even on the iphone
    90     // i called it a popover even on the iphone
    88     isPopoverVisible = NO;
    91     isPopoverVisible = NO;
    89     self.view.alpha = 0;
    92     self.view.alpha = 0;
   122     [[NSNotificationCenter defaultCenter] addObserver:self
   125     [[NSNotificationCenter defaultCenter] addObserver:self
   123                                              selector:@selector(didRotate:)
   126                                              selector:@selector(didRotate:)
   124                                                  name:UIDeviceOrientationDidChangeNotification
   127                                                  name:UIDeviceOrientationDidChangeNotification
   125                                                object:nil];
   128                                                object:nil];
   126 
   129 
       
   130     [[NSNotificationCenter defaultCenter] addObserver:self
       
   131                                              selector:@selector(showHelp:)
       
   132                                                  name:@"show help ingame"
       
   133                                                object:nil];
       
   134 
   127     [UIView beginAnimations:@"showing overlay" context:NULL];
   135     [UIView beginAnimations:@"showing overlay" context:NULL];
   128     [UIView setAnimationDuration:1];
   136     [UIView setAnimationDuration:1];
   129     self.view.alpha = 1;
   137     self.view.alpha = 1;
   130     [UIView commitAnimations];
   138     [UIView commitAnimations];
   131 
   139 
   133     SDL_VideoDevice *_this = SDL_GetVideoDevice();
   141     SDL_VideoDevice *_this = SDL_GetVideoDevice();
   134     SDL_VideoDisplay *display = &_this->displays[0];
   142     SDL_VideoDisplay *display = &_this->displays[0];
   135     sdlwindow = display->windows;
   143     sdlwindow = display->windows;
   136 }
   144 }
   137 
   145 
       
   146 -(void) showHelp:(id) sender {
       
   147     if (self.helpPage == nil)
       
   148         self.helpPage = [[HelpPageLobbyViewController alloc] initWithNibName:@"HelpPageLobbyViewController" bundle:nil];
       
   149     self.helpPage.view.alpha = 0;
       
   150     [self.view addSubview:helpPage.view];
       
   151     [UIView beginAnimations:@"helpingame" context:NULL];
       
   152     self.helpPage.view.alpha = 1;
       
   153     [UIView commitAnimations];
       
   154     doNotDim();
       
   155 }
       
   156 
   138 -(void) didReceiveMemoryWarning {
   157 -(void) didReceiveMemoryWarning {
   139     [super didReceiveMemoryWarning];
   158     [super didReceiveMemoryWarning];
   140     if (self.popupMenu.view.superview == nil)
   159     if (self.popupMenu.view.superview == nil)
   141         self.popupMenu = nil;
   160         self.popupMenu = nil;
       
   161     if (self.helpPage.view.superview == nil)
       
   162         self.helpPage = nil;
   142     MSG_MEMCLEAN();
   163     MSG_MEMCLEAN();
   143 }
   164 }
   144 
   165 
   145 -(void) viewDidUnload {
   166 -(void) viewDidUnload {
   146     // only objects initialized in viewDidLoad should be here
   167     // only objects initialized in viewDidLoad should be here
   150     [super viewDidUnload];
   171     [super viewDidUnload];
   151 }
   172 }
   152 
   173 
   153 -(void) dealloc {
   174 -(void) dealloc {
   154     [popupMenu release];
   175     [popupMenu release];
       
   176     [helpPage release];
   155     [popoverController release];
   177     [popoverController release];
   156     // dimTimer is autoreleased
   178     // dimTimer is autoreleased
   157     [super dealloc];
   179     [super dealloc];
   158 }
   180 }
   159 
   181 
   248             break;
   270             break;
   249         case 6:
   271         case 6:
   250             HW_backjump();
   272             HW_backjump();
   251             break;
   273             break;
   252         case 10:
   274         case 10:
       
   275             playSound(@"clickSound");
   253             HW_pause();
   276             HW_pause();
   254             removeConfirmationInput();
   277             removeConfirmationInput();
   255             [self showPopover];
   278             [self showPopover];
   256             break;
   279             break;
   257         case 11:
   280         case 11:
       
   281             playSound(@"clickSound");
   258             removeConfirmationInput();
   282             removeConfirmationInput();
   259             HW_ammoMenu();
   283             HW_ammoMenu();
   260             break;
   284             break;
   261         default:
   285         default:
   262             DLog(@"Nope");
   286             DLog(@"Nope");
   417                             UISegmentedControl *grenadeTime = [[UISegmentedControl alloc] initWithItems:items];
   441                             UISegmentedControl *grenadeTime = [[UISegmentedControl alloc] initWithItems:items];
   418                             [items release];
   442                             [items release];
   419 
   443 
   420                             [grenadeTime addTarget:self action:@selector(setGrenadeTime:) forControlEvents:UIControlEventValueChanged];
   444                             [grenadeTime addTarget:self action:@selector(setGrenadeTime:) forControlEvents:UIControlEventValueChanged];
   421                             grenadeTime.frame = CGRectMake(screen.size.height / 2 - 125, screen.size.width, 250, 50);
   445                             grenadeTime.frame = CGRectMake(screen.size.height / 2 - 125, screen.size.width, 250, 50);
   422                             grenadeTime.selectedSegmentIndex = 2;
   446                             grenadeTime.selectedSegmentIndex = cachedGrenadeTime;
   423                             grenadeTime.tag = GRENADE_TAG;
   447                             grenadeTime.tag = GRENADE_TAG;
   424                             [self.view addSubview:grenadeTime];
   448                             [self.view addSubview:grenadeTime];
   425                             [grenadeTime release];
   449                             [grenadeTime release];
   426 
   450 
   427                             [UIView beginAnimations:@"inserting segmented control" context:NULL];
   451                             [UIView beginAnimations:@"inserting segmented control" context:NULL];
   454     doDim();
   478     doDim();
   455 }
   479 }
   456 
   480 
   457 -(void) setGrenadeTime:(id) sender {
   481 -(void) setGrenadeTime:(id) sender {
   458     UISegmentedControl *theSegment = (UISegmentedControl *)sender;
   482     UISegmentedControl *theSegment = (UISegmentedControl *)sender;
   459     HW_setGrenadeTime(theSegment.selectedSegmentIndex + 1);
   483     if (cachedGrenadeTime != theSegment.selectedSegmentIndex) {
       
   484         HW_setGrenadeTime(theSegment.selectedSegmentIndex + 1);
       
   485         cachedGrenadeTime = theSegment.selectedSegmentIndex;
       
   486     }
   460 }
   487 }
   461 
   488 
   462 -(void) touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
   489 -(void) touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
   463     [self touchesEnded:touches withEvent:event];
   490     [self touchesEnded:touches withEvent:event];
   464 }
   491 }
   553     theSegment.alpha = 0;
   580     theSegment.alpha = 0;
   554     [UIView commitAnimations];
   581     [UIView commitAnimations];
   555 
   582 
   556     [theWindow performSelector:@selector(removeFromSuperview) withObject:theButton afterDelay:0.3];
   583     [theWindow performSelector:@selector(removeFromSuperview) withObject:theButton afterDelay:0.3];
   557     [theWindow performSelector:@selector(removeFromSuperview) withObject:theSegment afterDelay:0.3];
   584     [theWindow performSelector:@selector(removeFromSuperview) withObject:theSegment afterDelay:0.3];
       
   585 
       
   586     cachedGrenadeTime = 2;
   558 }
   587 }
   559 
   588 
   560 @end
   589 @end