forked from Mirrorlandia_minetest/minetest
Add Lua function get_video_modes() for main menu
Also updates and uses porting::getSupportedVideoModes()
This commit is contained in:
parent
3ef0b4e637
commit
2430b2e998
@ -570,16 +570,20 @@ void setXorgClassHint(const video::SExposedVideoData &video_data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifndef SERVER
|
#ifndef SERVER
|
||||||
|
|
||||||
v2u32 getWindowSize()
|
v2u32 getWindowSize()
|
||||||
{
|
{
|
||||||
return device->getVideoDriver()->getScreenSize();
|
return device->getVideoDriver()->getScreenSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
std::vector<core::vector3d<u32> > getVideoModes()
|
std::vector<core::vector3d<u32> > getSupportedVideoModes()
|
||||||
{
|
{
|
||||||
|
IrrlichtDevice *nulldevice = createDevice(video::EDT_NULL);
|
||||||
|
sanity_check(nulldevice != NULL);
|
||||||
|
|
||||||
std::vector<core::vector3d<u32> > mlist;
|
std::vector<core::vector3d<u32> > mlist;
|
||||||
video::IVideoModeList *modelist = device->getVideoModeList();
|
video::IVideoModeList *modelist = nulldevice->getVideoModeList();
|
||||||
|
|
||||||
u32 num_modes = modelist->getVideoModeCount();
|
u32 num_modes = modelist->getVideoModeCount();
|
||||||
for (u32 i = 0; i != num_modes; i++) {
|
for (u32 i = 0; i != num_modes; i++) {
|
||||||
@ -588,6 +592,8 @@ std::vector<core::vector3d<u32> > getVideoModes()
|
|||||||
mlist.push_back(core::vector3d<u32>(mode_res.Width, mode_res.Height, mode_depth));
|
mlist.push_back(core::vector3d<u32>(mode_res.Width, mode_res.Height, mode_depth));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nulldevice->drop();
|
||||||
|
|
||||||
return mlist;
|
return mlist;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -371,6 +371,7 @@ float getDisplayDensity();
|
|||||||
v2u32 getDisplaySize();
|
v2u32 getDisplaySize();
|
||||||
v2u32 getWindowSize();
|
v2u32 getWindowSize();
|
||||||
|
|
||||||
|
std::vector<core::vector3d<u32> > getSupportedVideoModes();
|
||||||
std::vector<irr::video::E_DRIVER_TYPE> getSupportedVideoDrivers();
|
std::vector<irr::video::E_DRIVER_TYPE> getSupportedVideoDrivers();
|
||||||
const char *getVideoDriverName(irr::video::E_DRIVER_TYPE type);
|
const char *getVideoDriverName(irr::video::E_DRIVER_TYPE type);
|
||||||
const char *getVideoDriverFriendlyName(irr::video::E_DRIVER_TYPE type);
|
const char *getVideoDriverFriendlyName(irr::video::E_DRIVER_TYPE type);
|
||||||
|
@ -1056,6 +1056,28 @@ int ModApiMainMenu::l_get_video_drivers(lua_State *L)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/******************************************************************************/
|
||||||
|
int ModApiMainMenu::l_get_video_modes(lua_State *L)
|
||||||
|
{
|
||||||
|
std::vector<core::vector3d<u32> > videomodes
|
||||||
|
= porting::getSupportedVideoModes();
|
||||||
|
|
||||||
|
lua_newtable(L);
|
||||||
|
for (u32 i = 0; i != videomodes.size(); i++) {
|
||||||
|
lua_newtable(L);
|
||||||
|
lua_pushnumber(L, videomodes[i].X);
|
||||||
|
lua_setfield(L, -2, "w");
|
||||||
|
lua_pushnumber(L, videomodes[i].Y);
|
||||||
|
lua_setfield(L, -2, "h");
|
||||||
|
lua_pushnumber(L, videomodes[i].Z);
|
||||||
|
lua_setfield(L, -2, "depth");
|
||||||
|
|
||||||
|
lua_rawseti(L, -2, i + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
int ModApiMainMenu::l_gettext(lua_State *L)
|
int ModApiMainMenu::l_gettext(lua_State *L)
|
||||||
{
|
{
|
||||||
@ -1164,6 +1186,7 @@ void ModApiMainMenu::Initialize(lua_State *L, int top)
|
|||||||
API_FCT(sound_stop);
|
API_FCT(sound_stop);
|
||||||
API_FCT(gettext);
|
API_FCT(gettext);
|
||||||
API_FCT(get_video_drivers);
|
API_FCT(get_video_drivers);
|
||||||
|
API_FCT(get_video_modes);
|
||||||
API_FCT(get_screen_info);
|
API_FCT(get_screen_info);
|
||||||
API_FCT(get_min_supp_proto);
|
API_FCT(get_min_supp_proto);
|
||||||
API_FCT(get_max_supp_proto);
|
API_FCT(get_max_supp_proto);
|
||||||
|
@ -137,6 +137,8 @@ private:
|
|||||||
|
|
||||||
static int l_get_video_drivers(lua_State *L);
|
static int l_get_video_drivers(lua_State *L);
|
||||||
|
|
||||||
|
static int l_get_video_modes(lua_State *L);
|
||||||
|
|
||||||
//version compatibility
|
//version compatibility
|
||||||
static int l_get_min_supp_proto(lua_State *L);
|
static int l_get_min_supp_proto(lua_State *L);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user