author | Drew Gottlieb |
Sun, 02 Dec 2012 17:23:13 +0100 | |
changeset 8187 | fa725fe25708 |
parent 6908 | 896ed2afcfb8 |
child 10108 | c68cf030eded |
permissions | -rw-r--r-- |
3547 | 1 |
/* |
5017 | 2 |
* Hedgewars-iOS, a Hedgewars port for iOS devices |
6700 | 3 |
* Copyright (c) 2009-2012 Vittorio Giovara <vittorio.giovara@gmail.com> |
5017 | 4 |
* |
5 |
* This program is free software; you can redistribute it and/or modify |
|
6 |
* it under the terms of the GNU General Public License as published by |
|
7 |
* the Free Software Foundation; version 2 of the License |
|
8 |
* |
|
9 |
* This program is distributed in the hope that it will be useful, |
|
10 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 |
* GNU General Public License for more details. |
|
13 |
* |
|
14 |
* You should have received a copy of the GNU General Public License |
|
15 |
* along with this program; if not, write to the Free Software |
|
16 |
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
|
17 |
*/ |
|
3697 | 18 |
|
3547 | 19 |
|
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
|
20 |
#import "HedgewarsAppDelegate.h" |
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:
6017
diff
changeset
|
21 |
#import "MainMenuViewController.h" |
5106
517bdd3865f1
wow we're getting famous http://hg.libsdl.org/SDL/rev/8a04b596b472
koda
parents:
5017
diff
changeset
|
22 |
|
6832 | 23 |
|
5106
517bdd3865f1
wow we're getting famous http://hg.libsdl.org/SDL/rev/8a04b596b472
koda
parents:
5017
diff
changeset
|
24 |
@implementation SDLUIKitDelegate (customDelegate) |
3547 | 25 |
|
6822
206db098f8c5
ios headers cleanup, with tweaks to +randomPort and grenade timer handling in overlay
koda
parents:
6700
diff
changeset
|
26 |
// hijack the the SDL_UIKitAppDelegate to use the UIApplicationDelegate we implement here |
5106
517bdd3865f1
wow we're getting famous http://hg.libsdl.org/SDL/rev/8a04b596b472
koda
parents:
5017
diff
changeset
|
27 |
+(NSString *)getAppDelegateClassName { |
517bdd3865f1
wow we're getting famous http://hg.libsdl.org/SDL/rev/8a04b596b472
koda
parents:
5017
diff
changeset
|
28 |
return @"HedgewarsAppDelegate"; |
3547 | 29 |
} |
30 |
||
5106
517bdd3865f1
wow we're getting famous http://hg.libsdl.org/SDL/rev/8a04b596b472
koda
parents:
5017
diff
changeset
|
31 |
@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
|
32 |
|
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
|
33 |
@implementation HedgewarsAppDelegate |
6624
e049b5bb0ad1
BUUUUURN OBJC AMMOMENU BUUUURNhg diff! (on a separate note, this reduces the codesize by ~37k)
koda
parents:
6362
diff
changeset
|
34 |
@synthesize mainViewController, uiwindow; |
3547 | 35 |
|
5224
6e8fbbfb0de5
muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents:
5206
diff
changeset
|
36 |
#pragma mark - |
6e8fbbfb0de5
muuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuusic for the ios frontend finally
koda
parents:
5206
diff
changeset
|
37 |
#pragma mark AppDelegate methods |
3547 | 38 |
-(id) init { |
6908
896ed2afcfb8
ios: turn on more warning messages and start correcting them
koda
parents:
6869
diff
changeset
|
39 |
if ((self = [super init])) { |
3547 | 40 |
mainViewController = nil; |
3922
44804043b691
iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents:
3898
diff
changeset
|
41 |
uiwindow = nil; |
3547 | 42 |
} |
43 |
return self; |
|
44 |
} |
|
45 |
||
46 |
-(void) dealloc { |
|
47 |
[mainViewController release]; |
|
3922
44804043b691
iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents:
3898
diff
changeset
|
48 |
[uiwindow release]; |
3547 | 49 |
[super dealloc]; |
50 |
} |
|
51 |
||
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
|
52 |
// 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
|
53 |
-(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
|
54 |
[[UIApplication sharedApplication] setStatusBarHidden:YES]; |
3697 | 55 |
|
3922
44804043b691
iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents:
3898
diff
changeset
|
56 |
self.uiwindow = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; |
6822
206db098f8c5
ios headers cleanup, with tweaks to +randomPort and grenade timer handling in overlay
koda
parents:
6700
diff
changeset
|
57 |
self.uiwindow.backgroundColor = [UIColor blackColor]; |
3697 | 58 |
|
5154
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
5109
diff
changeset
|
59 |
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
|
60 |
self.mainViewController = [[MainMenuViewController alloc] initWithNibName:controllerName bundle:nil]; |
3922
44804043b691
iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents:
3898
diff
changeset
|
61 |
[self.uiwindow addSubview:self.mainViewController.view]; |
3659 | 62 |
[self.mainViewController release]; |
6822
206db098f8c5
ios headers cleanup, with tweaks to +randomPort and grenade timer handling in overlay
koda
parents:
6700
diff
changeset
|
63 |
|
3922
44804043b691
iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents:
3898
diff
changeset
|
64 |
[self.uiwindow makeKeyAndVisible]; |
3547 | 65 |
} |
66 |
||
3548
4d220ee7c75f
server somewhat simplified and correct sporadic crasher
koda
parents:
3547
diff
changeset
|
67 |
-(void) applicationDidReceiveMemoryWarning:(UIApplication *)application { |
6208
b831679e9467
move all extra categories in a single source, add caching for HWUtils
koda
parents:
6078
diff
changeset
|
68 |
[HWUtils releaseCache]; |
b831679e9467
move all extra categories in a single source, add caching for HWUtils
koda
parents:
6078
diff
changeset
|
69 |
// don't stop music if it is playing |
6247
6dfad55fd71c
unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents:
6208
diff
changeset
|
70 |
if ([HWUtils isGameLaunched]) { |
6869
a187c280dd3d
ios: convert audio operation from class to instance, plays better with memory
koda
parents:
6832
diff
changeset
|
71 |
[[AudioManagerController mainManager] didReceiveMemoryWarning]; |
6362
ceacd1b61833
modify ReleaseSound so that it performs a partial release of unused sounds, useful for responding to memory warnings
koda
parents:
6337
diff
changeset
|
72 |
HW_memoryWarningCallback(); |
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:
5503
diff
changeset
|
73 |
} |
6208
b831679e9467
move all extra categories in a single source, add caching for HWUtils
koda
parents:
6078
diff
changeset
|
74 |
MSG_MEMCLEAN(); |
3663
8c28abf427f5
reduce the number of keywords used and switch to BMP format for screenshots
koda
parents:
3662
diff
changeset
|
75 |
// don't clean mainMenuViewController here!!! |
3548
4d220ee7c75f
server somewhat simplified and correct sporadic crasher
koda
parents:
3547
diff
changeset
|
76 |
} |
4d220ee7c75f
server somewhat simplified and correct sporadic crasher
koda
parents:
3547
diff
changeset
|
77 |
|
6822
206db098f8c5
ios headers cleanup, with tweaks to +randomPort and grenade timer handling in overlay
koda
parents:
6700
diff
changeset
|
78 |
// true multitasking with SDL works only on 4.2 and above; we close the game to avoid a black screen at return |
3547 | 79 |
-(void) applicationWillResignActive:(UIApplication *)application { |
6247
6dfad55fd71c
unified the objc game state in a single place, which allowed some optimization to ObjcExport class (and more)
koda
parents:
6208
diff
changeset
|
80 |
if ([HWUtils isGameLaunched] && [[[UIDevice currentDevice] systemVersion] floatValue] < 4.2f) |
6822
206db098f8c5
ios headers cleanup, with tweaks to +randomPort and grenade timer handling in overlay
koda
parents:
6700
diff
changeset
|
81 |
HW_terminate(NO); |
5975 | 82 |
|
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:
5503
diff
changeset
|
83 |
[super applicationWillResignActive:application]; |
3547 | 84 |
} |
85 |
||
86 |
@end |