#pragma once #include "datatypes.h" #include "raylib.h" namespace VISEQ::BASE { class Interactable{ public: Interactable() { static int _z_index = 0; z_index = _z_index; _z_index++; } virtual ~Interactable() {} bool is_hovering = false; int z_index = 0; inline static int z_hovering = 0; virtual bool hovering() = 0; virtual bool entered() {return false;}; virtual bool exited() {return false;}; virtual bool clicked() { return hovering() && IsMouseButtonPressed(MOUSE_BUTTON_LEFT); } virtual bool held() { return IsMouseButtonDown(MOUSE_BUTTON_LEFT); } virtual bool released() { return IsMouseButtonReleased(MOUSE_BUTTON_LEFT); } virtual GRAPH::GraphItemType getType() = 0; virtual void pickUp() = 0; virtual void drag() = 0; virtual void putDown() = 0; }; }