3#ifndef ENGINE_SERVERBROWSER_H
4#define ENGINE_SERVERBROWSER_H
18#include <unordered_set>
130 static bool ParseLocation(
int *pResult,
const char *pString);
202 return !(*
this == Other);
229 CCommunity(
const char *pId,
const char *pName, std::optional<SHA256_DIGEST>
IconSha256,
const char *pIconUrl) :
243 bool HasCountry(
const char *pCountryName)
const;
244 bool HasType(
const char *pTypeName)
const;
254 virtual void Add(
const char *pElement) = 0;
255 virtual void Remove(
const char *pElement) = 0;
258 virtual bool Filtered(
const char *pElement)
const = 0;
347 virtual void Refresh(
int Type,
bool Force =
false) = 0;
Definition serverbrowser.h:69
int m_aCustomSkinColor7[protocol7::NUM_SKINPARTS]
Definition serverbrowser.h:86
int m_CustomSkinColorFeet
Definition serverbrowser.h:82
bool m_aUseCustomSkinColor7[protocol7::NUM_SKINPARTS]
Definition serverbrowser.h:85
int m_Country
Definition serverbrowser.h:73
char m_aaSkin7[protocol7::NUM_SKINPARTS][protocol7::MAX_SKIN_LENGTH]
Definition serverbrowser.h:84
int m_CustomSkinColorBody
Definition serverbrowser.h:81
char m_aSkin[MAX_SKIN_LENGTH]
Definition serverbrowser.h:79
bool m_Player
Definition serverbrowser.h:75
int m_Score
Definition serverbrowser.h:74
char m_aName[MAX_NAME_LENGTH]
Definition serverbrowser.h:71
bool m_CustomSkinColors
Definition serverbrowser.h:80
int m_FriendState
Definition serverbrowser.h:77
char m_aClan[MAX_CLAN_LENGTH]
Definition serverbrowser.h:72
bool m_Afk
Definition serverbrowser.h:76
Definition serverbrowser.h:27
bool m_RequiresLogin
Definition serverbrowser.h:127
int m_Location
Definition serverbrowser.h:113
int m_QuickSearchHit
Definition serverbrowser.h:98
@ MAX_COMMUNITY_ID_LENGTH
Definition serverbrowser.h:63
@ MAX_COMMUNITY_TYPE_LENGTH
Definition serverbrowser.h:65
@ MAX_COMMUNITY_COUNTRY_LENGTH
Definition serverbrowser.h:64
int m_MapSize
Definition serverbrowser.h:122
char m_aMap[MAX_MAP_LENGTH]
Definition serverbrowser.h:120
uint64_t m_ReceivedPackets
Definition serverbrowser.h:92
bool m_LatencyIsEstimated
Definition serverbrowser.h:114
@ LOC_AUSTRALIA
Definition serverbrowser.h:34
@ LOC_EUROPE
Definition serverbrowser.h:35
@ LOC_NORTH_AMERICA
Definition serverbrowser.h:36
@ LOC_SOUTH_AMERICA
Definition serverbrowser.h:37
@ LOC_UNKNOWN
Definition serverbrowser.h:31
@ LOC_AFRICA
Definition serverbrowser.h:32
@ LOC_ASIA
Definition serverbrowser.h:33
@ LOC_CHINA
Definition serverbrowser.h:42
@ NUM_LOCS
Definition serverbrowser.h:43
int m_MaxClients
Definition serverbrowser.h:102
char m_aAddress[MAX_SERVER_ADDRESSES *NETADDR_MAXSTRSIZE]
Definition serverbrowser.h:124
int m_NumAddresses
Definition serverbrowser.h:95
EClientScoreKind m_ClientScoreKind
Definition serverbrowser.h:107
char m_aCommunityId[MAX_COMMUNITY_ID_LENGTH]
Definition serverbrowser.h:110
int m_NumPlayers
Definition serverbrowser.h:105
static ColorRGBA GametypeColor(const char *pGametype)
Definition serverbrowser.cpp:2412
NETADDR m_aAddresses[MAX_SERVER_ADDRESSES]
Definition serverbrowser.h:96
ERankState m_HasRank
Definition serverbrowser.h:116
static int EstimateLatency(int Loc1, int Loc2)
Definition serverbrowser.cpp:2399
int m_Flags
Definition serverbrowser.h:106
int m_ServerIndex
Definition serverbrowser.h:89
char m_aGameType[16]
Definition serverbrowser.h:117
char m_aCommunityCountry[MAX_COMMUNITY_COUNTRY_LENGTH]
Definition serverbrowser.h:111
CClient m_aClients[SERVERINFO_MAX_CLIENTS]
Definition serverbrowser.h:125
char m_aName[64]
Definition serverbrowser.h:119
char m_aVersion[32]
Definition serverbrowser.h:123
int m_NumFilteredPlayers
Definition serverbrowser.h:126
int m_NumReceivedClients
Definition serverbrowser.h:93
int m_MapCrc
Definition serverbrowser.h:121
int m_FriendState
Definition serverbrowser.h:99
static bool ParseLocation(int *pResult, const char *pString)
Definition serverbrowser.cpp:2447
int m_Latency
Definition serverbrowser.h:115
int m_MaxPlayers
Definition serverbrowser.h:104
EClientScoreKind
Definition serverbrowser.h:47
@ CLIENT_SCORE_KIND_UNSPECIFIED
Definition serverbrowser.h:48
@ CLIENT_SCORE_KIND_TIME
Definition serverbrowser.h:50
@ CLIENT_SCORE_KIND_POINTS
Definition serverbrowser.h:49
@ CLIENT_SCORE_KIND_TIME_BACKCOMPAT
Definition serverbrowser.h:51
char m_aCommunityType[MAX_COMMUNITY_TYPE_LENGTH]
Definition serverbrowser.h:112
int m_NumClients
Definition serverbrowser.h:103
ERankState
Definition serverbrowser.h:55
@ RANK_UNAVAILABLE
Definition serverbrowser.h:56
@ RANK_UNRANKED
Definition serverbrowser.h:58
@ RANK_RANKED
Definition serverbrowser.h:57
TRISTATE m_Favorite
Definition serverbrowser.h:108
int m_Type
Definition serverbrowser.h:91
ColorRGBA m_GametypeColor
Definition serverbrowser.h:118
TRISTATE m_FavoriteAllowPing
Definition serverbrowser.h:109
int m_FriendNum
Definition serverbrowser.h:100
Definition serverbrowser.h:251
virtual bool Empty() const =0
virtual void Remove(const char *pElement)=0
virtual ~IFilterList()=default
virtual void Add(const char *pElement)=0
virtual bool Filtered(const char *pElement) const =0
IInterface()
Definition kernel.h:19
Definition serverbrowser.h:323
CServerEntry * m_pPrevReq
Definition serverbrowser.h:330
int m_GotInfo
Definition serverbrowser.h:327
int64_t m_RequestTime
Definition serverbrowser.h:325
CServerEntry * m_pNextReq
Definition serverbrowser.h:331
CServerInfo m_Info
Definition serverbrowser.h:328
bool m_RequestIgnoreInfo
Definition serverbrowser.h:326
Definition serverbrowser.h:275
virtual bool IsGettingServerlist() const =0
@ QUICK_MAPNAME
Definition serverbrowser.h:300
@ QUICK_SERVERNAME
Definition serverbrowser.h:298
@ QUICK_PLAYER
Definition serverbrowser.h:299
virtual int Max(const CServerInfo &Item) const =0
virtual void CleanFilters()=0
virtual std::vector< const CCommunity * > SelectedCommunities() const =0
virtual bool IsRefreshing() const =0
virtual std::vector< const CCommunity * > FavoriteCommunities() const =0
virtual const CCommunity * Community(const char *pCommunityId) const =0
virtual void Refresh(int Type, bool Force=false)=0
virtual bool IsServerlistError() const =0
static constexpr const char * COMMUNITY_TYPE_NONE
Definition serverbrowser.h:338
virtual unsigned CurrentCommunitiesHash() const =0
virtual int NumSortedServers() const =0
virtual ICommunityCache & CommunityCache()=0
static constexpr const char * COMMUNITY_ALL
Definition serverbrowser.h:343
@ LAN_PORT_END
Definition serverbrowser.h:319
@ LAN_PORT_BEGIN
Definition serverbrowser.h:318
virtual IFilterList & CountriesFilter()=0
static constexpr const char * COMMUNITY_DDNET
Definition serverbrowser.h:334
virtual IFilterList & CommunitiesFilter()=0
virtual int Players(const CServerInfo &Item) const =0
virtual const IFilterList & CommunitiesFilter() const =0
virtual int NumSortedPlayers() const =0
virtual const CServerInfo * SortedGet(int Index) const =0
virtual IFilterList & TypesFilter()=0
virtual const IFilterList & FavoriteCommunitiesFilter() const =0
virtual const CServerInfo * Get(int Index) const =0
@ TYPE_INTERNET
Definition serverbrowser.h:305
@ TYPE_LAN
Definition serverbrowser.h:306
@ TYPE_FAVORITES
Definition serverbrowser.h:307
@ TYPE_FAVORITE_COMMUNITY_2
Definition serverbrowser.h:309
@ TYPE_FAVORITE_COMMUNITY_5
Definition serverbrowser.h:312
@ TYPE_FAVORITE_COMMUNITY_1
Definition serverbrowser.h:308
@ TYPE_FAVORITE_COMMUNITY_3
Definition serverbrowser.h:310
@ NUM_TYPES
Definition serverbrowser.h:313
@ TYPE_FAVORITE_COMMUNITY_4
Definition serverbrowser.h:311
static constexpr const char * COMMUNITY_COUNTRY_NONE
Definition serverbrowser.h:337
virtual std::optional< SHA256_DIGEST > DDNetInfoSha256() const =0
virtual const ICommunityCache & CommunityCache() const =0
virtual int GetCurrentType()=0
virtual std::vector< const CCommunity * > CurrentCommunities() const =0
virtual CServerEntry * Find(const NETADDR &Addr)=0
virtual bool DDNetInfoAvailable() const =0
virtual const char * GetTutorialServer()=0
virtual int NumServers() const =0
virtual int LoadingProgression() const =0
static constexpr const char * SEARCH_EXCLUDE_TOKEN
Definition serverbrowser.h:345
@ SORT_NUMFRIENDS
Definition serverbrowser.h:293
@ SORT_GAMETYPE
Definition serverbrowser.h:291
@ SORT_MAP
Definition serverbrowser.h:290
@ SORT_NAME
Definition serverbrowser.h:288
@ SORT_NUMPLAYERS
Definition serverbrowser.h:292
@ SORT_PING
Definition serverbrowser.h:289
virtual const IFilterList & TypesFilter() const =0
virtual const std::vector< CCommunity > & Communities() const =0
virtual const IFilterList & CountriesFilter() const =0
static constexpr const char * COMMUNITY_NONE
Definition serverbrowser.h:335
virtual IFilterList & FavoriteCommunitiesFilter()=0
@ MAX_MAP_LENGTH
Definition map.h:15
@ MAX_SERVER_ADDRESSES
Definition protocol.h:87
@ MAX_CLAN_LENGTH
Definition protocol.h:100
@ SERVERINFO_MAX_CLIENTS
Definition protocol.h:88
@ MAX_SKIN_LENGTH
Definition protocol.h:101
@ MAX_NAME_LENGTH
Definition protocol.h:99
constexpr auto NETADDR_MAXSTRSIZE
Definition types.h:108
int str_comp(const char *a, const char *b)
Definition str.cpp:373
int str_copy(char *dst, const char *src, int dst_size)
Definition str.cpp:18
#define MACRO_INTERFACE(Name)
Definition kernel.h:25
@ MAX_SKIN_LENGTH
Definition protocol7.h:73
@ NUM_SKINPARTS
Definition protocol7.h:46
static constexpr const char * DDNET_INFO_URL
Definition serverbrowser.h:22
static constexpr const char * DDNET_INFO_FILE
Definition serverbrowser.h:21
unsigned str_quickhash(const char *str)
Definition str.cpp:899
TRISTATE
Definition types.h:15