#pragma once

#include <memory>

#include "DiscretePoint.h"
#include "UiEvent.h"

class MouseEvent : public UiEvent
{
public:
    enum class Action
    {
        Pressed,
        Released
    };

private:
    Pixel mClientLocation;
    Pixel mScreenLocation;
    Action mAction;

public:

    MouseEvent();

    ~MouseEvent();

    static std::unique_ptr<MouseEvent> Create();

    void SetClientLocation(Pixel location);

    void SetScreenLocation(Pixel location);

    void SetAction(Action action);

    Pixel GetClientLocation() const;

    Pixel GetScreenLocation() const;

    Action GetAction() const;
};
using MouseEventUPtr = std::unique_ptr<MouseEvent>;
