14 static void GL_mouseMove(
const int mouseX,
int mouseY);
15 static inline void GL_mouseClick (
const int clickType,
const int state,
int mouseX,
int mouseY);
18 static void GL_reshape(
const int WIDTH,
const int HEIGHT);
19 static void GL_keyboardUpEvent(
const unsigned char key,
const int x,
const int y);
20 static void GL_specialFunc(
const int key,
const int x,
const int y);
21 static void GL_mouseWheel (
const int ,
const int ,
const int ,
const int );
22 static void GL_specialUpFunc(
const int key,
const int x,
const int y);
23 static void GL_keyboardEvent(
const unsigned char key,
const int x,
const int y);
29 glutInitWindowPosition(0,0);
34 glutInit(&nArgs, arg);
38 { glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA); }
40 { glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA); }
46 std::string windowTitle =
G_WINDOW_TITLE+
" "+DataTools::toString(
VERSION)+
" "+DataTools::toString(__DATE__)+
" "+DataTools::toString(__TIME__)+
" "+DataTools::toString(
COMPILE_COUNT);
48 glutCreateWindow(windowTitle.c_str());
52 #ifdef WILDCAT_WINDOWS 53 HWND hwnd = FindWindow(NULL, windowTitle.c_str());
54 HANDLE icon = LoadImage(NULL,
"Textures/icon.ico", IMAGE_ICON, 32, 32, LR_LOADFROMFILE | LR_COLOR);
55 SendMessage(hwnd, (UINT)WM_SETICON, ICON_BIG, (LPARAM)icon);
59 ShowWindow(hwnd, SW_SHOWMAXIMIZED);
66 MEMORYSTATUSEX statex;
67 statex.dwLength =
sizeof (statex);
69 GlobalMemoryStatusEx (&statex);
70 std::cout<<
"There is "<<statex.ullTotalPhys/1024/1024<<
" MB of RAM.\n";
71 std::cout<<
"There is "<<statex.ullAvailPhys/1024/1024<<
" MB of free RAM.\n";
73 std::cout<<
"There is "<<statex.ullTotalPageFile/1024/1024<<
" MB of paging file.\n";
74 std::cout<<
"There is "<<statex.ullAvailPageFile/1024/1024<<
" MB of free paging file.\n";
76 std::cout<<
"There is "<<statex.ullTotalVirtual/1024/1024<<
" MB of virtual memory.\n";
77 std::cout<<
"There is "<<statex.ullAvailVirtual/1024/1024<<
" MB of free virtual memory.\n";
85 std::cout<<
"Warning, free RAM may be too low.\n";
92 N_CORES = std::thread::hardware_concurrency();
111 glHint(GL_FOG_HINT, GL_FASTEST);
112 glHint(GL_FRAGMENT_SHADER_DERIVATIVE_HINT, GL_FASTEST);
113 glHint(GL_GENERATE_MIPMAP_HINT, GL_FASTEST);
114 glHint(GL_LINE_SMOOTH_HINT, GL_FASTEST);
115 glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);
116 glHint(GL_POINT_SMOOTH_HINT, GL_FASTEST);
117 glHint(GL_POLYGON_SMOOTH_HINT, GL_FASTEST);
118 glHint(GL_TEXTURE_COMPRESSION_HINT, GL_FASTEST);
121 glDisable(GL_DEPTH_TEST);
122 glDisable(GL_LIGHTING);
124 glEnable(GL_TEXTURE_2D);
126 glBlendFunc (GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
127 glShadeModel(GL_FLAT);
130 glDisable(GL_ALPHA_TEST);
131 glDisable(GL_AUTO_NORMAL);
133 glDisable(GL_COLOR_LOGIC_OP);
134 glDisable(GL_COLOR_MATERIAL);
135 glDisable(GL_COLOR_SUM);
136 glDisable(GL_COLOR_TABLE);
137 glDisable(GL_DITHER);
139 glDisable(GL_HISTOGRAM);
140 glDisable(GL_LIGHTING);
141 glDisable(GL_LINE_SMOOTH);
142 glDisable(GL_POINT_SMOOTH);
143 glDisable(GL_POINT_SPRITE);
144 glDisable(GL_POLYGON_SMOOTH);
145 glDisable(GL_SCISSOR_TEST);
146 glDisable(GL_STENCIL_TEST);
147 glDisable(GL_TEXTURE_1D);
148 glDisable(GL_TEXTURE_3D);
151 Renderer::setTextureMode();
155 std::cout<<
"OpenGL version: "<<glGetString(GL_VERSION)<<
".\n";
159 glutReshapeFunc(GL_reshape);
160 glutMouseFunc(GL_mouseClick);
162 glutPassiveMotionFunc(GL_mouseMove);
163 glutMotionFunc(GL_mouseMove);
164 glutKeyboardFunc(GL_keyboardEvent);
165 glutKeyboardUpFunc(GL_keyboardUpEvent);
166 glutSpecialFunc(GL_specialFunc);
167 glutSpecialUpFunc(GL_specialUpFunc);
168 glutMouseWheelFunc(GL_mouseWheel);
173 glColor4ub(255, 255, 255, 255);
183 static void GL_specialUpFunc(
const int key,
const int x,
const int y)
195 static void GL_specialFunc(
const int key,
const int x,
const int y)
218 static void GL_reshape(
const int WIDTH,
const int HEIGHT)
226 glMatrixMode(GL_PROJECTION);
233 glMatrixMode(GL_MODELVIEW);
257 static void GL_keyboardUpEvent(
const unsigned char key,
const int x,
const int y)
261 if ( key==Keyboard::LEFT_CTRL || key==Keyboard::RIGHT_CTRL)
272 static void GL_keyboardEvent(
const unsigned char key,
const int x,
const int y)
278 if(key==Keyboard::TILDE)
284 std::cout<<
"Debug hotkeys: ENABLED.\n";
288 std::cout<<
"Debug hotkeys: DISABLED.\n";
320 if ( key==Keyboard::LEFT_CTRL || key==Keyboard::RIGHT_CTRL)
360 if(key==Keyboard::CTRL_C)
473 { glutPostRedisplay(); }
521 #ifdef WILDCAT_WINDOWS 603 float totalFrameTime = 0;
609 std::cout<<
"SPF: "<<totalFrameTime<<
". ";
610 float frameRate = 1/totalFrameTime;
611 std::cout<<
"FPS: "<<frameRate<<
".\n";
623 glClear(GL_COLOR_BUFFER_BIT);
658 { glutSwapBuffers(); }
665 static void GL_mouseWheel (
const int wheel,
const int direction,
const int _x,
const int _y)
669 GLint windowDimensions[4];
670 glGetIntegerv( GL_VIEWPORT, windowDimensions );
678 else if (direction==-1)
712 static inline void GL_mouseClick (
const int clickType,
const int state,
int mouseX,
int mouseY)
716 if(mouseX<0) { mouseX=0; }
717 if(mouseY<0) { mouseY=0; }
719 GLint windowDimensions[4];
720 glGetIntegerv( GL_VIEWPORT, windowDimensions );
722 mouseY=windowDimensions[3]-mouseY;
728 else if(clickType==GLUT_MIDDLE_BUTTON) {
globalMouse.isMiddleClick=
true; }
729 else if(clickType==GLUT_RIGHT_BUTTON) {
globalMouse.isRightClick=
true; }
731 else if(state==GLUT_UP)
734 else if(clickType==GLUT_MIDDLE_BUTTON) {
globalMouse.isMiddleClick=
false; }
778 static void GL_mouseMove(
const int mouseX,
int mouseY)
781 GLint windowDimensions[4];
782 glGetIntegerv( GL_VIEWPORT, windowDimensions );
784 mouseY=windowDimensions[3]-mouseY;
Menu_Options menuOptions
Definition: Driver.cpp:54
Definition: Driver_Settings_Enums.hpp:23
const int OUTPUT_FRAMERATE_SAMPLE_SIZE
Definition: Driver_Settings.cpp:212
Definition: Driver_Settings_Enums.hpp:21
int U_LOGIC_PER_SECOND
Definition: Driver_Settings.cpp:227
const int UANIMATIONSPERSECOND
Definition: Driver_Settings.cpp:229
const std::string VERSION
Definition: Driver_Settings.cpp:91
long int frameLateness
Definition: Driver_GLHooks.hpp:394
Menu_AdventureMode menuAdventureMode
Definition: Driver.cpp:67
bool QUIT_FLAG
Definition: Driver_Settings.cpp:307
int UFRAMERATE
Definition: Driver_Settings.cpp:225
Menu_WorldSimulator menuWorldSimulator
Definition: Driver.cpp:64
long long unsigned int ticksBacklog
Definition: World.hpp:86
World world
Definition: Driver.cpp:45
const bool RELINQUISH_CPU
Definition: Driver_Settings.cpp:41
int CURRENT_ANIMATION_FRAME
Definition: Driver_Settings.cpp:230
const bool DOUBLE_BUFFERING
Definition: Driver_Settings.cpp:233
Definition: Driver_Settings_Enums.hpp:20
bool PAUSE_LOGIC
Definition: Driver_Settings.cpp:314
Menu_WorldGenerator menuWorldGenerator
Definition: Driver.cpp:61
bool NO_BACKLOG
Definition: Driver_Settings.cpp:276
bool waitingForKeyPress
Definition: Driver_GLHooks.hpp:254
GUI_Manager globalGuiManager
Definition: Driver_GlobalObjects.hpp:102
const std::string G_WINDOW_TITLE
Definition: Driver_Settings.cpp:94
bool HOTKEYS_ENABLED
Definition: Driver_Settings.cpp:272
Mouse globalMouse
Definition: Driver_GlobalObjects.hpp:59
bool LIMIT_LOGIC
Definition: Driver_Settings.cpp:312
double aFrameTime[OUTPUT_FRAMERATE_SAMPLE_SIZE]
Definition: Driver_GLHooks.hpp:529
Menu_Title menuTitle
Definition: Driver.cpp:51
unsigned short int N_CORES
Definition: Driver_Settings.cpp:61
unsigned char lastKey
Definition: Driver_GLHooks.hpp:253
const bool OUTPUT_FRAMERATE
Definition: Driver_Settings.cpp:211
Definition: Driver_Settings_Enums.hpp:24
bool CLEAN_SAVES_ON_EXIT
Definition: Driver_Settings.cpp:274
unsigned int RESOLUTIONY
Definition: Driver_Settings.cpp:96
Keyboard globalKeyboard
Definition: Driver_GlobalObjects.hpp:61
const int UPOLLSPERSECOND
Definition: Driver_Settings.cpp:226
Timer logicRateTimer
Definition: Driver_GlobalObjects.hpp:66
bool SLOW_FRAMERATE_ACTIVE
Definition: Driver_Settings.cpp:224
long int logicLateness
Definition: Driver_GLHooks.hpp:393
int SLOW_FRAMERATE
Definition: Driver_Settings.cpp:222
void GL_display()
Definition: Driver_GLHooks.hpp:534
const bool LAZY_RENDERING
Definition: Driver_Settings.cpp:239
Definition: Driver_Settings_Enums.hpp:22
int iFrameTime
Definition: Driver_GLHooks.hpp:530
bool EMULATE_2_BUTTON_MIDDLE_CLICK
Definition: Driver_Settings.cpp:317
Menu_LoadGame menuLoadGame
Definition: Driver.cpp:57
const std::string COMPILE_COUNT
Definition: CompileCount.hpp:12
enumMenu activeMenu
Definition: Driver_Settings_Enums.hpp:29
void shutDown(int signal=0)
Definition: Driver.cpp:155
Timer frameRateTimer
Definition: Driver_GlobalObjects.hpp:64
Timer animationTimer
Definition: Driver_GlobalObjects.hpp:68
LogicTickManager logicTickManager
Definition: Driver_GlobalObjects.hpp:107
const unsigned short int MAX_CORES
Definition: Driver_Settings.cpp:62
unsigned int RESOLUTIONX
Definition: Driver_Settings.cpp:96
const bool LIMIT_FRAMERATE
Definition: Driver_Settings.cpp:214
void GL_init(int nArgs, char **arg)
Definition: Driver_GLHooks.hpp:25
Timer pollRateTimer
Definition: Driver_GlobalObjects.hpp:65
IdleTickManager idleManager
Definition: Driver_GlobalObjects.hpp:111
double rollingAverage
Definition: Driver_GLHooks.hpp:532
const unsigned int RELINQUISH_CPU_TIMEOUT
Definition: Driver_Settings.cpp:42
unsigned int MAP_CACHE_SIZE
Definition: Driver_Settings.cpp:308
Timer playerKeypressTimer
Definition: Driver_GlobalObjects.hpp:69
bool RENDER_NEXT_FRAME
Definition: Driver_Settings.cpp:240
DisplayInterfaceManager displayInterfaceManager
Definition: Driver_GlobalObjects.hpp:86
Definition: Driver_Settings_Enums.hpp:25
bool FORCE_LOGIC_FRAME
Definition: Driver_Settings.cpp:313
void GL_idle()
Definition: Driver_GLHooks.hpp:396
bool DONT_RENDER
Definition: Driver_Settings.cpp:311
const bool MAXIMISE_WINDOW
Definition: Driver_Settings.cpp:97