#pragma once

#include <Core/HAL/Mouse/Mouse.h>

namespace Juliet
{
    struct Window;

    struct Mouse
    {
        float X;
        float Y;

        float X_Previous;
        float Y_Previous;

        MouseButton ButtonState;

        bool HasPosition : 1;
    };

    Mouse& GetMouseState();

    extern void SendMouseMotion(uint64 timestamp, NonNullPtr<Window> window, MouseID ID, float x, float y);
    extern void SendMouseButton(uint64 timestamp, NonNullPtr<Window> window, MouseID mouseID, MouseButton button, bool pressed);

    extern const MouseID kGlobalMouseID;
} // namespace Juliet
