diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/core/item.cc | 2 | ||||
-rw-r--r-- | src/core/item.h | 53 |
2 files changed, 47 insertions, 8 deletions
diff --git a/src/core/item.cc b/src/core/item.cc index 3768afa..f6e0382 100644 --- a/src/core/item.cc +++ b/src/core/item.cc @@ -24,6 +24,7 @@ Item::Item(const Info *info) item_info = info; item_amount = 0; item_flags = 0; + item_price = info->price(); set_timestamp(game() ? game()->timestamp() : 1); } @@ -34,6 +35,7 @@ Item::Item(const Item &other) item_amount = other.amount(); item_flags = other.flags(); item_price = other.price(); + item_dirty = other.dirty(); set_timestamp(game() ? game()->timestamp() : 1); } diff --git a/src/core/item.h b/src/core/item.h index 98d5813..6c99270 100644 --- a/src/core/item.h +++ b/src/core/item.h @@ -19,7 +19,7 @@ namespace core class Item { public: - enum Flags {Tradeable = 1}; + enum Flags {Tradeable = 1, Unique = 2}; Item(const Info *info); @@ -36,29 +36,45 @@ public: inline long amount() const { return item_amount; } /** - * @brief information card + * @brief information record */ inline const Info *info() const { return item_info; } - + /** + * @brief price + */ inline const long price() const { return item_price; } + /** + * @brief server timestamp + */ inline const unsigned long timestamp() const { return item_timestamp; } - /// item flags + /** + * @brief item flags + */ inline const unsigned int flags() const { return item_flags; } - /// returns true of a flag is set + /** + * @brief returns true of a flag is set + */ inline const bool has_flag(const Flags flag) const { return ((item_flags & (unsigned int) flag) == (unsigned int) flag); } + /** + * @brief return true if the dirty flag is set + * */ + inline const bool dirty() const { + return item_dirty; + } + /* ---- mutators ----------------------------------------------- */ /** @@ -66,22 +82,41 @@ public: */ void set_amount(const long amount); + /** + * @brief increase associated amount + */ void inc_amount(const long amount); + /** + * @brief decrease associated amount + */ void dec_amount(const long amount); + /** + * @brief set associated price + */ void set_price(const long price); - /// set flag + /** + * @brief set item flag + */ inline void set_flag(Flags flag) { item_flags |= flag; } - /// unset flag + /** + * @brief unset item flag + */ inline void unset_flag(Flags flag) { item_flags &= ~flag; } - void set_dirty(); + + /** + * @brief set the dirty flag + * */ + inline void set_dirty(const bool dirty = true) { + item_dirty = true; + } /* ---- serializers -------------------------------------------- */ @@ -99,6 +134,8 @@ private: unsigned long item_timestamp; unsigned int item_flags; + + bool item_dirty; }; } // namespace core |