2024-11-09 23:56:40 +01:00
|
|
|
#pragma once
|
|
|
|
|
|
2024-11-24 03:08:06 +01:00
|
|
|
#include "datatypes.h"
|
2024-11-10 01:56:33 +01:00
|
|
|
#include "raylib.h"
|
2024-11-09 23:56:40 +01:00
|
|
|
namespace VISEQ::BASE {
|
|
|
|
|
|
|
|
|
|
class Interactable{
|
|
|
|
|
public:
|
2024-11-21 23:58:35 +01:00
|
|
|
Interactable() {
|
|
|
|
|
static int _z_index = 0;
|
|
|
|
|
z_index = _z_index;
|
|
|
|
|
_z_index++;
|
|
|
|
|
}
|
|
|
|
|
|
2024-11-09 23:56:40 +01:00
|
|
|
virtual ~Interactable() {}
|
|
|
|
|
|
2024-11-21 23:58:35 +01:00
|
|
|
bool is_hovering = false;
|
2024-11-21 02:03:32 +01:00
|
|
|
|
2024-11-21 23:58:35 +01:00
|
|
|
int z_index = 0;
|
2024-11-21 02:03:32 +01:00
|
|
|
inline static int z_hovering = 0;
|
2024-11-16 00:29:01 +01:00
|
|
|
|
2024-11-10 01:56:33 +01:00
|
|
|
virtual bool hovering() = 0;
|
2024-11-17 02:40:31 +01:00
|
|
|
virtual bool entered() {return false;};
|
|
|
|
|
virtual bool exited() {return false;};
|
2024-11-10 01:56:33 +01:00
|
|
|
|
|
|
|
|
virtual bool clicked() {
|
|
|
|
|
return hovering() && IsMouseButtonPressed(MOUSE_BUTTON_LEFT);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
virtual bool held() {
|
|
|
|
|
return IsMouseButtonDown(MOUSE_BUTTON_LEFT);
|
|
|
|
|
}
|
2024-11-09 23:56:40 +01:00
|
|
|
|
2024-11-10 01:56:33 +01:00
|
|
|
virtual bool released() {
|
|
|
|
|
return IsMouseButtonReleased(MOUSE_BUTTON_LEFT);
|
|
|
|
|
}
|
2024-11-24 03:08:06 +01:00
|
|
|
virtual GRAPH::GraphItemType getType() = 0;
|
|
|
|
|
virtual void pickUp() = 0;
|
|
|
|
|
virtual void drag() = 0;
|
|
|
|
|
virtual void putDown() = 0;
|
2024-11-09 23:56:40 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
}
|