1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

Take geographic distance into account for server list ordering (#12790)

This commit is contained in:
sfan5 2022-10-17 13:56:28 +02:00 committed by GitHub
parent 5d8a4917c5
commit 87051fca26
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 182 additions and 14 deletions

View file

@ -39,6 +39,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "client/renderingengine.h"
#include "network/networkprotocol.h"
#include "content/mod_configuration.h"
#include "threading/mutex_auto_lock.h"
/******************************************************************************/
std::string ModApiMainMenu::getTextData(lua_State *L, std::string name)
@ -1007,6 +1008,44 @@ int ModApiMainMenu::l_do_async_callback(lua_State *L)
return 1;
}
/******************************************************************************/
// this is intentionally a global and not part of MainMenuScripting or such
namespace {
std::unordered_map<std::string, std::string> once_values;
std::mutex once_mutex;
}
int ModApiMainMenu::l_set_once(lua_State *L)
{
std::string key = readParam<std::string>(L, 1);
if (lua_isnil(L, 2))
return 0;
std::string value = readParam<std::string>(L, 2);
{
MutexAutoLock lock(once_mutex);
once_values[key] = value;
}
return 0;
}
int ModApiMainMenu::l_get_once(lua_State *L)
{
std::string key = readParam<std::string>(L, 1);
{
MutexAutoLock lock(once_mutex);
auto it = once_values.find(key);
if (it == once_values.end())
lua_pushnil(L);
else
lua_pushstring(L, it->second.c_str());
}
return 1;
}
/******************************************************************************/
void ModApiMainMenu::Initialize(lua_State *L, int top)
{
@ -1054,6 +1093,8 @@ void ModApiMainMenu::Initialize(lua_State *L, int top)
API_FCT(open_dir);
API_FCT(share_file);
API_FCT(do_async_callback);
API_FCT(set_once);
API_FCT(get_once);
}
/******************************************************************************/