23 struct CommandContext;
81 explicit Server(uint16_t port,
size_t maxClients = 32);
273 bool reliable =
true);
279 std::shared_ptr<ecs::wrapper::ECSWorld> world,
server::IGameLogic *gameLogic =
nullptr);
Type-safe event publication/subscription system.
Interface representing a remote peer in the network.
State of a single entity.
R-Type server application.
std::shared_ptr< server::EventBus > _eventBus
void _sendGameStartToRoom(std::shared_ptr< server::Room > room)
Send GameStart message to all players in a room.
std::shared_ptr< server::RoomManager > _roomManager
void _handleLoginRequest(HostNetworkEvent &event)
Handle player login request.
void stop()
Stop the server.
std::unordered_map< uint32_t, std::string > _playerIdToUsername
void _handleAutoMatchmaking(HostNetworkEvent &event)
Handle auto-matchmaking request.
void _handlePlayerInput(HostNetworkEvent &event)
Handle player input packet.
std::vector< RType::Messages::S2C::EntityState > _serializeEntities(std::shared_ptr< ecs::wrapper::ECSWorld > world, server::IGameLogic *gameLogic=nullptr)
Helper to serialize all entities in a world.
server::FrameTimer _frameTimer
void _broadcastRoomListToAll()
Broadcast room list to ALL connected players on the server.
~Server()
Destructor - clean shutdown.
void _handleStartGame(HostNetworkEvent &event)
Handle start game request (from room host)
void _broadcastRoomState(std::shared_ptr< server::Room > room)
Broadcast room state (player list) to all players in a room.
void handlePacket(HostNetworkEvent &event)
Handle incoming packet from client.
void _actionToInput(RType::Messages::Shared::Action action, int &dx, int &dy, bool &shoot)
Convert Action enum to directional input (dx, dy)
void _handleChatMessage(HostNetworkEvent &event)
Handle chat message from client.
void _handleLeaveRoom(HostNetworkEvent &event)
Handle leave room request.
std::shared_ptr< server::SessionManager > _sessionManager
std::shared_ptr< server::Lobby > getLobby() const
Get the lobby instance (for commands)
void _sendPacket(IPeer *peer, NetworkMessages::MessageType type, const std::vector< uint8_t > &payload, bool reliable=true)
Helper to send a packet to a peer.
void notifyRoomUpdate(std::shared_ptr< server::Room > room)
Notify all players in a room of state changes (for commands)
void _handleJoinRoom(HostNetworkEvent &event)
Handle join room request.
void _handleDisconnect(HostNetworkEvent &event)
Handle player disconnect.
std::unordered_map< std::string, IPeer * > _sessionPeers
bool kickPlayer(uint32_t playerId)
Kick a player from their current room (for commands)
RType::Messages::S2C::EntityState _serializeEntity(ecs::wrapper::Entity &entity, server::IGameLogic *gameLogic=nullptr)
Serialize a single entity to network format.
void _broadcastRoomList(const std::vector< IPeer * > &specificPeers)
Broadcast room list to specific peers only.
std::shared_ptr< server::Session > _getSessionFromPeer(IPeer *peer)
Helper to get session from peer.
void _handleHandshakeRequest(HostNetworkEvent &event)
Handle player handshake/connection request.
void _onMatchmakingRoomCreated(std::shared_ptr< server::Room > room)
Called when matchmaking service creates a room with matched players.
void _sendKickedNotification(uint32_t playerId)
Send room list to kicked player to return them to lobby.
std::unordered_map< IPeer *, std::string > _peerToSession
void _processPendingDestructions()
Process entities marked with PendingDestroy component.
void _broadcastGameState()
Broadcast game state to all connected clients.
void run()
Run the server (blocking until exit)
void _sendSystemMessage(uint32_t playerId, const std::string &message)
Send a system message to a specific player.
std::unordered_map< uint32_t, std::string > _playerIdToSessionId
std::unique_ptr< server::CommandHandler > _commandHandler
void _sendGameStartToSpectator(uint32_t spectatorId, std::shared_ptr< server::Room > room)
Send GameStart message to a spectator joining an in-progress game.
void _handleCreateRoom(HostNetworkEvent &event)
Handle create room request.
std::shared_ptr< server::Lobby > _lobby
bool initialize()
Initialize server systems.
std::unique_ptr< ServerNetworkManager > _networkManager
void _handleUpdateAutoMatchmakingPref(HostNetworkEvent &event)
Handle auto-matchmaking preference update (without triggering matchmaking)
void _handleRegisterRequest(HostNetworkEvent &event)
Handle player registration request.
void _handleListRooms(HostNetworkEvent &event)
Handle list rooms request.
High-level entity wrapper providing fluent interface.
Utility class to measure frame durations.
Interface for server-side game logic orchestration.
Network protocol with unified message format.
MessageType
All message types in the R-Type protocol.
Server-to-Client messages.
Action
Player action enum - matches Cap'n Proto enum.
Represents a network event (connection, disconnection, or received data).