project_files/HedgewarsMobile/Classes/ObjcExports.m
author koda
Thu, 22 Sep 2011 15:30:40 +0200
changeset 5992 a311b8461ec9
parent 5662 99083392cd4f
child 5994 3c578f531cc1
permissions -rw-r--r--
prevent screen locking while synching saves (can take some time)
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
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    26
#pragma mark -
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    27
#pragma mark internal variables
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    28
// actual game started (controls should be enabled)
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    29
BOOL gameRunning;
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    30
// black screen present
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    31
BOOL savedGame;
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    32
// cache the grenade time
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    33
NSInteger grenadeTime;
4362
8dae325dc625 added missing graphics and fixed some glitches/crashes/bugs
koda
parents: 4034
diff changeset
    34
// the reference to the newMenu instance
5174
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
    35
OverlayViewController *overlay_instance;
5175
a3da220dbb3f finish overlay refactoring and some leak annihilation
koda
parents: 5174
diff changeset
    36
4028
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    37
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    38
#pragma mark -
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    39
#pragma mark functions called like oop
5174
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
    40
void objcExportsInit(OverlayViewController* instance) {
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
    41
    overlay_instance = instance;
4034
634a8c8682de add some phone rumbling to big explosions, airbomb and sinegun
koda
parents: 4028
diff changeset
    42
    gameRunning = NO;
634a8c8682de add some phone rumbling to big explosions, airbomb and sinegun
koda
parents: 4028
diff changeset
    43
    savedGame = NO;
634a8c8682de add some phone rumbling to big explosions, airbomb and sinegun
koda
parents: 4028
diff changeset
    44
    grenadeTime = 2;
4028
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    45
}
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    46
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    47
BOOL inline isGameRunning() {
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    48
    return gameRunning;
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    49
}
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    50
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    51
void inline setGameRunning(BOOL value) {
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    52
    gameRunning = value;
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    53
}
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    54
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    55
NSInteger cachedGrenadeTime() {
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    56
    return grenadeTime;
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    57
}
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    58
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    59
void inline setGrenadeTime(NSInteger value) {
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    60
    grenadeTime = value;
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    61
}
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    62
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    63
#pragma mark -
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    64
#pragma mark functions called by pascal code
5174
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
    65
