Files
vertex_engine/src/event/event.hpp
2025-02-26 15:09:30 +03:00

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);
}
};
}