project_files/HedgewarsMobile/Classes/ObjcExports.m
author koda
Mon, 30 Jan 2012 23:20:28 +0100
changeset 6615 65602f1ef0f8
parent 6409 ca93f38a1aab
child 6624 e049b5bb0ad1
permissions -rw-r--r--
more ios pages supporting rotaiton
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4028
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
     1
/*
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
     2
 * Hedgewars-iOS, a Hedgewars port for iOS devices
4976
088d40d8aba2 Happy 2011 :)
koda
parents: 4948
diff changeset
     3
 * Copyright (c) 2009-2011 Vittorio Giovara <vittorio.giovara@gmail.com>
4028
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
     4
 *
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License as published by
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
     7
 * the Free Software Foundation; version 2 of the License
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
     8
 *
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    12
 * GNU General Public License for more details.
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    13
 *
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    17
 *
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    18
 * File created on 30/10/2010.
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    19
 */
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    20
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    21
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    22
#import "ObjcExports.h"
5174
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
    23
#import "OverlayViewController.h"
4362
8dae325dc625 added missing graphics and fixed some glitches/crashes/bugs
koda
parents: 4034
diff changeset
    24
#import "AmmoMenuViewController.h"
4028
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    25
6078
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6018
diff changeset
    26
4028
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    27
// cache the grenade time
6078
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6018
diff changeset
    28
static NSInteger grenadeTime;
4362
8dae325dc625 added missing graphics and fixed some glitches/crashes/bugs
koda
parents: 4034
diff changeset
    29
// the reference to the newMenu instance
6078
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6018
diff changeset
    30
static OverlayViewController *overlay_instance;
5175
a3da220dbb3f finish overlay refactoring and some leak annihilation
koda
parents: 5174
diff changeset
    31
6078
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6018
diff changeset
    32
@implementation ObjcExports
4028
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    33
6247
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    34
+(void) setGrenadeTime:(NSInteger) value {
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    35
    grenadeTime = value;
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    36
}
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    37
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    38
+(NSInteger) grenadeTime {
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    39
    return grenadeTime;
4028
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    40
}
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    41
6078
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6018
diff changeset
    42
@end
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 6018
diff changeset
    43
4028
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    44
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    45
#pragma mark -
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    46
#pragma mark functions called by pascal code
5994
3c578f531cc1 don't rumble while synchronising a demo/save
koda
parents: 5992
diff changeset
    47
BOOL inline isApplePhone() {
3c578f531cc1 don't rumble while synchronising a demo/save
koda
parents: 5992
diff changeset
    48
    return (IS_IPAD() == NO);
3c578f531cc1 don't rumble while synchronising a demo/save
koda
parents: 5992
diff changeset
    49
}
3c578f531cc1 don't rumble while synchronising a demo/save
koda
parents: 5992
diff changeset
    50
6247
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    51
void startLoadingIndicator() {
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    52
    // this is the first ojbc function called by engine, so we have to initialize some variables here
6259
02765411a912 move objc overlay creation after sdlwindow has been created
koda
parents: 6247
diff changeset
    53
    overlay_instance = [[OverlayViewController alloc] initWithNibName:@"OverlayViewController" bundle:nil];
02765411a912 move objc overlay creation after sdlwindow has been created
koda
parents: 6247
diff changeset
    54
    // in order to get rotation events we have to insert the view inside the first view of the second window
02765411a912 move objc overlay creation after sdlwindow has been created
koda
parents: 6247
diff changeset
    55
    //TODO: when multihead make sure that overlay is displayed in the touch-enabled window
6409
ca93f38a1aab SDL included some of our patches mainstream
koda
parents: 6259
diff changeset
    56
    [[HWUtils mainSDLViewInstance] addSubview:overlay_instance.view];
6247
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    57
    grenadeTime = 2;
5174
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
    58
6247
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    59
    if ([HWUtils gameType] == gtSave) {
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    60
        [[UIApplication sharedApplication] setIdleTimerDisabled:YES];
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    61
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    62
        overlay_instance.view.backgroundColor = [UIColor blackColor];
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    63
        overlay_instance.view.alpha = 0.75;
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    64
        overlay_instance.view.userInteractionEnabled = NO;
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    65
    }
5174
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
    66
    CGPoint center = overlay_instance.view.center;
6247
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    67
    CGPoint loaderCenter = ((IS_DUALHEAD() || [HWUtils gameType] == gtSave) ? center : CGPointMake(center.x, center.y * 5/3));
5174
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
    68
6247
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    69
    overlay_instance.loadingIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    70
    overlay_instance.loadingIndicator.hidesWhenStopped = YES;
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    71
    overlay_instance.loadingIndicator.center = loaderCenter;
6615
65602f1ef0f8 more ios pages supporting rotaiton
koda
parents: 6409
diff changeset
    72
    overlay_instance.loadingIndicator.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin |
65602f1ef0f8 more ios pages supporting rotaiton
koda
parents: 6409
diff changeset
    73
                                                         UIViewAutoresizingFlexibleRightMargin |
65602f1ef0f8 more ios pages supporting rotaiton
koda
parents: 6409
diff changeset
    74
                                                         UIViewAutoresizingFlexibleTopMargin |
65602f1ef0f8 more ios pages supporting rotaiton
koda
parents: 6409
diff changeset
    75
                                                         UIViewAutoresizingFlexibleBottomMargin;
6247
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    76
    [overlay_instance.loadingIndicator startAnimating];
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    77
    [overlay_instance.view addSubview:overlay_instance.loadingIndicator];
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    78
    [overlay_instance.loadingIndicator release];
4028
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    79
}
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    80
6247
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    81
void stopLoadingIndicator() {
4028
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    82
    HW_zoomSet(1.7);
6247
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    83
    if ([HWUtils gameType] != gtSave) {
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    84
        [overlay_instance.loadingIndicator stopAnimating];
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    85
        [overlay_instance.loadingIndicator removeFromSuperview];
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    86
        [HWUtils setGameStatus:gsInGame];
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    87
    }
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    88
}
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    89
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    90
void saveFinishedSynching() {
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    91
    [UIView beginAnimations:@"fading from save synch" context:NULL];
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    92
    [UIView setAnimationDuration:1];
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    93
    overlay_instance.view.backgroundColor = [UIColor clearColor];
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    94
    overlay_instance.view.alpha = 1;
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    95
    overlay_instance.view.userInteractionEnabled = YES;
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    96
    [UIView commitAnimations];
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    97
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    98
    [overlay_instance.loadingIndicator stopAnimating];
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    99
    [overlay_instance.loadingIndicator performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:1];
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
   100
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
   101
    [[UIApplication sharedApplication] setIdleTimerDisabled:NO];
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
   102
    [HWUtils setGameStatus:gsInGame];
4028
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
   103
}
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
   104
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
   105