void startSpinningProgress() {
4028
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    66
    gameRunning = NO;
5174
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
    67
    overlay_instance.lowerIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
    68
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
    69
    CGPoint center = overlay_instance.view.center;
5662
99083392cd4f FREE AT LAST!!! SDL came around a (mostly) sane way for implementing rotation events, so we can scrap all the workaround code that has been added to workaround it!! Also this allows us to use proper (internal) multitasking handling and can simplify optional settings and other yet unexplored features. Yay!
koda
parents: 5194
diff changeset
    70
    overlay_instance.lowerIndicator.center = (IS_DUALHEAD() ? center : CGPointMake(center.x, center.y * 5/3));
5174
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
    71
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
    72
    [overlay_instance.lowerIndicator startAnimating];
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
    73
    [overlay_instance.view addSubview:overlay_instance.lowerIndicator];
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
    74
    [overlay_instance.lowerIndicator 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
5174
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
    77
void stopSpinningProgress() {
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
    78
    [overlay_instance.lowerIndicator stopAnimating];
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
    79
    [overlay_instance.lowerIndicator removeFromSuperview];
4028
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    80
    HW_zoomSet(1.7);
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    81
    if (savedGame == NO)
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    82
        gameRunning = YES;
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    83
}
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    84
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    85
void clearView() {
4504
8906b2409d97 add the appirater class for getting more positive reviews
koda
parents: 4488
diff changeset
    86
    // 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
    87
    [UIView beginAnimations:@"remove button" context:NULL];
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    88
    [UIView setAnimationDuration:ANIMATION_DURATION];
5175
a3da220dbb3f finish overlay refactoring and some leak annihilation
koda
parents: 5174
diff changeset
    89
    overlay_instance.confirmButton.alpha = 0;
a3da220dbb3f finish overlay refactoring and some leak annihilation
koda
parents: 5174
diff changeset
    90
    overlay_instance.grenadeTimeSegment.alpha = 0;
4028
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    91
    [UIView commitAnimations];
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    92
5175
a3da220dbb3f finish overlay refactoring and some leak annihilation
koda
parents: 5174
diff changeset
    93
    if (overlay_instance.confirmButton)
a3da220dbb3f finish overlay refactoring and some leak annihilation
koda
parents: 5174
diff changeset
    94
        [overlay_instance.confirmButton performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:ANIMATION_DURATION];
a3da220dbb3f finish overlay refactoring and some leak annihilation
koda
parents: 5174
diff changeset
    95
    if (overlay_instance.grenadeTimeSegment) {
a3da220dbb3f finish overlay refactoring and some leak annihilation
koda
parents: 5174
diff changeset
    96
        [overlay_instance.grenadeTimeSegment performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:ANIMATION_DURATION];
a3da220dbb3f finish overlay refactoring and some leak annihilation
koda
parents: 5174
diff changeset
    97
        overlay_instance.grenadeTimeSegment.tag = 0;
a3da220dbb3f finish overlay refactoring and some leak annihilation
koda
parents: 5174
diff changeset
    98
    }
4028
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
    99
    grenadeTime = 2;
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
5174
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
   102
void saveBeganSynching() {
5194
851c6fbb44e6 small fix for starting the ios game
koda
parents: 5175
diff changeset
   103
    savedGame = YES;
851c6fbb44e6 small fix for starting the ios game
koda
parents: 5175
diff changeset
   104
    stopSpinningProgress();
5992
a311b8461ec9 prevent screen locking while synching saves (can take some time)
koda
parents: 5662
diff changeset
   105
    [[UIApplication sharedApplication] setIdleTimerDisabled:YES];
5194
851c6fbb44e6 small fix for starting the ios game
koda
parents: 5175
diff changeset
   106
5174
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
   107
    overlay_instance.view.backgroundColor = [UIColor blackColor];
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
   108
    overlay_instance.view.alpha = 0.75;
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
   109
    overlay_instance.view.userInteractionEnabled = NO;
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
   110
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
   111
    overlay_instance.savesIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
4028
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
   112
5662
99083392cd4f FREE AT LAST!!! SDL came around a (mostly) sane way for implementing rotation events, so we can scrap all the workaround code that has been added to workaround it!! Also this allows us to use proper (internal) multitasking handling and can simplify optional settings and other yet unexplored features. Yay!
koda
parents: 5194
diff changeset
   113
    overlay_instance.savesIndicator.center = overlay_instance.view.center;
5174
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
   114
    overlay_instance.savesIndicator.hidesWhenStopped = YES;
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
   115
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
   116
    [overlay_instance.savesIndicator startAnimating];
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
   117
    [overlay_instance.view addSubview:overlay_instance.savesIndicator];
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
   118
    [overlay_instance.savesIndicator release];
4028
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
   119
}
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
   120
5174
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
   121
void saveFinishedSynching() {
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
   122
    [UIView beginAnimations:@"fading from save synch" context:NULL];
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
   123
    [UIView setAnimationDuration:1];
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
   124
    overlay_instance.view.backgroundColor = [UIColor clearColor];
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
   125
    overlay_instance.view.alpha = 1;
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
   126
    overlay_instance.view.userInteractionEnabled = YES;
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
   127
    [UIView commitAnimations];
4028
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
   128
5174
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
   129
    [overlay_instance.savesIndicator stopAnimating];
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
   130
    [overlay_instance.savesIndicator performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:1];
4028
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
   131
5992
a311b8461ec9 prevent screen locking while synching saves (can take some time)
koda
parents: 5662
diff changeset
   132
    [[UIApplication sharedApplication] setIdleTimerDisabled:NO];
4028
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
   133
    gameRunning = YES;
eb371ada631d move functions called by pascal code outside controller
koda
parents:
diff changeset
   134
}
4034
634a8c8682de add some phone rumbling to big explosions, airbomb and sinegun
koda
parents: 4028
diff changeset
   135
634a8c8682de add some phone rumbling to big explosions, airbomb and sinegun
koda
parents: 4028
diff changeset
   136
void updateVisualsNewTurn(void) {
5174
f5294509783e initial refactoring of ObjcExports and OverlayViewController
koda
parents: 5106
diff changeset
   137
    [overlay_instance.amvc updateAmmoVisuals];
4034
634a8c8682de add some phone rumbling to big explosions, airbomb and sinegun
koda
parents: 4028
diff changeset
   138
}
5106
517bdd3865f1 wow we're getting famous http://hg.libsdl.org/SDL/rev/8a04b596b472
koda
parents: 5002
diff changeset
   139
517bdd3865f1 wow we're getting famous http://hg.libsdl.org/SDL/rev/8a04b596b472
koda
parents: 5002
diff changeset
   140
// dummy function to prevent linkage fail
517bdd3865f1 wow we're getting famous http://hg.libsdl.org/SDL/rev/8a04b596b472
koda
parents: 5002
diff changeset
   141
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
   142
    return 0;
517bdd3865f1 wow we're getting famous http://hg.libsdl.org/SDL/rev/8a04b596b472
koda
parents: 5002
diff changeset
   143
}