forked from 0ad/0ad
Ykkrosh
d39a4fac21
# Attempted to make compilation faster by including as little as possible in some .h files, and moving it into .cpp. Fixed BaseTechCollection memory leak. This was SVN commit r3992.
110 lines
2.1 KiB
C++
110 lines
2.1 KiB
C++
#include "precompiled.h"
|
|
|
|
#include "MessageHandler.h"
|
|
#include "../GameLoop.h"
|
|
#include "../CommandProc.h"
|
|
|
|
#include "renderer/Renderer.h"
|
|
#include "graphics/GameView.h"
|
|
#include "gui/GUIbase.h"
|
|
#include "gui/CGUI.h"
|
|
#include "ps/CConsole.h"
|
|
#include "ps/Game.h"
|
|
#include "maths/MathUtil.h"
|
|
|
|
#include "ps/GameSetup/Config.h"
|
|
#include "ps/GameSetup/GameSetup.h"
|
|
|
|
|
|
namespace AtlasMessage {
|
|
|
|
|
|
MESSAGEHANDLER(Init)
|
|
{
|
|
UNUSED2(msg);
|
|
|
|
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
|
|
}
|
|
|
|
|
|
MESSAGEHANDLER(Shutdown)
|
|
{
|
|
UNUSED2(msg);
|
|
|
|
// 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;
|
|
}
|
|
|
|
|
|
MESSAGEHANDLER(RenderEnable)
|
|
{
|
|
g_GameLoop->rendering = msg->enabled;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
|
|
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);
|
|
|
|
if (g_Game)
|
|
g_Game->GetView()->GetCamera()->UpdateFrustum();
|
|
|
|
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);
|
|
}
|
|
|
|
}
|