Node highlighting.
[oweals/minetest.git] / src / main.cpp
index bb2ac5faf47fe2cb57feccd7f3551ac8e80f45fd..9d336825ec3a25b69b59b3d11b9a7be92cf43bf3 100644 (file)
@@ -79,6 +79,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "httpfetch.h"
 #include "guiEngine.h"
 #include "mapsector.h"
+#include "player.h"
 
 #include "database-sqlite3.h"
 #ifdef USE_LEVELDB
@@ -1364,41 +1365,43 @@ int main(int argc, char *argv[])
        u16 fsaa = g_settings->getU16("fsaa");
 
        // Determine driver
-
-       video::E_DRIVER_TYPE driverType;
-
-       std::string driverstring = g_settings->get("video_driver");
-
-       if (driverstring == "null")
-               driverType = video::EDT_NULL;
-       else if (driverstring == "software")
-               driverType = video::EDT_SOFTWARE;
-       else if (driverstring == "burningsvideo")
-               driverType = video::EDT_BURNINGSVIDEO;
-       else if (driverstring == "direct3d8")
-               driverType = video::EDT_DIRECT3D8;
-       else if (driverstring == "direct3d9")
-               driverType = video::EDT_DIRECT3D9;
-       else if (driverstring == "opengl")
-               driverType = video::EDT_OPENGL;
+       video::E_DRIVER_TYPE driverType = video::EDT_OPENGL;
+       static const char* driverids[] = {
+               "null",
+               "software",
+               "burningsvideo",
+               "direct3d8",
+               "direct3d9",
+               "opengl"
 #ifdef _IRR_COMPILE_WITH_OGLES1_
-       else if (driverstring == "ogles1")
-               driverType = video::EDT_OGLES1;
+               ,"ogles1"
 #endif
 #ifdef _IRR_COMPILE_WITH_OGLES2_
-       else if (driverstring == "ogles2")
-               driverType = video::EDT_OGLES2;
+               ,"ogles2"
 #endif
-       else {
-               errorstream << "WARNING: Invalid video_driver specified; defaulting "
-                       << "to opengl" << std::endl;
-               driverType = video::EDT_OPENGL;
+               ,"invalid"
+       };
+
+       std::string driverstring = g_settings->get("video_driver");
+       for (unsigned int i = 0;
+                       i < (sizeof(driverids)/sizeof(driverids[0]));
+                       i++)
+       {
+               if (strcasecmp(driverstring.c_str(), driverids[i]) == 0) {
+                       driverType = (video::E_DRIVER_TYPE) i;
+                       break;
+               }
+
+               if (strcasecmp("invalid", driverids[i]) == 0) {
+                       errorstream << "WARNING: Invalid video_driver specified; defaulting "
+                               << "to opengl" << std::endl;
+                       break;
+               }
        }
 
        /*
                List video modes if requested
        */
-
        MyEventReceiver* receiver = new MyEventReceiver();
 
        if (cmd_args.getFlag("videomodes")) {
@@ -1843,6 +1846,13 @@ int main(int argc, char *argv[])
                                break;
                        }
 
+                       if (current_playername.length() > PLAYERNAME_SIZE-1) {
+                               error_message = wgettext("Player name too long.");
+                               playername = current_playername.substr(0,PLAYERNAME_SIZE-1);
+                               g_settings->set("name", playername);
+                               continue;
+                       }
+
                        /*
                                Run game
                        */