project_files/HedgewarsMobile/Classes/HedgewarsAppDelegate.m
author koda
Mon, 01 Aug 2011 00:48:38 +0200
changeset 5486 e75f7c3c6275
parent 5483 fc755bb8096d
child 5503 d8632f589008
permissions -rw-r--r--
ios: this should prevent at least one of the crashes zorg spotted; also added some callbacks in SDLh; also polished project file (from -O2 to -Os)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
     1
/*
5017
d29cf06d7d11 update headers a bit
koda
parents: 5002
diff changeset
     2
 * Hedgewars-iOS, a Hedgewars port for iOS devices
d29cf06d7d11 update headers a bit
koda
parents: 5002
diff changeset
     3
 * Copyright (c) 2009-2011 Vittorio Giovara <vittorio.giovara@gmail.com>
d29cf06d7d11 update headers a bit
koda
parents: 5002
diff changeset
     4
 *
d29cf06d7d11 update headers a bit
koda
parents: 5002
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
d29cf06d7d11 update headers a bit
koda
parents: 5002
diff changeset
     6
 * it under the terms of the GNU General Public License as published by
d29cf06d7d11 update headers a bit
koda
parents: 5002
diff changeset
     7
 * the Free Software Foundation; version 2 of the License
d29cf06d7d11 update headers a bit
koda
parents: 5002
diff changeset
     8
 *
d29cf06d7d11 update headers a bit
koda
parents: 5002
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
d29cf06d7d11 update headers a bit
koda
parents: 5002
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
d29cf06d7d11 update headers a bit
koda
parents: 5002
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
d29cf06d7d11 update headers a bit
koda
parents: 5002
diff changeset
    12
 * GNU General Public License for more details.
d29cf06d7d11 update headers a bit
koda
parents: 5002
diff changeset
    13
 *
d29cf06d7d11 update headers a bit
koda
parents: 5002
diff changeset
    14
 * You should have received a copy of the GNU General Public License
d29cf06d7d11 update headers a bit
koda
parents: 5002
diff changeset
    15
 * along with this program; if not, write to the Free Software
d29cf06d7d11 update headers a bit
koda
parents: 5002
diff changeset
    16
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
d29cf06d7d11 update headers a bit
koda
parents: 5002
diff changeset
    17
 *
d29cf06d7d11 update headers a bit
koda
parents: 5002
diff changeset
    18
 * File created on 13/03/2011.
d29cf06d7d11 update headers a bit
koda
parents: 5002
diff changeset
    19
 */
3697
d5b30d6373fc remove trailing spaces from end of line
koda
parents: 3668
diff changeset
    20
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    21
5002
a9c44a8ffec8 we get our own AppDelegate, subclassing SDL_UikitAppDelegate so that we don't have to mess with sdl build system
koda
parents: 4976
diff changeset
    22
#import "HedgewarsAppDelegate.h"
3668
3f7a95234d8a tap to play piano notes, fix for audio and pause glitch
koda
parents: 3663
diff changeset
    23
#import "PascalImports.h"
4454
42bfc1a70968 more retina support and multitasking support
koda
parents: 4356
diff changeset
    24
#import "ObjcExports.h"
3668
3f7a95234d8a tap to play piano notes, fix for audio and pause glitch
koda
parents: 3663
diff changeset
    25
#import "CommodityFunctions.h"
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    26
#import "MainMenuViewController.h"
5224
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    27
#import "AVFoundation/AVAudioPlayer.h"
4504
8906b2409d97 add the appirater class for getting more positive reviews
koda
parents: 4454
diff changeset
    28
#include <unistd.h>
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    29
5106
517bdd3865f1 wow we're getting famous http://hg.libsdl.org/SDL/rev/8a04b596b472
koda
parents: 5017
diff changeset
    30
517bdd3865f1 wow we're getting famous http://hg.libsdl.org/SDL/rev/8a04b596b472
koda
parents: 5017
diff changeset
    31
@implementation SDLUIKitDelegate (customDelegate)
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    32
5106
517bdd3865f1 wow we're getting famous http://hg.libsdl.org/SDL/rev/8a04b596b472
koda
parents: 5017
diff changeset
    33
