#pragma once

#include "interfaces/IInputManager.hpp"

namespace TSE::SDL3
{
    class Sdl3Input : public IInputManager
    {
    public:
        static void Init();
        void Delete() override;

        static void KeyCallback(uint key, int action, ushort mods);
        static void MouseButtonCallback(int button, int action);
        static void CursorPosCallback(float xpos, float ypos);
        static void ScrollCallback(float xoffset, float yoffset);
        static void CharCallback(std::string msg);

    private:
        static Key SDL3ToTSEKeycode(uint code);
        static MouseBtn SDL3ToTSEMouseBtn(int btn);
        static Modifier SDL3ToTSEModifier(ushort mod);
    };
} // namespace TSE::SDL3
