#pragma once #include #include namespace blitz { namespace server { class Server { public: Server(std::uint16_t a_Port, std::shared_ptr a_World); ~Server(); network::EnetConnection* GetConnection(std::uint16_t a_PeerId); void CloseConnection(std::uint16_t a_PeerId); private: void HandleConnect(network::EnetConnection&); void HandleDisconnect(network::EnetConnection&); struct Session { network::EnetConnection* m_Connection; std::vector> m_Handlers; }; EnttWorld m_World; std::map m_Sessions; network::EnetServer m_NetworkServer; void RegisterHandlers(Session& session); void RegisterSystems(); void CreateEntity(network::EnetConnection&); }; } // namespace server } // namespace blitz