37 lines
762 B
C++
37 lines
762 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(IServerSocket& a_Server);
|
|
virtual ~IServerState() {}
|
|
|
|
private:
|
|
IServerSocket& m_Socket;
|
|
Server* m_Server;
|
|
|
|
void SetServer(Server* a_Server) {
|
|
m_Server = a_Server;
|
|
}
|
|
|
|
friend class Server;
|
|
};
|
|
|
|
} // namespace server
|
|
} // namespace td
|