#pragma once #include #include #include #include namespace td { namespace server { class Server { private: std::shared_ptr m_Socket; std::shared_ptr m_State; std::chrono::time_point m_LastTime; public: Server(const std::shared_ptr& a_Socket) : m_Socket(a_Socket), m_LastTime(std::chrono::system_clock::now()) {} void Update(); void UpdateState(const std::shared_ptr& a_State) { m_State = a_State; m_State->SetServer(this); } private: void Update(float a_Delta) { m_State->Update(a_Delta); } friend class IServerState; }; } // namespace server } // namespace td