#pragma once

#include "utils/utils.hpp" // IWYU pragma: keep

namespace VE
{
  enum class event_type
  {
    KEY_PRESSED,
    KEY_RELEASED,
    KEY_REPEATE,

    MOUSE_BUTTON_PRESSED,
    MOUSE_BUTTON_DOUBLE_PRESSED,
    MOUSE_BUTTON_RELEASED,

    MOUSE_CURSOR_POSITION,
    MOUSE_SCROLL,

    WINDOW_RESIZE,
    WINDOW_CLOSE,
    WINDOW_FOCUS,
  };

  enum class event_target
  {
    VE
  };

  struct event
  {
    event(std::any target, std::any type, std::any data) : m_target { target }, m_type{ type }, m_data{ data } {}
    ~event() = default;

    std::any m_target;
    std::any m_type;
    std::any m_data;
    // HERE
    // как-то не прикольно так !!!
    bool is_parallele{ false };
  };
}
