wip item refactor

This commit is contained in:
Carl Philipp Klemm 2026-03-30 16:59:32 +02:00
parent 5cd7c782ce
commit 18cf2b01bd
6 changed files with 60 additions and 18 deletions

View file

@ -14,6 +14,12 @@ typedef enum {
ITEM_VALUE_NO_VALUE
} item_value_type_t;
typedef enum {
ITEM_UPDATE_USER = 0,
ITEM_UPDATE_ACTOR,
ITEM_UPDATE_REMOTE
} item_update_type_t;
class ItemData
{
protected:
@ -48,7 +54,7 @@ public:
uint8_t getValue() const;
bool getLoaded() const;
void setLoaded(bool loaded);
bool isHidden();
bool isHidden() const;
void setHidden(bool hidden);
item_value_type_t getValueType();
virtual QString getName() const;
@ -56,24 +62,26 @@ public:
virtual void load(const QJsonObject& json, const bool preserve = false);
};
struct ItemUpdateRequest
{
item_update_type_t type;
ItemData data;
bool valueOnly;
};
class Item: public QObject, public ItemData
{
Q_OBJECT
private:
std::vector< std::shared_ptr<Actor> > actors_;
bool override_ = false;
signals:
void valueChanged(uint8_t value);
void updated(ItemData data);
private slots:
virtual void actorSetValue(uint8_t value);
void updated(ItemUpdateRequest update);
public slots:
void setValue(uint8_t value);
void requestUpdate(ItemUpdateRequest update);
public:
@ -83,6 +91,7 @@ public:
virtual ~Item();
Item& operator=(const ItemData& other);
std::vector< std::shared_ptr<Actor> >& getActors();
bool hasActors();
void addActor(std::shared_ptr<Actor> actor);
@ -91,7 +100,6 @@ public:
void setActorsActive(bool in);
void setOverride(const bool in);
bool getOverride();
void informValue(uint8_t value);
void mergeLoaded(Item& item);
virtual void store(QJsonObject& json);