34 lines
684 B
C++
34 lines
684 B
C++
#pragma once
|
|
|
|
#include <server/IServerSocket.h>
|
|
|
|
namespace td {
|
|
namespace server {
|
|
|
|
class Server;
|
|
|
|
class IServerState {
|
|
protected:
|
|
void SendPacket(PlayerID a_Id, const protocol::PacketBase& a_Packet);
|
|
void SetNewState(const std::shared_ptr<IServerState>& a_NewState);
|
|
|
|
public:
|
|
virtual void HandlePacket(PlayerID a_Id, const protocol::PacketBase& a_Packet) = 0;
|
|
virtual void Update(float a_Delta) = 0;
|
|
virtual void OnPlayerJoin(PlayerID a_Id) = 0;
|
|
virtual void OnPlayerLeave(PlayerID a_Id) = 0;
|
|
|
|
IServerState();
|
|
virtual ~IServerState();
|
|
|
|
private:
|
|
Server* m_Server;
|
|
|
|
void SetServer(Server* a_Server);
|
|
|
|
friend class Server;
|
|
};
|
|
|
|
} // namespace server
|
|
} // namespace td
|