#pragma once #include "Component.h" #include "Entity.h" #include #include class InteractionComponent : public Component { public: InteractionComponent(bool canInteract, bool isInteractable, int reach); ~InteractionComponent(); void init() override; void update(); bool interact(Entity* interactor, Entity* interactee); Entity* getClosestInteractableEntity(Direction direction, Entity* interactor, std::vector entities); private: bool canInteract; bool isInteractable; int reach; Entity* findClosestEntity(std::vector& entities, TransformComponent& interactorT, Direction direction); std::function getDirectionalCheck(Direction direction, const TransformComponent& interactorT); bool isEntityCloseEnough(const TransformComponent& interactorT, const TransformComponent& entityT, Direction direction); float calculateDistance(Vector2D iPos, Vector2D ePos); };