F4MP/codigos originales/tiltedcode/Code/server/Services/ServerListService.h
2026-01-06 18:53:59 +01:00

44 lines
1.2 KiB
C++

#pragma once
struct World;
struct UpdateEvent;
struct PlayerJoinEvent;
struct PlayerLeaveEvent;
/**
* @brief Dispatches the current player list to the clients.
*/
struct ServerListService
{
ServerListService(World& aWorld, entt::dispatcher& aDispatcher) noexcept;
~ServerListService() noexcept = default;
TP_NOCOPYMOVE(ServerListService);
protected:
void OnUpdate(const UpdateEvent& acEvent) noexcept;
void OnPlayerJoin(const PlayerJoinEvent& acEvent) noexcept;
void OnPlayerLeave(const PlayerLeaveEvent& acEvent) noexcept;
private:
void Announce() noexcept;
static void PostAnnouncement(String acName, String acDesc, String acIconUrl, uint16_t aPort, uint16_t aTick,
uint16_t aPlayerCount, uint16_t aPlayerMaxCount, String acTagList, bool aPublic,
bool aPassword, int32 aFlags) noexcept;
World& m_world;
entt::scoped_connection m_updateConnection;
entt::scoped_connection m_playerJoinConnection;
entt::scoped_connection m_playerLeaveConnection;
mutable std::chrono::steady_clock::time_point m_nextAnnounce;
int32 m_flags = 0;
enum
{
kHasPassword = 1 << 0,
kIsPublic = 1 << 1
};
};