#ifndef LINUX_INPUT_HPP
#define LINUX_INPUT_HPP

#include "input_system.hpp"

namespace OpenEngine {
    class LinuxInput : public Input
    {
        protected:
            virtual bool IsKeyPressedImpl(int keycode) override;

            virtual bool IsMouseButtonPressedImpl(int button) override;

            virtual std::pair<float, float> GetMousePositionImpl() override;
            virtual float GetMouseXImpl() override;
            virtual float GetMouseYImpl() override;

            virtual bool JoystickExistsImpl(unsigned int joystick) override;

            virtual float GetJoystickAxisImpl(unsigned int joystick, unsigned int axis) override;
            virtual const std::string GetJoystickNameImpl(unsigned int joystick) override;

            virtual std::map<unsigned int, std::string> GetJoystickListImpl() override;
            virtual const float* GetJoystickAxesImpl(unsigned int joystick) override;
            virtual unsigned int GetJoystickAxesCountImpl(unsigned int joystick) override;

            virtual bool IsJoystickButtonPressedImpl(unsigned int joystick, unsigned int button) override;

        private:
    };
}

#endif // LINUX_INPUT_HPP
