X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2Fmain.cpp;h=09a10cb9d785429d6e9a2e96806b69cb73fcb157;hb=bdabd9d4a53be2fa9d90f900f7e5949d2f0ef75c;hp=33a7b37edb679baba5a81e7ea318d0ef3a11e27c;hpb=4ab9deb96cff2cee146a3f9607f369d0d0e87b00;p=lugaru.git diff --git a/Source/main.cpp b/Source/main.cpp index 33a7b37..09a10cb 100644 --- a/Source/main.cpp +++ b/Source/main.cpp @@ -55,6 +55,8 @@ extern float slomospeed; extern float slomofreq; extern bool visibleloading; +extern int difficulty; + extern SDL_Window *sdlwindow; using namespace std; @@ -63,59 +65,6 @@ set> resolutions; // statics/globals (internal only) ------------------------------------------ -#ifdef _MSC_VER -#pragma warning(push) -#pragma warning(disable: 4273) -#endif - -#ifndef __MINGW32__ // FIXME: Temporary workaround for GL-8 -#define GL_FUNC(ret,fn,params,call,rt) \ - extern "C" { \ - static ret (GLAPIENTRY *p##fn) params = NULL; \ - ret GLAPIENTRY fn params { rt p##fn call; } \ - } -#include "glstubs.h" -#undef GL_FUNC -#endif // __MINGW32__ - -#ifdef _MSC_VER -#pragma warning(pop) -#endif - -static bool lookup_glsym(const char *funcname, void **func) -{ - *func = SDL_GL_GetProcAddress(funcname); - if (*func == NULL) { - fprintf(stderr, "Failed to find OpenGL symbol \"%s\"\n", funcname); - return false; - } - return true; -} - -static bool lookup_all_glsyms(void) -{ - bool retval = true; -#ifndef __MINGW32__ // FIXME: Temporary workaround for GL-8 -#define GL_FUNC(ret,fn,params,call,rt) \ - if (!lookup_glsym(#fn, (void **) &p##fn)) retval = false; -#include "glstubs.h" -#undef GL_FUNC -#endif // __MINGW32__ - return retval; -} - -#ifndef __MINGW32__ // FIXME: Temporary workaround for GL-8 -static void GLAPIENTRY glDeleteTextures_doNothing(GLsizei n, const GLuint *textures) -{ - // no-op. -} -#endif // __MINGW32__ - -#ifdef MessageBox -#undef MessageBox -#endif -#define MessageBox(hwnd,text,title,flags) STUBBED("msgbox") - // Menu defs int kContextWidth; @@ -323,12 +272,6 @@ bool SetUp () SDL_GL_MakeCurrent(sdlwindow, glctx); - if (!lookup_all_glsyms()) { - fprintf(stderr, "Missing required OpenGL functions.\n"); - SDL_Quit(); - return false; - } - int dblbuf = 0; if ((SDL_GL_GetAttribute(SDL_GL_DOUBLEBUFFER, &dblbuf) == -1) || (!dblbuf)) { @@ -520,14 +463,6 @@ void CleanUp (void) delete[] commandLineOptionsBuffer; SDL_Quit(); -#ifndef __MINGW32__ // FIXME: Temporary workaround for GL-8 -#define GL_FUNC(ret,fn,params,call,rt) p##fn = NULL; -#include "glstubs.h" -#undef GL_FUNC - // cheat here...static destructors are calling glDeleteTexture() after - // the context is destroyed and libGL unloaded by SDL_Quit(). - pglDeleteTextures = glDeleteTextures_doNothing; -#endif // __MINGW32__ } // -------------------------------------------------------------------------- @@ -648,6 +583,7 @@ const option::Descriptor usage[] = {SOUND, OPENAL_OUTPUT_OSS, "", "force-oss", option::Arg::None, " --force-oss Force use of OSS back-end." }, {OPENALINFO, 0, "", "openal-info", option::Arg::None, " --openal-info Print info about OpenAL at launch." }, {SHOWRESOLUTIONS, 0, "", "showresolutions", option::Arg::None, " --showresolutions List the resolutions found by SDL at launch." }, + {DEVTOOLS, 0, "d", "devtools", option::Arg::None, " -d, --devtools Enable dev tools: console, level editor and debug info." }, {0,0,0,0,0,0} }; @@ -690,7 +626,9 @@ int main(int argc, char **argv) LOGFUNC; +#ifdef NDEBUG try { +#endif { newGame(); @@ -699,6 +637,10 @@ int main(int argc, char **argv) return 42; } + if (commandLineOptions[DEVTOOLS]) { + devtools = true; + } + bool gameDone = false; bool gameFocused = true; @@ -741,6 +683,7 @@ int main(int argc, char **argv) CleanUp (); return 0; +#ifdef NDEBUG } catch (const std::exception& error) { CleanUp(); @@ -749,8 +692,9 @@ int main(int argc, char **argv) LOG(e); - MessageBox(g_windowHandle, error.what(), "ERROR", MB_OK | MB_ICONEXCLAMATION); + SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Exception catched", error.what(), NULL); return -1; } +#endif }