]> git.jsancho.org Git - lugaru.git/blobdiff - Source/main.cpp
Fixes #8 Removed glstubs.h and its uses
[lugaru.git] / Source / main.cpp
index 09f6960be03b6dfd8ca9b4100984c542001d433a..c50e893b67ef572a4457bd61fcc4dcd3d36167b6 100644 (file)
@@ -42,7 +42,6 @@ using namespace Game;
 #endif
 
 extern float multiplier;
-extern float sps;
 extern float realmultiplier;
 extern int slomo;
 extern bool cellophane;
@@ -64,59 +63,6 @@ set<pair<int,int>> 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;
@@ -243,9 +189,6 @@ bool SetUp ()
         fprintf(stderr, "Failed to load config, creating default\n");
         SaveSettings();
     }
-    if (kBitsPerPixel != 32 && kBitsPerPixel != 16) {
-        kBitsPerPixel = 16;
-    }
 
     if (SDL_GL_LoadLibrary(NULL) == -1) {
         fprintf(stderr, "SDL_GL_LoadLibrary() failed: %s\n", SDL_GetError());
@@ -327,12 +270,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))
     {
@@ -521,16 +458,9 @@ void CleanUp (void)
 {
     LOGFUNC;
 
-    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__
+    delete[] commandLineOptionsBuffer;
 
+    SDL_Quit();
 }
 
 // --------------------------------------------------------------------------
@@ -655,6 +585,7 @@ const option::Descriptor usage[] =
 };
 
 option::Option commandLineOptions[commandLineOptionsNumber];
+option::Option* commandLineOptionsBuffer;
 
 int main(int argc, char **argv)
 {
@@ -664,21 +595,24 @@ int main(int argc, char **argv)
         std::cerr << "Found incorrect command line option number" << std::endl;
         return 1;
     }
-    option::Option buffer[stats.buffer_max];
-    option::Parser parse(true, usage, argc, argv, commandLineOptions, buffer);
+    commandLineOptionsBuffer = new option::Option[stats.buffer_max];
+    option::Parser parse(true, usage, argc, argv, commandLineOptions, commandLineOptionsBuffer);
 
     if (parse.error()) {
+        delete[] commandLineOptionsBuffer;
         return 1;
     }
 
     if (commandLineOptions[HELP]) {
         option::printUsage(std::cout, usage);
+        delete[] commandLineOptionsBuffer;
         return 0;
     }
 
     if (option::Option* opt = commandLineOptions[UNKNOWN]) {
         std::cerr << "Unknown option: " << opt->name << "\n";
         option::printUsage(std::cerr, usage);
+        delete[] commandLineOptionsBuffer;
         return 1;
     }
 
@@ -693,8 +627,10 @@ int main(int argc, char **argv)
         {
             newGame();
 
-            if (!SetUp ())
+            if (!SetUp ()) {
+                delete[] commandLineOptionsBuffer;
                 return 42;
+            }
 
             bool gameDone = false;
             bool gameFocused = true;
@@ -746,7 +682,7 @@ 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;
     }