void clearView() {
4504
8906b2409d97 add the appirater class for getting more positive reviews
koda
parents: 4488
diff changeset
   106
    // don't use any engine calls here as this function is called every time the ammomenu is opened
4028
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
   107
    [UIView beginAnimations:@"remove button" context:NULL];
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
   108
    [UIView setAnimationDuration:ANIMATION_DURATION];
5175
a3da220dbb3f finish overlay refactoring and some leak annihilation
koda
parents: 5174
diff changeset
   109
    overlay_instance.confirmButton.alpha = 0;
a3da220dbb3f finish overlay refactoring and some leak annihilation
koda
parents: 5174
diff changeset
   110
    overlay_instance.grenadeTimeSegment.alpha = 0;
4028
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
   111
    [UIView commitAnimations];
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
   112
5175
a3da220dbb3f finish overlay refactoring and some leak annihilation
koda
parents: 5174
diff changeset
   113
    if (overlay_instance.confirmButton)
a3da220dbb3f finish overlay refactoring and some leak annihilation
koda
parents: 5174
diff changeset
   114
        [overlay_instance.confirmButton performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:ANIMATION_DURATION];
a3da220dbb3f finish overlay refactoring and some leak annihilation
koda
parents: 5174
diff changeset
   115
    if (overlay_instance.grenadeTimeSegment) {
a3da220dbb3f finish overlay refactoring and some leak annihilation
koda
parents: 5174
diff changeset
   116
        [overlay_instance.grenadeTimeSegment performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:ANIMATION_DURATION];
a3da220dbb3f finish overlay refactoring and some leak annihilation
koda
parents: 5174
diff changeset
   117
        overlay_instance.grenadeTimeSegment.tag = 0;
a3da220dbb3f finish overlay refactoring and some leak annihilation
koda
parents: 5174
diff changeset
   118
    }
4028
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
   119
    grenadeTime = 2;
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
   120
}
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
   121
4034
634a8c8682de add some phone rumbling to big explosions, airbomb and sinegun
koda
parents: 4028
diff changeset
   122
void updateVisualsNewTurn(void) {
5174
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
   123
    [overlay_instance.amvc updateAmmoVisuals];
4034
634a8c8682de add some phone rumbling to big explosions, airbomb and sinegun
koda
parents: 4028
diff changeset
   124
}
5106
517bdd3865f1 wow we're getting famous http://hg.libsdl.org/SDL/rev/8a04b596b472
koda
parents: 5002
diff changeset
   125
517bdd3865f1 wow we're getting famous http://hg.libsdl.org/SDL/rev/8a04b596b472
koda
parents: 5002
diff changeset
   126
// dummy function to prevent linkage fail
517bdd3865f1 wow we're getting famous http://hg.libsdl.org/SDL/rev/8a04b596b472
koda
parents: 5002
diff changeset
   127
int SDL_main(int argc, char **argv) {
517bdd3865f1 wow we're getting famous http://hg.libsdl.org/SDL/rev/8a04b596b472
koda
parents: 5002
diff changeset
   128
    return 0;
517bdd3865f1 wow we're getting famous http://hg.libsdl.org/SDL/rev/8a04b596b472
koda
parents: 5002
diff changeset
   129
}