#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 { std::vector> funcs; void connect(event_fn fn) { funcs.push_back(fn); }; void emit(event e) { for(auto& f : funcs) f(e); } }; }