IState.h 458 bytes
#pragma once
// ReSharper disable once CppUnusedIncludeDirective
#include <memory>
class IState;
struct IStateManager {
    virtual void set_next_state(std::unique_ptr<IState> state) = 0;
    virtual ~IStateManager() = default;
class IState {
public:
    explicit IState(IStateManager& state_manager) : m_state_manager(state_manager) {}
    virtual bool do_step() = 0;
    virtual ~IState() = default;
protected:
    IStateManager& m_state_manager;