mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-10 10:08:18 +00:00
Determine one's own location automatically, but provide override
Automatically determine the approximate location of the client by including that info in the already fetched https://info2.ddnet.tw/info. Can be overridden using the the config variable `br_location`.
This commit is contained in:
parent
9eca91de74
commit
ee42faac1f
|
@ -914,7 +914,20 @@ void CServerBrowser::UpdateFromHttp()
|
|||
const IServerBrowserPingCache::CEntry *pPingEntries;
|
||||
int NumPingEntries;
|
||||
m_pPingCache->GetPingCache(&pPingEntries, &NumPingEntries);
|
||||
int OwnLocation = CServerInfo::LOC_EUROPE;
|
||||
int OwnLocation;
|
||||
if(str_comp(g_Config.m_BrLocation, "auto") == 0)
|
||||
{
|
||||
OwnLocation = m_OwnLocation;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(CServerInfo::ParseLocation(&OwnLocation, g_Config.m_BrLocation))
|
||||
{
|
||||
char aBuf[64];
|
||||
str_format(aBuf, sizeof(aBuf), "cannot parse br_location: '%s'", g_Config.m_BrLocation);
|
||||
m_pConsole->Print(IConsole::OUTPUT_LEVEL_STANDARD, "serverbrowse", aBuf);
|
||||
}
|
||||
}
|
||||
|
||||
int NumServers = m_pHttp->NumServers();
|
||||
int NumLegacyServers = m_pHttp->NumLegacyServers();
|
||||
|
@ -1410,6 +1423,15 @@ void CServerBrowser::LoadDDNetInfoJson()
|
|||
json_value_free(m_pDDNetInfo);
|
||||
m_pDDNetInfo = 0;
|
||||
}
|
||||
|
||||
m_OwnLocation = CServerInfo::LOC_UNKNOWN;
|
||||
const json_value &Location = (*m_pDDNetInfo)["location"];
|
||||
if(Location.type != json_string || CServerInfo::ParseLocation(&m_OwnLocation, Location))
|
||||
{
|
||||
char aBuf[64];
|
||||
str_format(aBuf, sizeof(aBuf), "cannot parse location from info.sjon: '%s'", (const char *)Location);
|
||||
m_pConsole->Print(IConsole::OUTPUT_LEVEL_STANDARD, "serverbrowse", aBuf);
|
||||
}
|
||||
}
|
||||
|
||||
const json_value *CServerBrowser::LoadDDNetInfo()
|
||||
|
|
|
@ -159,6 +159,7 @@ private:
|
|||
int m_NumFavoriteServers;
|
||||
|
||||
CNetwork m_aNetworks[NUM_NETWORKS];
|
||||
int m_OwnLocation = CServerInfo::LOC_UNKNOWN;
|
||||
|
||||
json_value *m_pDDNetInfo;
|
||||
|
||||
|
|
|
@ -63,6 +63,7 @@ MACRO_CONFIG_INT(BrFilterUnfinishedMap, br_filter_unfinished_map, 0, 0, 1, CFGFL
|
|||
MACRO_CONFIG_STR(BrFilterExcludeCountries, br_filter_exclude_countries, 128, "", CFGFLAG_SAVE | CFGFLAG_CLIENT, "Filter out DDNet servers by country")
|
||||
MACRO_CONFIG_STR(BrFilterExcludeTypes, br_filter_exclude_types, 128, "", CFGFLAG_SAVE | CFGFLAG_CLIENT, "Filter out DDNet servers by type (mod)")
|
||||
MACRO_CONFIG_INT(BrIndicateFinished, br_indicate_finished, 1, 0, 1, CFGFLAG_SAVE | CFGFLAG_CLIENT, "Show whether you have finished a DDNet map (transmits your player name to info2.ddnet.tw/info)")
|
||||
MACRO_CONFIG_STR(BrLocation, br_location, 16, "auto", CFGFLAG_SAVE | CFGFLAG_CLIENT, "Override location for ping estimation, available: auto, af, as, as:cn, eu, na, oc, sa (Automatic, Africa, Asia, China, Europe, North America, Oceania/Australia, South America")
|
||||
|
||||
MACRO_CONFIG_STR(BrFilterExcludeCountriesKoG, br_filter_exclude_countries_kog, 128, "", CFGFLAG_SAVE | CFGFLAG_CLIENT, "Filter out kog servers by country")
|
||||
MACRO_CONFIG_STR(BrFilterExcludeTypesKoG, br_filter_exclude_types_kog, 128, "", CFGFLAG_SAVE | CFGFLAG_CLIENT, "Filter out kog servers by type (mod)")
|
||||
|
|
Loading…
Reference in a new issue