2024-10-09 02:01:23 +02:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include "datatypes.h"
|
|
|
|
|
|
2024-11-02 15:52:16 +01:00
|
|
|
|
2024-10-09 02:01:23 +02:00
|
|
|
class Movable{
|
|
|
|
|
|
|
|
|
|
public:
|
2024-10-19 04:08:46 +02:00
|
|
|
Movable() {}
|
|
|
|
|
virtual ~Movable() {}
|
|
|
|
|
|
2024-11-02 15:52:16 +01:00
|
|
|
Movable(Vec2Df p, Vec2Df d, float s) : speed(s), position(p), direction(d) {}
|
|
|
|
|
Movable(Vec2Df p, float s) : speed(s), position(p) {}
|
2024-10-09 02:01:23 +02:00
|
|
|
|
|
|
|
|
float speed = 1.0f;
|
|
|
|
|
|
2024-11-02 15:52:16 +01:00
|
|
|
Vec2Df position;
|
|
|
|
|
Vec2Df direction;
|
2024-10-09 02:01:23 +02:00
|
|
|
|
2024-11-02 15:52:16 +01:00
|
|
|
Vec2Df drag_offset;
|
2024-10-31 01:43:00 +01:00
|
|
|
|
|
|
|
|
bool in_rect = false;
|
|
|
|
|
|
|
|
|
|
bool picked_up = false;
|
|
|
|
|
bool dragging = false;
|
|
|
|
|
bool hover_connect = false;
|
|
|
|
|
bool hovering = false;
|
|
|
|
|
bool connecting = false;
|
|
|
|
|
bool selected = false;
|
|
|
|
|
bool highlighted = false;
|
|
|
|
|
bool copied = false;
|
|
|
|
|
|
|
|
|
|
bool erase = false;
|
|
|
|
|
|
2024-11-02 15:52:16 +01:00
|
|
|
virtual void setPosition(Vec2Df _position) {position = _position;}
|
|
|
|
|
virtual Vec2Df getPosition() {return position;};
|
2024-10-28 02:07:47 +01:00
|
|
|
virtual void update(double frametime) {};
|
2024-10-25 02:43:41 +02:00
|
|
|
virtual void update() {};
|
2024-11-02 15:52:16 +01:00
|
|
|
|
|
|
|
|
/*virtual void to_json(json& j, const Movable& M){*/
|
|
|
|
|
/* j = json{{"position", M.position}, {"direction", M.direction}, {"speed", M.speed}};*/
|
|
|
|
|
/*}*/
|
2024-10-09 02:01:23 +02:00
|
|
|
};
|
2024-11-02 15:52:16 +01:00
|
|
|
|
|
|
|
|
NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(Movable, position, direction, speed)
|