#pragma once
#include "lfr_state_interface.h"
#include "lfr_state_machine.h"

namespace State
{
    class Idle: public LFR_IState
    {
        Idle() {}
        Idle(const Idle& other) {};
        Idle& operator= (const Idle& other);

    public:
        void enter(LFR_StateMachine*);
        void exit(LFR_StateMachine*);
        static LFR_IState& getInstance();
    };


    class Autonomous: public LFR_IState
    {
        Autonomous() {}
        Autonomous(const Autonomous& other) {};
        Autonomous& operator= (const Autonomous& other);

    public:
        void enter(LFR_StateMachine*);
        void exit(LFR_StateMachine*);
        static LFR_IState& getInstance();
    };


    class Manual: public LFR_IState
    {
        Manual() {}
        Manual(const Manual& other) {};
        Manual& operator= (const Manual& other);

    public:
        void enter(LFR_StateMachine*);
        void exit(LFR_StateMachine*);
        static LFR_IState& getInstance();
    };
}