]> git.jsancho.org Git - lugaru.git/blobdiff - Source/main.cpp
Console: Return gracefully when loading missing level
[lugaru.git] / Source / main.cpp
index 4ff4ebc29d788e0063ef18e70bbe2b0e1b44686b..79c139f8ae9a70df92d3edcb4472f092ffe0f062 100644 (file)
@@ -18,27 +18,27 @@ You should have received a copy of the GNU General Public License
 along with Lugaru.  If not, see <http://www.gnu.org/licenses/>.
 */
 
+#include "Game.hpp"
+
+#include "Audio/openal_wrapper.hpp"
+#include "Graphic/gamegl.hpp"
+#include "MacCompatibility.hpp"
+#include "User/Settings.hpp"
+
+#include <fstream>
+#include <iostream>
 #include <math.h>
+#include <set>
 #include <stdio.h>
 #include <string.h>
-#include <fstream>
-#include <iostream>
 #include <zlib.h>
-#include <set>
-#include "gamegl.h"
-#include "MacCompatibility.h"
-#include "Settings.h"
-
-#include "Game.h"
 
 using namespace Game;
 
-#include "openal_wrapper.h"
-
 #ifdef WIN32
-#include <windows.h>
 #include <shellapi.h>
-#include "win-res/resource.h"
+#include <windows.h>
+#include "win-res/resource.hpp"
 #endif
 
 extern float multiplier;
@@ -53,7 +53,8 @@ extern int mainmenu;
 
 extern float slomospeed;
 extern float slomofreq;
-extern bool visibleloading;
+
+extern int difficulty;
 
 extern SDL_Window *sdlwindow;
 
@@ -576,12 +577,10 @@ const option::Descriptor usage[] =
     {FULLSCREEN,        0,                      "w",    "windowed",         option::Arg::None,  " -w, --windowed    Start the game in windowed mode (default)." },
     {NOMOUSEGRAB,       1,                      "",     "nomousegrab",      option::Arg::None,  " --nomousegrab     Disable mousegrab." },
     {NOMOUSEGRAB,       0,                      "",     "mousegrab",        option::Arg::None,  " --mousegrab       Enable mousegrab (default)." },
-    {SOUND,             OPENAL_OUTPUT_NOSOUND,  "",     "nosound",          option::Arg::None,  " --nosound         Disable sound." },
-    {SOUND,             OPENAL_OUTPUT_ALSA,     "",     "force-alsa",       option::Arg::None,  " --force-alsa      Force use of ALSA back-end." },
-    {SOUND,             OPENAL_OUTPUT_OSS,      "",     "force-oss",        option::Arg::None,  " --force-oss       Force use of OSS back-end." },
+    {SOUND,             1,                      "",     "nosound",          option::Arg::None,  " --nosound         Disable sound." },
     {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." },
-    {DEBUG,             0,                      "d",     "debug",           option::Arg::None,  " -d, --debug       Activates console, level editor and debug information." },
+    {DEVTOOLS,          0,                      "d",    "devtools",         option::Arg::None,  " -d, --devtools    Enable dev tools: console, level editor and debug info." },
     {0,0,0,0,0,0}
 };
 
@@ -617,8 +616,6 @@ int main(int argc, char **argv)
         return 1;
     }
 
-    debugmode = commandLineOptions[DEBUG];
-
     // !!! FIXME: we could use a Win32 API for this.  --ryan.
 #ifndef WIN32
     chdirToAppPath(argv[0]);
@@ -626,7 +623,9 @@ int main(int argc, char **argv)
 
     LOGFUNC;
 
+#ifdef NDEBUG
     try {
+#endif
         {
             newGame();
 
@@ -635,6 +634,10 @@ int main(int argc, char **argv)
                 return 42;
             }
 
+            if (commandLineOptions[DEVTOOLS]) {
+                devtools = true;
+            }
+
             bool gameDone = false;
             bool gameFocused = true;
 
@@ -677,6 +680,7 @@ int main(int argc, char **argv)
         CleanUp ();
 
         return 0;
+#ifdef NDEBUG
     } catch (const std::exception& error) {
         CleanUp();
 
@@ -689,4 +693,5 @@ int main(int argc, char **argv)
 
         return -1;
     }
+#endif
 }