diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/item.cpp | 28 | ||||
-rw-r--r-- | src/item.h | 9 |
2 files changed, 37 insertions, 0 deletions
diff --git a/src/item.cpp b/src/item.cpp index 1dcd2bbcc..3b4beacdc 100644 --- a/src/item.cpp +++ b/src/item.cpp @@ -52,6 +52,7 @@ Item::Item(const int id, mImage(nullptr), mDescription(), mTags(), + mCards(), mRefine(refine), mInvIndex(0), mEquipment(equipment), @@ -62,6 +63,8 @@ Item::Item(const int id, mFavorite(favorite) { setId(id, color); + for (int f = 0; f < 4; f ++) + mCards[f] = 0; } Item::~Item() @@ -130,3 +133,28 @@ std::string Item::getName() const else return info.getName(); } + +void Item::setCard(const int index, const int id) +{ + if (index < 0 || index >= maxCards) + return; + mCards[index] = id; +} + +int Item::getCard(const int index) const +{ + if (index < 0 || index >= maxCards) + return 0 ; + return mCards[index]; +} + +void Item::setCards(const int *const cards, const int size) +{ + if (size < 0 || !cards) + return; + int sz = size; + if (sz > maxCards) + sz = maxCards; + for (int f = 0; f < sz; f ++) + mCards[f] = cards[f]; +} diff --git a/src/item.h b/src/item.h index 842e0d79b..13f34499b 100644 --- a/src/item.h +++ b/src/item.h @@ -31,6 +31,8 @@ class Image; +const int maxCards = 4; + /** * Represents one or more instances of a certain item type. */ @@ -189,6 +191,12 @@ class Item notfinal bool getFavorite() const A_WARN_UNUSED { return mFavorite; } + void setCard(const int index, const int id); + + int getCard(const int index) const; + + void setCards(const int *const cards, const int size); + int mId; /**< Item type id. */ unsigned char mColor; int mQuantity; /**< Number of items. */ @@ -197,6 +205,7 @@ class Item notfinal Image *mImage; /**< Item image. */ std::string mDescription; std::map <int, int> mTags; + int mCards[maxCards]; uint8_t mRefine; /**< Item refine level. */ int mInvIndex; /**< Inventory index. */ bool mEquipment; /**< Item is equipment. */ |