diff options
author | Johannes Schickel | 2016-01-07 10:38:31 +0100 |
---|---|---|
committer | Johannes Schickel | 2016-01-07 10:38:31 +0100 |
commit | bd1039b93ef3cb1541e9df91879c704aa894ddd9 (patch) | |
tree | 06aad88a939836932c53c27681507283376ad159 /backends/platform/ios7/iOS7AppDelegate.mm | |
parent | cf5856492c6ce1820339dd76f9d3175f9f457215 (diff) | |
parent | b5ef98637c54a453a6f0ac0ca8c501ceb59924d5 (diff) | |
download | scummvm-rg350-bd1039b93ef3cb1541e9df91879c704aa894ddd9.tar.gz scummvm-rg350-bd1039b93ef3cb1541e9df91879c704aa894ddd9.tar.bz2 scummvm-rg350-bd1039b93ef3cb1541e9df91879c704aa894ddd9.zip |
Merge pull request #630 from bSr43/ios-fix
IOS: Fixes the iOS port
Diffstat (limited to 'backends/platform/ios7/iOS7AppDelegate.mm')
-rw-r--r-- | backends/platform/ios7/iOS7AppDelegate.mm | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/backends/platform/ios7/iOS7AppDelegate.mm b/backends/platform/ios7/iOS7AppDelegate.mm new file mode 100644 index 0000000000..e9908ec146 --- /dev/null +++ b/backends/platform/ios7/iOS7AppDelegate.mm @@ -0,0 +1,95 @@ +// +// Created by Vincent Bénony on 07/12/2015. +// + +#define FORBIDDEN_SYMBOL_ALLOW_ALL +#import "iOS7AppDelegate.h" +#import "iOS7ScummVMViewController.h" +#import "ios7_video.h" + +@implementation iOS7AppDelegate { + UIWindow *_window; + iOS7ScummVMViewController *_controller; + iPhoneView *_view; +} + +- (id)init { + if (self = [super init]) { + _window = nil; + _view = nil; + } + return self; +} + +- (void)mainLoop:(id)param { + @autoreleasepool { + iOS7_main(iOS7_argc, iOS7_argv); + } + + exit(0); +} + +- (void)applicationDidFinishLaunching:(UIApplication *)application { + CGRect rect = [[UIScreen mainScreen] bounds]; + +#ifdef IPHONE_SANDBOXED + // Create the directory for savegames + NSFileManager *fm = [NSFileManager defaultManager]; + NSString *documentPath = [NSString stringWithUTF8String:iOS7_getDocumentsDir()]; + NSString *savePath = [documentPath stringByAppendingPathComponent:@"Savegames"]; + if (![fm fileExistsAtPath:savePath]) { + [fm createDirectoryAtPath:savePath withIntermediateDirectories:YES attributes:nil error:nil]; + } +#endif + + _window = [[UIWindow alloc] initWithFrame:rect]; + [_window retain]; + + _controller = [[iOS7ScummVMViewController alloc] init]; + + _view = [[iPhoneView alloc] initWithFrame:rect]; + _view.multipleTouchEnabled = YES; + _controller.view = _view; + + [_window setRootViewController:_controller]; + [_window makeKeyAndVisible]; + + [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(didRotate:) + name:@"UIDeviceOrientationDidChangeNotification" + object:nil]; + + [NSThread detachNewThreadSelector:@selector(mainLoop:) toTarget:self withObject:nil]; +} + +- (void)applicationWillResignActive:(UIApplication *)application { + [_view applicationSuspend]; +} + +- (void)applicationDidBecomeActive:(UIApplication *)application { + [_view applicationResume]; +} + +- (void)didRotate:(NSNotification *)notification { + UIDeviceOrientation screenOrientation = [[UIDevice currentDevice] orientation]; + [_view deviceOrientationChanged:screenOrientation]; +} + ++ (iOS7AppDelegate *)iOS7AppDelegate { + UIApplication *app = [UIApplication sharedApplication]; + return (iOS7AppDelegate *) app.delegate; +} + ++ (iPhoneView *)iPhoneView { + iOS7AppDelegate *appDelegate = [self iOS7AppDelegate]; + return appDelegate->_view; +} + +@end + +const char *iOS7_getDocumentsDir() { + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); + NSString *documentsDirectory = [paths objectAtIndex:0]; + return [documentsDirectory UTF8String]; +} |