aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/ios7/iOS7AppDelegate.mm
diff options
context:
space:
mode:
authorJohannes Schickel2016-01-07 10:38:31 +0100
committerJohannes Schickel2016-01-07 10:38:31 +0100
commitbd1039b93ef3cb1541e9df91879c704aa894ddd9 (patch)
tree06aad88a939836932c53c27681507283376ad159 /backends/platform/ios7/iOS7AppDelegate.mm
parentcf5856492c6ce1820339dd76f9d3175f9f457215 (diff)
parentb5ef98637c54a453a6f0ac0ca8c501ceb59924d5 (diff)
downloadscummvm-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.mm95
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];
+}