X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;ds=sidebyside;f=Source%2FOpenGL_Windows.cpp;h=18bb2b90382220146263b122d895ae84139f202b;hb=8fb50ec5e055324deda9c83f74eadfbe88338344;hp=0eae638af8864af97cce3cad2c745d07bd9540e7;hpb=21af29986bbe6c1ab71c8c68244cf3250caf15f6;p=lugaru.git diff --git a/Source/OpenGL_Windows.cpp b/Source/OpenGL_Windows.cpp index 0eae638..18bb2b9 100644 --- a/Source/OpenGL_Windows.cpp +++ b/Source/OpenGL_Windows.cpp @@ -227,7 +227,7 @@ Game * pgame = 0; static int _argc = 0; static char **_argv = NULL; -static bool cmdline(const char *cmd) +bool cmdline(const char *cmd) { for (int i = 1; i < _argc; i++) { @@ -457,6 +457,8 @@ static inline int clamp_sdl_mouse_button(Uint8 button) static void sdlEventProc(const SDL_Event &e, Game &game) { int val; + SDLMod mod; + switch(e.type) { case SDL_MOUSEMOTION: @@ -523,19 +525,20 @@ static void sdlEventProc(const SDL_Event &e, Game &game) SDL_WM_ToggleFullScreen(SDL_GetVideoSurface()); } - if (e.key.keysym.sym < SDLK_LAST) + else if (e.key.keysym.sym < SDLK_LAST) { if (KeyTable[e.key.keysym.sym] != 0xffff) SetKey(KeyTable[e.key.keysym.sym]); } - if (e.key.keysym.mod & KMOD_CTRL) + mod = SDL_GetModState(); + if (mod & KMOD_CTRL) SetKey(MAC_CONTROL_KEY); - if (e.key.keysym.mod & KMOD_ALT) + if (mod & KMOD_ALT) SetKey(MAC_OPTION_KEY); - if (e.key.keysym.mod & KMOD_SHIFT) + if (mod & KMOD_SHIFT) SetKey(MAC_SHIFT_KEY); - if (e.key.keysym.mod & KMOD_CAPS) + if (mod & KMOD_CAPS) SetKey(MAC_CAPS_LOCK_KEY); return; @@ -547,13 +550,14 @@ static void sdlEventProc(const SDL_Event &e, Game &game) ClearKey(KeyTable[e.key.keysym.sym]); } - if (e.key.keysym.mod & KMOD_CTRL) + mod = SDL_GetModState(); + if ((mod & KMOD_CTRL) == 0) ClearKey(MAC_CONTROL_KEY); - if (e.key.keysym.mod & KMOD_ALT) + if ((mod & KMOD_ALT) == 0) ClearKey(MAC_OPTION_KEY); - if (e.key.keysym.mod & KMOD_SHIFT) + if ((mod & KMOD_SHIFT) == 0) ClearKey(MAC_SHIFT_KEY); - if (e.key.keysym.mod & KMOD_CAPS) + if ((mod & KMOD_CAPS) == 0) ClearKey(MAC_CAPS_LOCK_KEY); return; } @@ -2193,6 +2197,7 @@ int main(int argc, char **argv) if(width==840 && height==524)whichres=5; if(width==1024 && height==640)whichres=6; if(width==1344 && height==840)whichres=7; + if(width==1920 && height==1200)whichres=8; return whichres; } @@ -2209,6 +2214,7 @@ int main(int argc, char **argv) if(width==840 && height==524)whichres=5; if(width==1024 && height==640)whichres=6; if(width==1344 && height==840)whichres=7; + if(width>=1920 && height>=1200)whichres=8; return whichres; } @@ -2220,7 +2226,7 @@ int main(int argc, char **argv) while (true) { - if(whichres<=0 || whichres>7){ + if(whichres<=0 || whichres>8){ whichres = 0; width=640; height=480; @@ -2253,6 +2259,16 @@ int main(int argc, char **argv) width=1344; height=840; } + if(whichres==8){ + width=1920; + height=1200; + } + + // currently with SDL, we just use whatever the native bitdepth + // of the display is and don't care. + #if USE_SDL + break; + #endif if ((detail != 0) && (resolutionDepths[whichres][1] != 0)) { @@ -2268,7 +2284,9 @@ int main(int argc, char **argv) detail = 0; break; } - else if (0 == whichres) + else + + if (0 == whichres) { break; }