65 lines
1.1 KiB
C++
65 lines
1.1 KiB
C++
namespace Components
|
|
{
|
|
class ServerList : public Component
|
|
{
|
|
public:
|
|
struct ServerInfo
|
|
{
|
|
Network::Address Addr;
|
|
bool Visible;
|
|
std::string Hostname;
|
|
std::string Mapname;
|
|
std::string Gametype;
|
|
std::string Mod;
|
|
int Clients;
|
|
int MaxClients;
|
|
bool Password;
|
|
int Ping;
|
|
int MatchType;
|
|
bool Hardcore;
|
|
};
|
|
|
|
ServerList();
|
|
~ServerList();
|
|
const char* GetName() { return "ServerList"; };
|
|
|
|
static void Refresh();
|
|
static void Insert(Network::Address address, Utils::InfoString info);
|
|
|
|
private:
|
|
enum Column
|
|
{
|
|
Password,
|
|
Hostname,
|
|
Mapname,
|
|
Players,
|
|
Gametype,
|
|
Ping,
|
|
};
|
|
|
|
struct Container
|
|
{
|
|
struct ServerContainer
|
|
{
|
|
bool Sent;
|
|
int SendTime;
|
|
std::string Challenge;
|
|
Network::Address Target;
|
|
};
|
|
|
|
bool AwaitingList;
|
|
Network::Address Host;
|
|
std::vector<ServerContainer> Servers;
|
|
std::mutex Mutex;
|
|
};
|
|
|
|
static int GetServerCount();
|
|
static const char* GetServerText(int index, int column);
|
|
static void SelectServer(int index);
|
|
|
|
static unsigned int CurrentServer;
|
|
static Container RefreshContainer;
|
|
static std::vector<ServerInfo> OnlineList;
|
|
};
|
|
}
|