#pragma once

#include "enums/InputEnums.hpp"
#include "ICursorHandler.hpp"
#include "IKeyInputHandler.hpp"
#include <vector>

namespace TSE
{
    class IInputManager
    {
    protected:
        static IInputManager* Instance;
        std::vector<ICursorHandler*> cursorHandler;
        std::vector<IKeyInputHandler*> keyHandler;

    public:
        static IInputManager* instance();

        virtual void Delete() = 0;

        void RegisterCursorHandler(ICursorHandler* handler);
        void UnregisterCursorHandler(ICursorHandler* handler);

        void RegisterKeyHandler(IKeyInputHandler* handler);
        void UnregisterKeyHandler(IKeyInputHandler* handler);
    };
} // namespace TSE
