project_files/HedgewarsMobile/Classes/HedgewarsAppDelegate.m
author koda
Sun, 24 Jul 2011 19:14:56 +0200
changeset 5451 e359a79e3d08
parent 5224 6e8fbbfb0de5
child 5483 fc755bb8096d
permissions -rw-r--r--
rip out the sync weapons/schemes switch and place it into settings; also perform some runtime check on what can be enabled
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
#import "Appirater.h"
8906b2409d97 add the appirater class for getting more positive reviews
koda
parents: 4454
diff changeset
    29
#include <unistd.h>
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    30
5106
517bdd3865f1 wow we're getting famous http://hg.libsdl.org/SDL/rev/8a04b596b472
koda
parents: 5017
diff changeset
    31
517bdd3865f1 wow we're getting famous http://hg.libsdl.org/SDL/rev/8a04b596b472
koda
parents: 5017
diff changeset
    32
@implementation SDLUIKitDelegate (customDelegate)
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    33
5106
517bdd3865f1 wow we're getting famous http://hg.libsdl.org/SDL/rev/8a04b596b472
koda
parents: 5017
diff changeset
    34
+(NSString *)getAppDelegateClassName {
517bdd3865f1 wow we're getting famous http://hg.libsdl.org/SDL/rev/8a04b596b472
koda
parents: 5017
diff changeset
    35
    return @"HedgewarsAppDelegate";
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    36
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    37
5106
517bdd3865f1 wow we're getting famous http://hg.libsdl.org/SDL/rev/8a04b596b472
koda
parents: 5017
diff changeset
    38
@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
    39
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
    40
@implementation HedgewarsAppDelegate
5224
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    41
@synthesize mainViewController, uiwindow, secondWindow, isInGame, backgroundMusic;
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    42
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    43
// 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
    44
+(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
    45
    return (HedgewarsAppDelegate *)[[UIApplication sharedApplication] delegate];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    46
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    47
5224
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    48
#pragma mark -
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    49
#pragma mark Music control
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    50
+(void) playBackgroundMusic {
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    51
    if ([HedgewarsAppDelegate sharedAppDelegate].backgroundMusic == nil)
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    52
        [HedgewarsAppDelegate loadBackgroundMusic];
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    53
    [[HedgewarsAppDelegate sharedAppDelegate].backgroundMusic play];
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
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    56
+(void) pauseBackgroundMusic {
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    57
    [[HedgewarsAppDelegate sharedAppDelegate].backgroundMusic pause];
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
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    60
+(void) stopBackgroundMusic {
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    61
    [[HedgewarsAppDelegate sharedAppDelegate].backgroundMusic stop];
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
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    64
+(void) loadBackgroundMusic {
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    65
    NSString *musicString = [[NSBundle mainBundle] pathForResource:@"hwclassic" ofType:@"mp3"];
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    66
    AVAudioPlayer *background = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:musicString] error:nil];
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    67
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    68
    background.delegate = nil;
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    69
    background.volume = 0.5f;
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    70
    background.numberOfLoops = -1;
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    71
    [background prepareToPlay];
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    72
    [HedgewarsAppDelegate sharedAppDelegate].backgroundMusic = background;
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    73
    [background release];
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
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    76
#pragma mark -
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    77
#pragma mark AppDelegate methods
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    78
-(id) init {
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    79
    if (self = [super init]){
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    80
        mainViewController = nil;
3922
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
    81
        uiwindow = nil;
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
    82
        secondWindow = nil;
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    83
        isInGame = NO;
5224
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    84
        backgroundMusic = nil;
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    85
    }
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    86
    return self;
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    87
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    88
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    89
-(void) dealloc {
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    90
    [mainViewController release];
3922
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
    91
    [uiwindow release];
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
    92
    [secondWindow release];
5224
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
    93
    [backgroundMusic release];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    94
    [super dealloc];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    95
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    96
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
    97
// 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
    98
-(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
    99
    [[UIApplication sharedApplication] setStatusBarHidden:YES];
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
   100
    [Appirater appLaunched];
3697
d5b30d6373fc remove trailing spaces from end of line
koda
parents: 3668
diff changeset
   101
3922
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
   102
    self.uiwindow = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
3697
d5b30d6373fc remove trailing spaces from end of line
koda
parents: 3668
diff changeset
   103
5154
851f36579ed4 initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents: 5109
diff changeset
   104
    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
   105
    self.mainViewController = [[MainMenuViewController alloc] initWithNibName:controllerName bundle:nil];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   106
3922
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
   107
    [self.uiwindow addSubview:self.mainViewController.view];
3659
f8d5ac50e307 half reworking of the settings page with delegation
koda
parents: 3650
diff changeset
   108
    [self.mainViewController release];
3922
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
   109
    self.uiwindow.backgroundColor = [UIColor blackColor];
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
   110
    [self.uiwindow makeKeyAndVisible];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   111
3935
5ca27a0e9a63 made the new menu toggable
koda
parents: 3922
diff changeset
   112
    // check for dual monitor support
3941
017b2b31e1c6 integrate nicely with external display
koda
parents: 3940
diff changeset
   113
    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
   114
        DLog(@"Dualhead mode");
3922
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
   115
        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
   116
        self.secondWindow.backgroundColor = [UIColor blackColor];
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
   117
        self.secondWindow.screen = [[UIScreen screens] objectAtIndex:1];
3935
5ca27a0e9a63 made the new menu toggable
koda
parents: 3922
diff changeset
   118
        UIImage *titleImage = [UIImage imageWithContentsOfFile:@"title.png"];
3922
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
   119
        UIImageView *titleView = [[UIImageView alloc] initWithImage:titleImage];
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
   120
        titleView.center = self.secondWindow.center;
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
   121
        [self.secondWindow addSubview:titleView];
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
   122
        [titleView release];
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
   123
        [self.secondWindow makeKeyAndVisible];
44804043b691 iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents: 3898
diff changeset
   124
    }
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   125
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   126
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   127
-(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
   128
    if (self.isInGame)
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   129
        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
   130
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
   131
    [super applicationWillTerminate:application];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   132
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   133
3548
4d220ee7c75f server somewhat simplified and correct sporadic crasher
koda
parents: 3547
diff changeset
   134
-(void) applicationDidReceiveMemoryWarning:(UIApplication *)application {
3663
8c28abf427f5 reduce the number of keywords used and switch to BMP format for screenshots
koda
parents: 3662
diff changeset
   135
    // don't clean mainMenuViewController here!!!
5224
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
   136
    [self.backgroundMusic stop];
6e8fbbfb0de5 muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents: 5206
diff changeset
   137
    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
   138
    MSG_MEMCLEAN();
3661
2378ada8a6ee i can haz panning
koda
parents: 3660
diff changeset
   139
    print_free_memory();
3548
4d220ee7c75f server somewhat simplified and correct sporadic crasher
koda
parents: 3547
diff changeset
   140
}
4d220ee7c75f server somewhat simplified and correct sporadic crasher
koda
parents: 3547
diff changeset
   141
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
   142
//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
   143
// 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
   144
// 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
   145
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   146
-(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
   147
    //[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
   148
4454
42bfc1a70968 more retina support and multitasking support
koda
parents: 4356
diff changeset
   149
    UIDevice* device = [UIDevice currentDevice];
42bfc1a70968 more retina support and multitasking support
koda
parents: 4356
diff changeset
   150
    if ([device respondsToSelector:@selector(isMultitaskingSupported)] &&
42bfc1a70968 more retina support and multitasking support
koda
parents: 4356
diff changeset
   151
         device.multitaskingSupported &&
42bfc1a70968 more retina support and multitasking support
koda
parents: 4356
diff changeset
   152
         self.isInGame) {
4540
9b614e420de5 add two preferences for enabling/disabling blurry land and multitasking
koda
parents: 4510
diff changeset
   153
        // let's try to be permissive with multitasking here...
5206
db775bddf771 settings.plist is no more, long live nsuserdefaults
koda
parents: 5166
diff changeset
   154
        if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"multitasking"] boolValue])
4454
42bfc1a70968 more retina support and multitasking support
koda
parents: 4356
diff changeset
   155
            HW_suspend();
42bfc1a70968 more retina support and multitasking support
koda
parents: 4356
diff changeset
   156
        else {
4504
8906b2409d97 add the appirater class for getting more positive reviews
koda
parents: 4454
diff changeset
   157
            // so the game returns to the configuration view
4454
42bfc1a70968 more retina support and multitasking support
koda
parents: 4356
diff changeset
   158
            if (isGameRunning())
42bfc1a70968 more retina support and multitasking support
koda
parents: 4356
diff changeset
   159
                HW_terminate(NO);
42bfc1a70968 more retina support and multitasking support
koda
parents: 4356
diff changeset
   160
            else {
4504
8906b2409d97 add the appirater class for getting more positive reviews
koda
parents: 4454
diff changeset
   161
                // 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
   162
                [self applicationWillTerminate:application];
4454
42bfc1a70968 more retina support and multitasking support
koda
parents: 4356
diff changeset
   163
            }
3547
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
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   167
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   168
-(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
   169
    //[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
   170
4454
42bfc1a70968 more retina support and multitasking support
koda
parents: 4356
diff changeset
   171
    UIDevice* device = [UIDevice currentDevice];
42bfc1a70968 more retina support and multitasking support
koda
parents: 4356
diff changeset
   172
    if ([device respondsToSelector:@selector(isMultitaskingSupported)] &&
42bfc1a70968 more retina support and multitasking support
koda
parents: 4356
diff changeset
   173
         device.multitaskingSupported &&
42bfc1a70968 more retina support and multitasking support
koda
parents: 4356
diff changeset
   174
         self.isInGame) {
42bfc1a70968 more retina support and multitasking support
koda
parents: 4356
diff changeset
   175
        HW_resume();
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   176
    }
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   177
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   178
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   179
@end