forked from Mirrorlandia_minetest/minetest
Add touch_controls
boolean to get_player_window_information()
(#14092)
This commit is contained in:
parent
7162b536eb
commit
91ba02449b
@ -5350,6 +5350,12 @@ Utilities
|
||||
-- HUD Scaling multiplier
|
||||
-- Equal to the setting `hud_scaling` multiplied by `dpi / 96`
|
||||
real_hud_scaling = 1,
|
||||
|
||||
-- Whether the touchscreen controls are enabled.
|
||||
-- Usually (but not always) `true` on Android.
|
||||
-- Requires at least Minetest 5.9.0 on the client. For older clients, it
|
||||
-- is always set to `false`.
|
||||
touch_controls = false,
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -249,6 +249,10 @@ GUI
|
||||
-- HUD Scaling multiplier
|
||||
-- Equal to the setting `hud_scaling` multiplied by `dpi / 96`
|
||||
real_hud_scaling = 1,
|
||||
|
||||
-- Whether the touchscreen controls are enabled.
|
||||
-- Usually (but not always) `true` on Android.
|
||||
touch_controls = false,
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -7,6 +7,8 @@ local function show_fullscreen_fs(name)
|
||||
print(dump(window))
|
||||
|
||||
local size = { x = window.max_formspec_size.x * 1.1, y = window.max_formspec_size.y * 1.1 }
|
||||
local touch_text = window.touch_controls and "Touch controls enabled" or
|
||||
"Touch controls disabled"
|
||||
local fs = {
|
||||
"formspec_version[4]",
|
||||
("size[%f,%f]"):format(size.x, size.y),
|
||||
@ -16,7 +18,8 @@ local function show_fullscreen_fs(name)
|
||||
("button[%f,%f;1,1;%s;%s]"):format(size.x - 1, size.y - 1, "br", "BR"),
|
||||
("button[%f,%f;1,1;%s;%s]"):format(0, size.y - 1, "bl", "BL"),
|
||||
|
||||
("label[%f,%f;%s]"):format(size.x / 2, size.y / 2, "Fullscreen")
|
||||
("label[%f,%f;%s]"):format(size.x / 2, size.y / 2, "Fullscreen"),
|
||||
("label[%f,%f;%s]"):format(size.x / 2, size.y / 2 + 1, touch_text),
|
||||
}
|
||||
|
||||
minetest.show_formspec(name, "testfullscreenfs:fs", table.concat(fs))
|
||||
|
@ -1439,6 +1439,7 @@ void Client::sendUpdateClientInfo(const ClientDynamicInfo& info)
|
||||
pkt << info.real_gui_scaling;
|
||||
pkt << info.real_hud_scaling;
|
||||
pkt << (f32)info.max_fs_size.X << (f32)info.max_fs_size.Y;
|
||||
pkt << info.touch_controls;
|
||||
|
||||
Send(&pkt);
|
||||
}
|
||||
|
@ -33,11 +33,13 @@ public:
|
||||
f32 real_gui_scaling;
|
||||
f32 real_hud_scaling;
|
||||
v2f32 max_fs_size;
|
||||
bool touch_controls;
|
||||
|
||||
bool equal(const ClientDynamicInfo &other) const {
|
||||
return render_target_size == other.render_target_size &&
|
||||
abs(real_gui_scaling - other.real_gui_scaling) < 0.001f &&
|
||||
abs(real_hud_scaling - other.real_hud_scaling) < 0.001f;
|
||||
abs(real_hud_scaling - other.real_hud_scaling) < 0.001f &&
|
||||
touch_controls == other.touch_controls;
|
||||
}
|
||||
|
||||
#ifndef SERVER
|
||||
@ -48,10 +50,16 @@ public:
|
||||
f32 hud_scaling = g_settings->getFloat("hud_scaling", 0.5f, 20.0f);
|
||||
f32 real_gui_scaling = gui_scaling * density;
|
||||
f32 real_hud_scaling = hud_scaling * density;
|
||||
#ifdef HAVE_TOUCHSCREENGUI
|
||||
bool touch_controls = true;
|
||||
#else
|
||||
bool touch_controls = false;
|
||||
#endif
|
||||
|
||||
return {
|
||||
screen_size, real_gui_scaling, real_hud_scaling,
|
||||
ClientDynamicInfo::calculateMaxFSSize(screen_size, gui_scaling)
|
||||
ClientDynamicInfo::calculateMaxFSSize(screen_size, gui_scaling),
|
||||
touch_controls
|
||||
};
|
||||
}
|
||||
#endif
|
||||
|
@ -1873,6 +1873,12 @@ void Server::handleCommand_UpdateClientInfo(NetworkPacket *pkt)
|
||||
*pkt >> info.real_hud_scaling;
|
||||
*pkt >> info.max_fs_size.X;
|
||||
*pkt >> info.max_fs_size.Y;
|
||||
try {
|
||||
// added in 5.9.0
|
||||
*pkt >> info.touch_controls;
|
||||
} catch (PacketError &e) {
|
||||
info.touch_controls = false;
|
||||
}
|
||||
|
||||
session_t peer_id = pkt->getPeerId();
|
||||
RemoteClient *client = getClient(peer_id, CS_Invalid);
|
||||
|
@ -946,6 +946,10 @@ int ModApiMainMenu::l_get_window_info(lua_State *L)
|
||||
lua_pushnumber(L, info.real_hud_scaling);
|
||||
lua_settable(L, top);
|
||||
|
||||
lua_pushstring(L, "touch_controls");
|
||||
lua_pushboolean(L, info.touch_controls);
|
||||
lua_settable(L, top);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -317,6 +317,11 @@ int ModApiServer::l_get_player_window_information(lua_State *L)
|
||||
lua_pushstring(L, "real_hud_scaling");
|
||||
lua_pushnumber(L, dynamic->real_hud_scaling);
|
||||
lua_settable(L, dyn_table);
|
||||
|
||||
lua_pushstring(L, "touch_controls");
|
||||
lua_pushboolean(L, dynamic->touch_controls);
|
||||
lua_settable(L, dyn_table);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user