#pragma once class ClientState; class Connecting; class Connected; class Disconnected; #include "Client.h" class ClientState { public: virtual void update(unsigned int delta) = 0; }; class Connecting : public ClientState { public: Connecting(Client *client) : m_client(client) {} virtual void update(unsigned int delta) override; private: Client *m_client; }; class Connected : public ClientState { public: Connected(Client *client) : m_client(client) {} virtual void update(unsigned int delta) override; private: Client *m_client; }; class Disconnected : public ClientState { public: Disconnected(Client *client) : m_client(client) {} virtual void update(unsigned int delta) override; private: Client *m_client; };