Files
Tower-Defense2/include/server/IServerState.h
2025-08-06 12:53:33 +02:00

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