// // GameHost.m // XNI // // Created by Matej Jan on 20.7.10. // Copyright 2010 Retronator. All rights reserved. // #import "GameHost.h" #import "Retronator.Xni.Framework.h" @implementation GameHost - (id) init { if (self = [super init]) { window = [[GameWindow alloc] init]; } return self; } @synthesize window; - (void) initialize { [window initialize]; } - (void) run { // Hijack the run loop. NSLog(@"Starting the game loop."); game = [self delegate]; SInt32 runResult; while (!isExiting) { // We run a very tight autorelease pool loop. NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; // Handle all the waiting event sources. do { runResult = CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0, YES); } while (runResult == kCFRunLoopRunHandledSource); [game tick]; // We release memory every frame. [pool release]; } } - (void) exit { NSLog(@"Exiting the game loop."); isExiting = YES; } - (void) dealloc { [window release]; [super dealloc]; } @end