1
0
forked from 0ad/0ad
0ad/source/tools/atlas/GameInterface/Handlers/GraphicsSetupHandlers.cpp
Ykkrosh d39a4fac21 Premake: include precompiled.h in the project; set up dependencies for Atlas projects.
# 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.
2006-06-09 16:44:16 +00:00

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);
}
}