group2 0.1.0
CSE 125 Group 2
Loading...
Searching...
No Matches
LobbyManager.hpp
Go to the documentation of this file.
1
3
4#pragma once
5
6#include "network/Server.hpp"
8
9#include <chrono>
10#include <unordered_map>
11
17{
18public:
20 bool init(Server& serverPtr);
21
24 bool addPlayer(ClientId id);
25
28 bool removePlayer(ClientId id);
29
32 bool setPlayerReadyStatus(ClientId id, bool ready);
33
39 bool hostStartMatch(ClientId sender);
40
42 void resetReadyStatuses();
43
44private:
45 Server* server = nullptr;
46 std::vector<LobbyPlayer> players;
47 std::unordered_map<ClientId, std::chrono::steady_clock::time_point>
50
53
56};
Shared lobby data types exchanged between server and clients.
TCP game server that accepts clients and dispatches incoming packets.
Manages authoritative lobby state and broadcasts updates to connected clients.
Definition LobbyManager.hpp:17
void resetReadyStatuses()
Clear all ready flags and broadcast Unready events; resends full lobby state to every client.
Definition LobbyManager.cpp:138
std::unordered_map< ClientId, std::chrono::steady_clock::time_point > joinTimes
Join timestamps, used for host re-election.
Definition LobbyManager.hpp:48
Server * server
Authoritative server; not owned.
Definition LobbyManager.hpp:45
void sendLobbyStateToAllPlayers()
Send a full LobbyState snapshot to every player in the roster.
Definition LobbyManager.cpp:151
ClientId assignNewHost()
Elect the longest-standing player as host and broadcast PlayerNewHost.
Definition LobbyManager.cpp:55
bool init(Server &serverPtr)
Bind the server reference used for all broadcasts.
Definition LobbyManager.cpp:11
bool hostStartMatch(ClientId sender)
Validate a host-initiated match start request.
Definition LobbyManager.cpp:104
bool setPlayerReadyStatus(ClientId id, bool ready)
Update a player's ready flag and broadcast the corresponding Ready/Unready event.
Definition LobbyManager.cpp:82
bool addPlayer(ClientId id)
Register a newly connected player and broadcast a PlayerJoined event.
Definition LobbyManager.cpp:17
ClientId hostId
ID of the current host; -1 if lobby is empty.
Definition LobbyManager.hpp:49
bool removePlayer(ClientId id)
Unregister a disconnected player, broadcast PlayerLeft, and reassign host if needed.
Definition LobbyManager.cpp:36
std::vector< LobbyPlayer > players
Current player roster.
Definition LobbyManager.hpp:46
TCP stream socket — receives client packets and echoes them back.
Definition Server.hpp:35
Associates an entity with a connected network client.
Definition ClientId.hpp:10