Exemplo n.º 1
0
int main( int argc, char * argv[] )
{	
	int displayWidth = DisplayWidth;
	int displayHeight = DisplayHeight;
	
	if ( !OpenDisplay( "Fiedler's Cubes", displayWidth, displayHeight ) )
	{
		printf( "failed to open display!\n" );
		return 1;
	}
	
	HideMouseCursor();
	
	int currentDemo = 0;
	Demo * demo = CreateDemo( 0, displayWidth, displayHeight );
	assert( demo );
	demo->Initialize();
	
	bool shadows = true;
	
	while ( true )
	{
		platform::Input input = platform::Input::Sample();
		
		if ( input.alt )
		{
			int demoIndex = -1;
			
			if ( input.one )
				demoIndex = 0;
				
			if ( input.two )
				demoIndex = 1;
				
			if ( input.three )
				demoIndex = 2;
				
			if ( input.four )
				demoIndex = 3;
				
			if ( input.five )
				demoIndex = 4;
				
			if ( input.six )
				demoIndex = 5;
				
			if ( input.seven )
				demoIndex = 6;
				
			if ( input.eight )
				demoIndex = 7;
				
			if ( input.nine )
				demoIndex = 8;
				
			if ( input.zero )
				demoIndex = 9;

			if ( input.f4 )
				break;

			static bool enterDownLastFrame = false;
			if ( input.enter && !enterDownLastFrame )
				shadows = !shadows;
			enterDownLastFrame = input.enter;
				
			if ( demoIndex != -1 )
			{
				Demo * newDemo = CreateDemo( demoIndex, displayWidth, displayHeight );
				if ( newDemo )
				{
					ClearDisplay( displayWidth, displayHeight );
					delete demo;
					demo = newDemo;
					assert( demo );
					demo->Initialize();
					currentDemo = demoIndex;
				}
			}
		}
		
		static bool escapeDownLastFrame = false;		
		if ( input.escape && !escapeDownLastFrame )
		{
			ClearDisplay( displayWidth, displayHeight );
			delete demo;
			demo = CreateDemo( currentDemo, displayWidth, displayHeight );
			assert( demo );
			demo->Initialize();
		}
		escapeDownLastFrame = input.escape;
		
		demo->ProcessInput( !input.alt ? input : platform::Input() );
		
		demo->Update( DeltaTime );
		
		demo->Render( DeltaTime, shadows );
		
		UpdateDisplay( 1 );
		
		demo->PostRender();
	}

	CloseDisplay();

	delete demo;
	
	return 0;
}