+(NSString *)getAppDelegateClassName {
517bdd3865f1 wow we're getting famous http://hg.libsdl.org/SDL/rev/8a04b596b472
koda
parents: 5017
diff changeset
    34
    return @"HedgewarsAppDelegate";
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    35
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    36
5106
517bdd3865f1 wow we're getting famous http://hg.libsdl.org/SDL/rev/8a04b596b472
koda
parents: 5017
diff changeset
    37
@end
5002
a9c44a8ffec8 we get our own AppDelegate, subclassing SDL_UikitAppDelegate so that we don't have to mess with sdl build system
koda
parents: 4976
diff changeset
    38
a9c44a8ffec8 we get our own AppDelegate, subclassing SDL_UikitAppDelegate so that we don't have to mess with sdl build system
koda
parents: 4976
diff changeset
    39
@implementation HedgewarsAppDelegate
5224
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    40
@synthesize mainViewController, uiwindow, secondWindow, isInGame, backgroundMusic;
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    41
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    42
// convenience method
5002
a9c44a8ffec8 we get our own AppDelegate, subclassing SDL_UikitAppDelegate so that we don't have to mess with sdl build system
koda
parents: 4976
diff changeset
    43
+(HedgewarsAppDelegate *)sharedAppDelegate {
a9c44a8ffec8 we get our own AppDelegate, subclassing SDL_UikitAppDelegate so that we don't have to mess with sdl build system
koda
parents: 4976
diff changeset
    44
    return (HedgewarsAppDelegate *)[[UIApplication sharedApplication] delegate];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    45
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    46
5224
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    47
#pragma mark -
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    48
#pragma mark Music control
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    49
+(void) playBackgroundMusic {
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    50
    if ([HedgewarsAppDelegate sharedAppDelegate].backgroundMusic == nil)
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    51
        [HedgewarsAppDelegate loadBackgroundMusic];
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    52
    [[HedgewarsAppDelegate sharedAppDelegate].backgroundMusic play];
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    53
}
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    54
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    55
+(void) pauseBackgroundMusic {
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    56
    [[HedgewarsAppDelegate sharedAppDelegate].backgroundMusic pause];
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    57
}
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    58
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    59
+(void) stopBackgroundMusic {
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    60
    [[HedgewarsAppDelegate sharedAppDelegate].backgroundMusic stop];
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    61
}
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    62
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    63
+(void) loadBackgroundMusic {
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    64
    NSString *musicString = [[NSBundle mainBundle] pathForResource:@"hwclassic" ofType:@"mp3"];
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    65
    AVAudioPlayer *background = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:musicString] error:nil];
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    66
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    67
    background.delegate = nil;
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    68
    background.volume = 0.5f;
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    69
    background.numberOfLoops = -1;
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    70
    [background prepareToPlay];
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    71
    [HedgewarsAppDelegate sharedAppDelegate].backgroundMusic = background;
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    72
    [background release];
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    73
}
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    74
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    75
#pragma mark -
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    76
#pragma mark AppDelegate methods
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    77
-(id) init {
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    78
    if (self = [super init]){
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    79
        mainViewController = nil;
3922
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
    80
        uiwindow = nil;
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
    81
        secondWindow = nil;
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    82
        isInGame = NO;
5224
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    83
        backgroundMusic = nil;
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    84
    }
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    85
    return self;
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    86
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    87
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    88
-(void) dealloc {
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    89
    [mainViewController release];
3922
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
    90
    [uiwindow release];
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
    91
    [secondWindow release];
5224
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    92
    [backgroundMusic release];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    93
    [super dealloc];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    94
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    95
5002
a9c44a8ffec8 we get our own AppDelegate, subclassing SDL_UikitAppDelegate so that we don't have to mess with sdl build system
koda
parents: 4976
diff changeset
    96
// override the direct execution of SDL_main to allow us to implement our own frontend
a9c44a8ffec8 we get our own AppDelegate, subclassing SDL_UikitAppDelegate so that we don't have to mess with sdl build system
koda
parents: 4976
diff changeset
    97
-(void) postFinishLaunch {
a9c44a8ffec8 we get our own AppDelegate, subclassing SDL_UikitAppDelegate so that we don't have to mess with sdl build system
koda
parents: 4976
diff changeset
    98
    [[UIApplication sharedApplication] setStatusBarHidden:YES];
3697
d5b30d6373fc remove trailing spaces from end of line
koda
parents: 3668
diff changeset
    99
3922
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
   100
    self.uiwindow = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
3697
d5b30d6373fc remove trailing spaces from end of line
koda
parents: 3668
diff changeset
   101
5154
851f36579ed4 initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents: 5109
diff changeset
   102
    NSString *controllerName = (IS_IPAD() ? @"MainMenuViewController-iPad" : @"MainMenuViewController-iPhone");
851f36579ed4 initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents: 5109
diff changeset
   103
    self.mainViewController = [[MainMenuViewController alloc] initWithNibName:controllerName bundle:nil];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   104
3922
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
   105
    [self.uiwindow addSubview:self.mainViewController.view];
3659
f8d5ac50e307 half reworking of the settings page with delegation
koda
parents: 3650
diff changeset
   106
    [self.mainViewController release];
3922
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
   107
    self.uiwindow.backgroundColor = [UIColor blackColor];
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
   108
    [self.uiwindow makeKeyAndVisible];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   109
3935
5ca27a0e9a63 made the new menu toggable
koda
parents: 3922
diff changeset
   110
    // check for dual monitor support
3941
017b2b31e1c6 integrate nicely with external display
koda
parents: 3940
diff changeset
   111
    if (IS_DUALHEAD()) {
5154
851f36579ed4 initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents: 5109
diff changeset
   112
        DLog(@"Dualhead mode");
3922
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
   113
        self.secondWindow = [[UIWindow alloc] initWithFrame:[[[UIScreen screens] objectAtIndex:1] bounds]];
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
   114
        self.secondWindow.backgroundColor = [UIColor blackColor];
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
   115
        self.secondWindow.screen = [[UIScreen screens] objectAtIndex:1];
3935
5ca27a0e9a63 made the new menu toggable
koda
parents: 3922
diff changeset
   116
        UIImage *titleImage = [UIImage imageWithContentsOfFile:@"title.png"];
3922
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
   117
        UIImageView *titleView = [[UIImageView alloc] initWithImage:titleImage];
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
   118
        titleView.center = self.secondWindow.center;
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
   119
        [self.secondWindow addSubview:titleView];
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
   120
        [titleView release];
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
   121
        [self.secondWindow makeKeyAndVisible];
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
   122
    }
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   123
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   124
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   125
-(void) applicationWillTerminate:(UIApplication *)application {
5002
a9c44a8ffec8 we get our own AppDelegate, subclassing SDL_UikitAppDelegate so that we don't have to mess with sdl build system
koda
parents: 4976
diff changeset
   126
    if (self.isInGame)
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   127
        HW_terminate(YES);
5002
a9c44a8ffec8 we get our own AppDelegate, subclassing SDL_UikitAppDelegate so that we don't have to mess with sdl build system
koda
parents: 4976
diff changeset
   128
a9c44a8ffec8 we get our own AppDelegate, subclassing SDL_UikitAppDelegate so that we don't have to mess with sdl build system
koda
parents: 4976
diff changeset
   129
    [super applicationWillTerminate:application];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   130
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   131
3548
4d220ee7c75f server somewhat simplified and correct sporadic crasher
koda
parents: 3547
diff changeset
   132
-(void) applicationDidReceiveMemoryWarning:(UIApplication *)application {
3663
8c28abf427f5 reduce the number of keywords used and switch to BMP format for screenshots
koda
parents: 3662
diff changeset
   133
    // don't clean mainMenuViewController here!!!
5224
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
   134
    [self.backgroundMusic stop];
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
   135
    self.backgroundMusic = nil;
3662
a44406f4369b polish polish polish polish (also: panning horizontal fix, panning momentum, settings page reworked yet again, memory leaks, crashes, segfaults)
koda
parents: 3661
diff changeset
   136
    MSG_MEMCLEAN();
3661
2378ada8a6ee i can haz panning
koda
parents: 3660
diff changeset
   137
    print_free_memory();
3548
4d220ee7c75f server somewhat simplified and correct sporadic crasher
koda
parents: 3547
diff changeset
   138
}
4d220ee7c75f server somewhat simplified and correct sporadic crasher
koda
parents: 3547
diff changeset
   139
5109
6d2e8a24277e strangely enough, the new sdl rotation code is incompatible with our system... this is a workaround that should hold up until their code becomes more stable
koda
parents: 5106
diff changeset
   140
//TODO: when the SDLUIKitDelegate methods applicationWillResignActive and applicationDidBecomeActive do work
6d2e8a24277e strangely enough, the new sdl rotation code is incompatible with our system... this is a workaround that should hold up until their code becomes more stable
koda
parents: 5106
diff changeset
   141
// you'll be able to remove the methods below and just handle the SDL_WINDOWEVENT_MINIMIZED/SDL_WINDOWEVENT_RESTORED
6d2e8a24277e strangely enough, the new sdl rotation code is incompatible with our system... this is a workaround that should hold up until their code becomes more stable
koda
parents: 5106
diff changeset
   142
// events in the MainLoop
6d2e8a24277e strangely enough, the new sdl rotation code is incompatible with our system... this is a workaround that should hold up until their code becomes more stable
koda
parents: 5106
diff changeset
   143
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   144
-(void) applicationWillResignActive:(UIApplication *)application {
5109
6d2e8a24277e strangely enough, the new sdl rotation code is incompatible with our system... this is a workaround that should hold up until their code becomes more stable
koda
parents: 5106
diff changeset
   145
    //[super applicationWillResignActive:application];
5002
a9c44a8ffec8 we get our own AppDelegate, subclassing SDL_UikitAppDelegate so that we don't have to mess with sdl build system
koda
parents: 4976
diff changeset
   146
4454
42bfc1a70968 more retina support and multitasking support
koda
parents: 4356
diff changeset
   147
    UIDevice* device = [UIDevice currentDevice];
42bfc1a70968 more retina support and multitasking support
koda
parents: 4356
diff changeset
   148
    if ([device respondsToSelector:@selector(isMultitaskingSupported)] &&
42bfc1a70968 more retina support and multitasking support
koda
parents: 4356
diff changeset
   149
         device.multitaskingSupported &&
42bfc1a70968 more retina support and multitasking support
koda
parents: 4356
diff changeset
   150
         self.isInGame) {
4540
9b614e420de5 add two preferences for enabling/disabling blurry land and multitasking
koda
parents: 4510
diff changeset
   151
        // let's try to be permissive with multitasking here...
5206
db775bddf771 settings.plist is no more, long live nsuserdefaults
koda
parents: 5166
diff changeset
   152
        if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"multitasking"] boolValue])
4454
42bfc1a70968 more retina support and multitasking support
koda
parents: 4356
diff changeset
   153
            HW_suspend();
42bfc1a70968 more retina support and multitasking support
koda
parents: 4356
diff changeset
   154
        else {
4504
8906b2409d97 add the appirater class for getting more positive reviews
koda
parents: 4454
diff changeset
   155
            // so the game returns to the configuration view
4454
42bfc1a70968 more retina support and multitasking support
koda
parents: 4356
diff changeset
   156
            if (isGameRunning())
42bfc1a70968 more retina support and multitasking support
koda
parents: 4356
diff changeset
   157
                HW_terminate(NO);
42bfc1a70968 more retina support and multitasking support
koda
parents: 4356
diff changeset
   158
            else {
4504
8906b2409d97 add the appirater class for getting more positive reviews
koda
parents: 4454
diff changeset
   159
                // while screen is loading you can't call HW_terminate() so we close the app
5002
a9c44a8ffec8 we get our own AppDelegate, subclassing SDL_UikitAppDelegate so that we don't have to mess with sdl build system
koda
parents: 4976
diff changeset
   160
                [self applicationWillTerminate:application];
4454
42bfc1a70968 more retina support and multitasking support
koda
parents: 4356
diff changeset
   161
            }
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   162
        }
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   163
    }
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   164
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   165
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   166
-(void) applicationDidBecomeActive:(UIApplication *)application {
5109
6d2e8a24277e strangely enough, the new sdl rotation code is incompatible with our system... this is a workaround that should hold up until their code becomes more stable
koda
parents: 5106
diff changeset
   167
    //[super applicationDidBecomeActive:application];
5002
a9c44a8ffec8 we get our own AppDelegate, subclassing SDL_UikitAppDelegate so that we don't have to mess with sdl build system
koda
parents: 4976
diff changeset
   168
4454
42bfc1a70968 more retina support and multitasking support
koda
parents: 4356
diff changeset
   169
    UIDevice* device = [UIDevice currentDevice];
42bfc1a70968 more retina support and multitasking support
koda
parents: 4356
diff changeset
   170
    if ([device respondsToSelector:@selector(isMultitaskingSupported)] &&
42bfc1a70968 more retina support and multitasking support
koda
parents: 4356
diff changeset
   171
         device.multitaskingSupported &&
42bfc1a70968 more retina support and multitasking support
koda
parents: 4356
diff changeset
   172
         self.isInGame) {
42bfc1a70968 more retina support and multitasking support
koda
parents: 4356
diff changeset
   173
        HW_resume();
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   174
    }
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   175
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   176
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   177
@end