3#include "InteractionListener.h"
5#include "SDL3/SDL_events.h"
6#include "SDL3/SDL_init.h"
14typedef std::function<std::shared_ptr<InteractionListener>(Vector2D*, std::vector<std::shared_ptr<InteractionListener>>)> TargetingFunc;
16class InteractionManager {
19 InteractionManager (
const InteractionManager&) =
delete;
20 InteractionManager& operator= (
const InteractionManager&) =
delete;
22 enum class TargetingStrategy : uint8_t {
28 SDL_AppResult handleInteract(SDL_EventType type, SDL_Event*
const event);
29 void registerListener(std::weak_ptr<InteractionListener> listener);
30 uint8_t registerTargetingFunc(TargetingFunc func);
33 std::vector<std::weak_ptr<InteractionListener>> listeners;
34 std::array<TargetingFunc, 256> targetingFuncs;