#pragma once #include #include #include #include #include #include class Actor; class ItemData { protected: QString name_; int8_t value_; uint32_t itemId_; public: ItemData(uint32_t itemIdIn = QRandomGenerator::global()->generate(), QString name = "Item", int8_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); int8_t getValue() const; virtual QString getName() const; }; class Item: public QObject, public ItemData { Q_OBJECT private: signals: void valueChanged(int8_t value); void functionChanged(uint8_t function, bool on); public slots: virtual void setValue(int8_t value); virtual void setFunction(uint8_t funciton, bool value); public: Item(uint32_t itemIdIn = QRandomGenerator::global()->generate(), QString name = "Item", int8_t value = 0, QObject *parent = nullptr); Item(const ItemData& itemData, QObject *parent = nullptr); virtual ~Item(); void informValue(int8_t value); };