#pragma once #include #include #include #include #include #include class Actor; class ItemData { protected: QString name_; uint8_t value_; uint32_t itemId_; public: ItemData(uint32_t itemIdIn = QRandomGenerator::global()->generate(), QString name = "Item", uint8_t value = 0); inline bool operator==(const ItemData& in) const{ return itemId_==in.itemId_; } inline bool operator!=(const ItemData& in) const{ return itemId_!=in.itemId_; } uint32_t id() const; void setName(QString name); uint8_t getValue() const; virtual QString getName() const; }; class Item: public QObject, public ItemData { Q_OBJECT private: signals: void valueChanged(uint8_t value); void functionChanged(uint8_t function, bool on); public slots: virtual void setValue(uint8_t value); virtual void setFunction(uint8_t funciton, bool value); public: Item(uint32_t itemIdIn = QRandomGenerator::global()->generate(), QString name = "Item", uint8_t value = 0, QObject *parent = nullptr); Item(const ItemData& itemData, QObject *parent = nullptr); virtual ~Item(); void informValue(uint8_t value); };