Move game loop into a spearate functoin. (Aside from being cleaner--that

main function was huge--it makes profiling easier since loading and
gameplay are on separate call trees.)

Implement alt-enter.

Link to glu.  (Not committing the code that uses it yet ...)
This commit is contained in:
Glenn Maynard
2002-11-14 23:54:40 +00:00
parent f84e2edb11
commit 21c2d438a2
+76 -57
View File
@@ -68,6 +68,7 @@
#pragma comment(lib, "SDL-1.2.5/lib/SDLmain.lib")
#endif
#pragma comment(lib, "opengl32.lib")
#pragma comment(lib, "glu32.Lib")
#pragma comment(lib, "d3dx8.lib")
@@ -268,6 +269,8 @@ void ApplyGraphicOptions()
}
void GameLoop();
//-----------------------------------------------------------------------------
// Name: WinMain()
// Desc: Application entry point
@@ -402,8 +405,67 @@ int main(int argc, char* argv[])
// SCREENMAN->SetNewScreen( "ScreenSandbox" );
}
/* Run the main loop. */
GameLoop();
// Do game loop
#ifndef _DEBUG
}
catch( RageException e )
{
g_sErrorString = e.what();
LOG->Trace(
"\n"
"//////////////////////////////////////////////////////\n"
"Exception: %s\n"
"//////////////////////////////////////////////////////\n"
"\n",
g_sErrorString.GetString()
);
LOG->Flush();
}
#endif
SAFE_DELETE( SCREENMAN );
SAFE_DELETE( NETWORK );
SAFE_DELETE( INPUTQUEUE );
SAFE_DELETE( INPUTMAPPER );
SAFE_DELETE( INPUTFILTER );
SAFE_DELETE( SONGMAN );
SAFE_DELETE( SONGINDEX );
SAFE_DELETE( PREFSMAN );
SAFE_DELETE( GAMESTATE );
SAFE_DELETE( GAMEMAN );
SAFE_DELETE( THEME );
SAFE_DELETE( ANNOUNCER );
SAFE_DELETE( INPUTMAN );
SAFE_DELETE( MUSIC );
SAFE_DELETE( SOUND );
// SAFE_DELETE( SOUNDMAN );
SAFE_DELETE( TIMER );
SAFE_DELETE( FONT );
SAFE_DELETE( TEXTUREMAN );
SAFE_DELETE( DISPLAY );
SAFE_DELETE( LOG );
if( g_sErrorString != "" )
{
// throw up a pretty error dialog
DialogBox(
NULL,
MAKEINTRESOURCE(IDD_ERROR_DIALOG),
NULL,
ErrorWndProc
);
}
return 0;
}
void GameLoop()
{
bool do_exit = false;
SDL_Event event;
while(!do_exit)
@@ -499,6 +561,17 @@ int main(int argc, char* argv[])
}
if(type == IET_FIRST_PRESS && DeviceI == DeviceInput(DEVICE_KEYBOARD, DIK_RETURN))
{
if( INPUTMAN->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, DIK_RMENU)) ||
INPUTMAN->IsBeingPressed( DeviceInput(DEVICE_KEYBOARD, DIK_LMENU)) )
{
/* alt-enter */
PREFSMAN->m_bWindowed = !PREFSMAN->m_bWindowed;
ApplyGraphicOptions();
continue;
}
}
GameInput GameI;
MenuInput MenuI;
@@ -524,7 +597,7 @@ int main(int argc, char* argv[])
DISPLAY->ResetMatrixStack();
RageMatrix mat;
RageMatrixOrthoOffCenterLH( &mat, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, SCREEN_NEAR, SCREEN_FAR );
DISPLAY->SetProjectionTransform( &mat );
@@ -539,59 +612,5 @@ int main(int argc, char* argv[])
if( DISPLAY && DISPLAY->IsWindowed() )
::Sleep( 0 ); // give some time to other processes
}
#ifndef _DEBUG
}
catch( RageException e )
{
g_sErrorString = e.what();
LOG->Trace(
"\n"
"//////////////////////////////////////////////////////\n"
"Exception: %s\n"
"//////////////////////////////////////////////////////\n"
"\n",
g_sErrorString.GetString()
);
LOG->Flush();
}
#endif
SAFE_DELETE( SCREENMAN );
SAFE_DELETE( NETWORK );
SAFE_DELETE( INPUTQUEUE );
SAFE_DELETE( INPUTMAPPER );
SAFE_DELETE( INPUTFILTER );
SAFE_DELETE( SONGMAN );
SAFE_DELETE( SONGINDEX );
SAFE_DELETE( PREFSMAN );
SAFE_DELETE( GAMESTATE );
SAFE_DELETE( GAMEMAN );
SAFE_DELETE( THEME );
SAFE_DELETE( ANNOUNCER );
SAFE_DELETE( INPUTMAN );
SAFE_DELETE( MUSIC );
SAFE_DELETE( SOUND );
// SAFE_DELETE( SOUNDMAN );
SAFE_DELETE( TIMER );
SAFE_DELETE( FONT );
SAFE_DELETE( TEXTUREMAN );
SAFE_DELETE( DISPLAY );
SAFE_DELETE( LOG );
if( g_sErrorString != "" )
{
// throw up a pretty error dialog
DialogBox(
NULL,
MAKEINTRESOURCE(IDD_ERROR_DIALOG),
NULL,
ErrorWndProc
);
}
return 0;
}