Files
DOOM-IOS2/common/ios/doomengine/iphone_delegate.mm
Jeff Farrand 5b1ff23e0f Initial Commit
2014-01-12 09:48:16 -06:00

226 lines
5.1 KiB
Plaintext
Executable File

/*
Copyright (C) 2009-2011 id Software LLC, a ZeniMax Media company.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#import "iphone_delegate.h"
#import <AudioToolbox/AudioServices.h>
#include "doomiphone.h"
#include "iphone_common.h"
#include "ios/InAppStore.h"
#include "ios/GameCenter.h"
@implementation iphoneApp
@synthesize window;
iphoneApp * gAppDelegate = NULL;
bool inBackgroundProcess = false;
touch_t sysTouches[MAX_TOUCHES];
touch_t gameTouches[MAX_TOUCHES];
#define FRAME_HERTZ 30.0f
const static float ACCELEROMETER_UPDATE_INTERVAL = 1.0f / FRAME_HERTZ;
/*
========================
applicationDidFinishLaunching
========================
*/
- (void)applicationDidFinishLaunching:(UIApplication *)application {
gAppDelegate = self;
inBackgroundProcess = false;
hasPushedGLView = NO;
// Create the window programmatically instead of loading from a nib file.
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Disable Screen Dimming.
[[ UIApplication sharedApplication] setIdleTimerDisabled: YES ];
// Initial Application Style config.
[ application setStatusBarHidden: YES ];
// start the flow of accelerometer events
UIAccelerometer *accelerometer = [UIAccelerometer sharedAccelerometer];
[ accelerometer setDelegate: self ];
[ accelerometer setUpdateInterval: ACCELEROMETER_UPDATE_INTERVAL ];
[self InitializeInterfaceBuilder ];
CommonSystemSetup( [navigationController topViewController] );
// do all the game startup work
iphoneStartup();
UIView * view = navigationController.view;
[window addSubview: view];
[window setRootViewController:navigationController];
[window setBackgroundColor: [UIColor blackColor] ];
[window makeKeyAndVisible];
}
/*
========================
applicationWillResignActive
========================
*/
- (void)applicationWillResignActive:(UIApplication *)application {
inBackgroundProcess = YES;
idGameCenter::HandleMoveToBackground();
// If we're in a multiplater game, and showing the OpenGL view,
// go back to the main menu since the multiplayer game is hosed.
if ( netgame && navigationController.topViewController == gAppDelegate->openGLViewController ) {
iphoneMainMenu();
}
iphonePauseMusic();
iphoneShutdown();
}
/*
========================
applicationDidBecomeActive
========================
*/
- (void)applicationDidBecomeActive:(UIApplication *)application {
inBackgroundProcess = NO;
}
/*
========================
applicationWillTerminate
========================
*/
- (void)applicationWillTerminate:(UIApplication *)application {
iphoneStopMusic();
iphoneShutdown();
}
/*
========================
applicationDidReceiveMemoryWarning
========================
*/
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
Com_Printf( "applicationDidReceiveMemoryWarning\n" );
}
/*
========================
dealloc
========================
*/
- (void)dealloc {
[window release];
[super dealloc];
}
/*
========================
accelerometer
========================
*/
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{
float acc[4];
acc[0] = acceleration.x;
acc[1] = acceleration.y;
acc[2] = acceleration.z;
acc[3] = acceleration.timestamp;
iphoneTiltEvent( acc );
}
/*
========================
HACK_PushController - Removes Flicker from Loading Wads.
God forgive me.
========================
*/
- (void) HACK_PushController {
[navigationController pushViewController:openGLViewController animated:NO];
}
/*
========================
ShowGLView
========================
*/
- (void)ShowGLView {
if( hasPushedGLView == NO ) {
hasPushedGLView = YES;
// Hack city.
[NSTimer scheduledTimerWithTimeInterval:0.2f target:self selector:@selector(HACK_PushController) userInfo:nil repeats:NO];
[ openGLViewController StartDisplay ];
}
}
/*
========================
HideGLView
========================
*/
- (void) HideGLView {
[ navigationController popToRootViewControllerAnimated:NO ];
hasPushedGLView = NO;
}
/*
========================
PopGLView
========================
*/
- (void) PopGLView {
[ navigationController popViewControllerAnimated:NO];
hasPushedGLView = NO;
}
/*
========================
InitializeInterfaceBuilder
========================
*/
- (void) InitializeInterfaceBuilder {
}
@end
void ShowGLView( void ) {
[ gAppDelegate ShowGLView ];
}