#pragma once #include #include namespace blitz { namespace server { class Server { public: /** * \brief Construct a server * \pre Two instances of Server should not share the same world */ Server(std::uint16_t a_Port, Nz::EnttWorld& 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