diff options
author | sapier <Sapier at GMX dot net> | 2014-07-16 14:04:50 +0200 |
---|---|---|
committer | sapier <Sapier at GMX dot net> | 2014-08-23 01:55:54 +0200 |
commit | 996ea60642c5d78fc915573af0641d78bc7e2d49 (patch) | |
tree | 9af38da13cd94dbfff1f683e4a4314c0b74ac76f /src/script | |
parent | 26f4a5c1109f99fed6d7941b870a94fa49642181 (diff) | |
download | minetest-996ea60642c5d78fc915573af0641d78bc7e2d49.tar.gz minetest-996ea60642c5d78fc915573af0641d78bc7e2d49.tar.bz2 minetest-996ea60642c5d78fc915573af0641d78bc7e2d49.zip |
Add video driver selection to settings menu (based uppon idea from webdesigner97)
Diffstat (limited to 'src/script')
-rw-r--r-- | src/script/lua_api/l_mainmenu.cpp | 32 | ||||
-rw-r--r-- | src/script/lua_api/l_mainmenu.h | 2 |
2 files changed, 34 insertions, 0 deletions
diff --git a/src/script/lua_api/l_mainmenu.cpp b/src/script/lua_api/l_mainmenu.cpp index ae2fddf6d..1760d2794 100644 --- a/src/script/lua_api/l_mainmenu.cpp +++ b/src/script/lua_api/l_mainmenu.cpp @@ -34,6 +34,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "sound.h" #include "settings.h" #include "main.h" // for g_settings +#include "EDriverTypes.h" #include <IFileArchive.h> #include <IFileSystem.h> @@ -1002,6 +1003,36 @@ int ModApiMainMenu::l_download_file(lua_State *L) } /******************************************************************************/ +int ModApiMainMenu::l_get_video_drivers(lua_State *L) +{ + static const char* drivernames[] = { + "NULL Driver", + "Software", + "Burningsvideo", + "Direct3D 8", + "Direct3D 9", + "OpenGL", + "OGLES1", + "OGLES2" + }; + unsigned int index = 1; + lua_newtable(L); + int top = lua_gettop(L); + + for (unsigned int i = irr::video::EDT_SOFTWARE; + i < MYMIN(irr::video::EDT_COUNT, (sizeof(drivernames)/sizeof(drivernames[0]))); + i++) { + if (irr::IrrlichtDevice::isDriverSupported((irr::video::E_DRIVER_TYPE) i)) { + lua_pushnumber(L,index++); + lua_pushstring(L,drivernames[i]); + lua_settable(L, top); + } + } + + return 1; +} + +/******************************************************************************/ int ModApiMainMenu::l_gettext(lua_State *L) { std::wstring wtext = wstrgettext((std::string) luaL_checkstring(L, 1)); @@ -1094,6 +1125,7 @@ void ModApiMainMenu::Initialize(lua_State *L, int top) API_FCT(sound_play); API_FCT(sound_stop); API_FCT(gettext); + API_FCT(get_video_drivers); API_FCT(get_screen_info); API_FCT(do_async_callback); } diff --git a/src/script/lua_api/l_mainmenu.h b/src/script/lua_api/l_mainmenu.h index 7a9cafd1f..1783a3f7f 100644 --- a/src/script/lua_api/l_mainmenu.h +++ b/src/script/lua_api/l_mainmenu.h @@ -133,6 +133,8 @@ private: static int l_download_file(lua_State *L); + static int l_get_video_drivers(lua_State *L); + // async static int l_do_async_callback(lua_State *L); |