53 lines
986 B
C++
Executable File
53 lines
986 B
C++
Executable File
#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 };
|
|
};
|
|
|
|
struct event_manager : public hack::patterns::singleton<event_manager>
|
|
{
|
|
std::vector<VE::event_fn<VE::event>> funcs;
|
|
void connect(event_fn<event> fn) { funcs.push_back(fn); };
|
|
void emit(event e)
|
|
{
|
|
for(auto& f : funcs) f(e);
|
|
}
|
|
};
|
|
}
|