From f7213c6e0ddf5f02df6d7e29d538adbdb38b1217 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Mon, 15 Oct 2012 17:19:14 +0000 Subject: Added support for item::Unique flag and Item::dirty(). --- src/core/item.cc | 2 ++ src/core/item.h | 53 +++++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 47 insertions(+), 8 deletions(-) (limited to 'src/core') 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 -- cgit v1.2.3