project_files/HedgewarsMobile/Classes/ObjcExports.m
author koda
Sun, 20 Nov 2011 19:07:59 +0100
changeset 6409 ca93f38a1aab
parent 6259 02765411a912
child 6615 65602f1ef0f8
permissions -rw-r--r--
SDL included some of our patches mainstream
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;
6dfad55fd71c unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents: 6078
diff changeset
    72
    [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
    73
    [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
    74
    [overlay_instance.loadingIndicator release];
4028
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    75
}
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    76
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
    77
void stopLoadingIndicator() {
4028
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    78
    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
    79
    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
    80
        [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
    81
        [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
    82
        [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
    83
    }
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
}
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
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
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
    87
    [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
    88
    [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
    89
    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
    90
    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
    91
    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
    92
    [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
    93
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.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
    95
    [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
    96
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
    [[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
    98
    [HWUtils setGameStatus:gsInGame];
4028
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    99
}
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
   100
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
   101
void clearView() {
4504
8906b2409d97 add the appirater class for getting more positive reviews
koda
parents: 4488
diff changeset
   102
    // 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
   103
    [UIView beginAnimations:@"remove button" context:NULL];
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
   104
    [UIView setAnimationDuration:ANIMATION_DURATION];
5175
a3da220dbb3f finish overlay refactoring and some leak annihilation
koda
parents: 5174
diff changeset
   105
    overlay_instance.confirmButton.alpha = 0;
a3da220dbb3f finish overlay refactoring and some leak annihilation
koda
parents: 5174
diff changeset
   106
    overlay_instance.grenadeTimeSegment.alpha = 0;
4028
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
   107
    [UIView commitAnimations];
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
   108
5175
a3da220dbb3f finish overlay refactoring and some leak annihilation
koda
parents: 5174
diff changeset
   109
    if (overlay_instance.confirmButton)
a3da220dbb3f finish overlay refactoring and some leak annihilation
koda
parents: 5174
diff changeset
   110
        [overlay_instance.confirmButton performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:ANIMATION_DURATION];
a3da220dbb3f finish overlay refactoring and some leak annihilation
koda
parents: 5174
diff changeset
   111
    if (overlay_instance.grenadeTimeSegment) {
a3da220dbb3f finish overlay refactoring and some leak annihilation
koda
parents: 5174
diff changeset
   112
        [overlay_instance.grenadeTimeSegment performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:ANIMATION_DURATION];
a3da220dbb3f finish overlay refactoring and some leak annihilation
koda
parents: 5174
diff changeset
   113
        overlay_instance.grenadeTimeSegment.tag = 0;
a3da220dbb3f finish overlay refactoring and some leak annihilation
koda
parents: 5174
diff changeset
   114
    }
4028
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
   115
    grenadeTime = 2;
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
   116
}
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
   117
4034
634a8c8682de add some phone rumbling to big explosions, airbomb and sinegun
koda
parents: 4028
diff changeset
   118
void updateVisualsNewTurn(void) {
5174
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
   119
    [overlay_instance.amvc updateAmmoVisuals];
4034
634a8c8682de add some phone rumbling to big explosions, airbomb and sinegun
koda
parents: 4028
diff changeset
   120
}
5106
517bdd3865f1 wow we're getting famous http://hg.libsdl.org/SDL/rev/8a04b596b472
koda
parents: 5002
diff changeset
   121
517bdd3865f1 wow we're getting famous http://hg.libsdl.org/SDL/rev/8a04b596b472
koda
parents: 5002
diff changeset
   122
// dummy function to prevent linkage fail
517bdd3865f1 wow we're getting famous http://hg.libsdl.org/SDL/rev/8a04b596b472
koda
parents: 5002
diff changeset
   123
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
   124
    return 0;
517bdd3865f1 wow we're getting famous http://hg.libsdl.org/SDL/rev/8a04b596b472
koda
parents: 5002
diff changeset
   125
}