2006-04-24 01:14:18 +02:00
|
|
|
#include "precompiled.h"
|
|
|
|
|
|
|
|
#include "MessageHandler.h"
|
|
|
|
#include "../GameLoop.h"
|
|
|
|
#include "../CommandProc.h"
|
|
|
|
|
|
|
|
#include "renderer/Renderer.h"
|
|
|
|
#include "graphics/GameView.h"
|
2006-06-09 18:44:16 +02:00
|
|
|
#include "gui/GUIbase.h"
|
|
|
|
#include "gui/CGUI.h"
|
2006-04-24 01:14:18 +02:00
|
|
|
#include "ps/CConsole.h"
|
|
|
|
#include "ps/Game.h"
|
|
|
|
#include "maths/MathUtil.h"
|
|
|
|
|
|
|
|
#include "ps/GameSetup/Config.h"
|
|
|
|
#include "ps/GameSetup/GameSetup.h"
|
|
|
|
|
|
|
|
|
|
|
|
namespace AtlasMessage {
|
|
|
|
|
|
|
|
|
2006-06-03 07:08:32 +02:00
|
|
|
MESSAGEHANDLER(Init)
|
2006-04-24 01:14:18 +02:00
|
|
|
{
|
2006-06-03 07:08:32 +02:00
|
|
|
UNUSED2(msg);
|
|
|
|
|
2006-04-24 01:14:18 +02:00
|
|
|
oglInit();
|
|
|
|
|
|
|
|
g_Quickstart = true;
|
|
|
|
Init(g_GameLoop->argc, g_GameLoop->argv, INIT_HAVE_VMODE|INIT_NO_GUI);
|
|
|
|
|
|
|
|
#if OS_WIN
|
|
|
|
// HACK (to stop things looking very ugly when scrolling) - should
|
|
|
|
// use proper config system.
|
|
|
|
if(oglHaveExtension("WGL_EXT_swap_control"))
|
|
|
|
pwglSwapIntervalEXT(1);
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2006-06-03 07:08:32 +02:00
|
|
|
MESSAGEHANDLER(Shutdown)
|
2006-04-24 01:14:18 +02:00
|
|
|
{
|
2006-06-03 07:08:32 +02:00
|
|
|
UNUSED2(msg);
|
|
|
|
|
2006-04-24 01:14:18 +02:00
|
|
|
// Empty the CommandProc, to get rid of its references to entities before
|
|
|
|
// we kill the EntityManager
|
|
|
|
GetCommandProc().Destroy();
|
|
|
|
|
|
|
|
Shutdown();
|
|
|
|
|
|
|
|
g_GameLoop->rendering = false;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
QUERYHANDLER(Exit)
|
|
|
|
{
|
|
|
|
UNUSED2(msg);
|
|
|
|
g_GameLoop->running = false;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2006-06-03 07:08:32 +02:00
|
|
|
MESSAGEHANDLER(RenderEnable)
|
2006-04-24 01:14:18 +02:00
|
|
|
{
|
2006-06-03 07:08:32 +02:00
|
|
|
g_GameLoop->rendering = msg->enabled;
|
2006-04-24 01:14:18 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
MESSAGEHANDLER(SetContext)
|
|
|
|
{
|
|
|
|
g_GameLoop->glContext = msg->context;
|
|
|
|
Atlas_GLSetCurrent((void*)g_GameLoop->glContext);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
MESSAGEHANDLER(ResizeScreen)
|
|
|
|
{
|
|
|
|
g_xres = msg->width;
|
|
|
|
g_yres = msg->height;
|
|
|
|
if (g_xres <= 2) g_xres = 2; // avoid GL errors caused by invalid sizes
|
|
|
|
if (g_yres <= 2) g_yres = 2;
|
|
|
|
|
|
|
|
SViewPort vp = { 0, 0, g_xres, g_yres };
|
|
|
|
|
|
|
|
if (g_Game)
|
|
|
|
{
|
|
|
|
g_Game->GetView()->GetCamera()->SetViewPort(&vp);
|
|
|
|
g_Game->GetView()->GetCamera()->SetProjection (1, 5000, DEGTORAD(20));
|
|
|
|
}
|
|
|
|
|
|
|
|
g_Renderer.SetViewport(vp);
|
|
|
|
g_Renderer.Resize(g_xres, g_yres);
|
|
|
|
|
2006-04-25 07:10:47 +02:00
|
|
|
if (g_Game)
|
|
|
|
g_Game->GetView()->GetCamera()->UpdateFrustum();
|
|
|
|
|
2006-04-24 01:14:18 +02:00
|
|
|
g_GUI.UpdateResolution();
|
|
|
|
|
|
|
|
g_Console->UpdateScreenSize(g_xres, g_yres);
|
|
|
|
}
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
MESSAGEHANDLER(RenderStyle)
|
|
|
|
{
|
|
|
|
g_Renderer.SetTerrainRenderMode(msg->wireframe ? EDGED_FACES : SOLID);
|
|
|
|
g_Renderer.SetModelRenderMode(msg->wireframe ? EDGED_FACES : SOLID);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|