author | unC0Rr |
Mon, 20 May 2024 14:58:30 +0200 | |
changeset 16045 | 4933920eba89 |
parent 12872 | 00215a7ec5f5 |
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 |
|
10108
c68cf030eded
update FSF address. note: two sdl include files (by Sam Lantinga) still have the old FSF address in their copyright - but I ain't gonna touch their copyright headers
sheepluva
parents:
6908
diff
changeset
|
16 |
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
5017 | 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" |
11309 | 22 |
#import "Appirater.h" |
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 |
12872
00215a7ec5f5
- BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents:
11309
diff
changeset
|
27 |
+ (NSString *)getAppDelegateClassName { |
5106
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 |
12872
00215a7ec5f5
- BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents:
11309
diff
changeset
|
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 |
||
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
|
47 |
// override the direct execution of SDL_main to allow us to implement our own frontend |
12872
00215a7ec5f5
- BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents:
11309
diff
changeset
|
48 |
- (void)postFinishLaunch |
11309 | 49 |
{ |
50 |
// Setup Appirater |
|
51 |
[Appirater setAppId:@"391234866"]; |
|
52 |
[Appirater setDaysUntilPrompt:3]; |
|
53 |
[Appirater setUsesUntilPrompt:5]; |
|
54 |
[Appirater setSignificantEventsUntilPrompt:-1]; |
|
55 |
[Appirater setTimeBeforeReminding:1]; |
|
56 |
//[Appirater setDebug:YES]; |
|
57 |
||
11105
379226b854ae
- Fix for hiding launch window after launch and not blocking SDL window on engine anymore
antonc27 <antonc27@mail.ru>
parents:
11097
diff
changeset
|
58 |
[self performSelector:@selector(hideLaunchScreen) withObject:nil afterDelay:0.0]; |
11097 | 59 |
|
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
|
60 |
[[UIApplication sharedApplication] setStatusBarHidden:YES]; |
3697 | 61 |
|
3922
44804043b691
iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents:
3898
diff
changeset
|
62 |
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
|
63 |
self.uiwindow.backgroundColor = [UIColor blackColor]; |
3697 | 64 |
|
5154
851f36579ed4
initial refactoring for interfacing the game engine from the ios frontend (game doesn't run yet)
koda
parents:
5109
diff
changeset
|
65 |
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
|
66 |
self.mainViewController = [[MainMenuViewController alloc] initWithNibName:controllerName bundle:nil]; |
11114
6a0bd9c6cc82
- Fix for main view orientation problems
antonc27 <antonc27@mail.ru>
parents:
11105
diff
changeset
|
67 |
self.uiwindow.rootViewController = self.mainViewController; |
6822
206db098f8c5
ios headers cleanup, with tweaks to +randomPort and grenade timer handling in overlay
koda
parents:
6700
diff
changeset
|
68 |
|
3922
44804043b691
iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents:
3898
diff
changeset
|
69 |
[self.uiwindow makeKeyAndVisible]; |
3547 | 70 |
} |
71 |
||
12872
00215a7ec5f5
- BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents:
11309
diff
changeset
|
72 |
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { |
6208
b831679e9467
move all extra categories in a single source, add caching for HWUtils
koda
parents:
6078
diff
changeset
|
73 |
[HWUtils releaseCache]; |
b831679e9467
move all extra categories in a single source, add caching for HWUtils
koda
parents:
6078
diff
changeset
|
74 |
// 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
|
75 |
if ([HWUtils isGameLaunched]) { |
6869
a187c280dd3d
ios: convert audio operation from class to instance, plays better with memory
koda
parents:
6832
diff
changeset
|
76 |
[[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
|
77 |
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
|
78 |
} |
6208
b831679e9467
move all extra categories in a single source, add caching for HWUtils
koda
parents:
6078
diff
changeset
|
79 |
MSG_MEMCLEAN(); |
3663
8c28abf427f5
reduce the number of keywords used and switch to BMP format for screenshots
koda
parents:
3662
diff
changeset
|
80 |
// don't clean mainMenuViewController here!!! |
3548
4d220ee7c75f
server somewhat simplified and correct sporadic crasher
koda
parents:
3547
diff
changeset
|
81 |
} |
4d220ee7c75f
server somewhat simplified and correct sporadic crasher
koda
parents:
3547
diff
changeset
|
82 |
|
6822
206db098f8c5
ios headers cleanup, with tweaks to +randomPort and grenade timer handling in overlay
koda
parents:
6700
diff
changeset
|
83 |
// true multitasking with SDL works only on 4.2 and above; we close the game to avoid a black screen at return |
12872
00215a7ec5f5
- BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents:
11309
diff
changeset
|
84 |
- (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
|
85 |
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
|
86 |
HW_terminate(NO); |
5975 | 87 |
|
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
|
88 |
[super applicationWillResignActive:application]; |
3547 | 89 |
} |
90 |
||
91 |
@end |