Files
viseq/src/interactable.h
T

47 lines
931 B
C++
Raw Normal View History

2024-11-09 23:56:40 +01:00
#pragma once
#include "datatypes.h"
#include "raylib.h"
#include "vmath.h"
2024-11-09 23:56:40 +01:00
namespace VISEQ::BASE {
class Interactable{
public:
Interactable() {
static int _z_index = 0;
z_index = _z_index;
_z_index++;
}
2024-11-09 23:56:40 +01:00
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);
}
2024-11-09 23:56:40 +01:00
virtual bool released() {
return IsMouseButtonReleased(MOUSE_BUTTON_LEFT);
}
virtual GRAPH::GraphItemType getType() = 0;
virtual void pickUp() = 0;
virtual void pickUp(Vec2Df position) = 0;
virtual void drag() = 0;
virtual void putDown() = 0;
2024-11-09 23:56:40 +01:00
};
}