mirror of
https://github.com/Jous99/F4MP.git
synced 2026-01-13 00:20:54 +01:00
45 lines
1.2 KiB
C
45 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
|
||
|
|
};
|
||
|
|
};
|