diff options
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/itemcontainer.cpp | 19 | ||||
-rw-r--r-- | src/gui/itemcontainer.h | 7 |
2 files changed, 23 insertions, 3 deletions
diff --git a/src/gui/itemcontainer.cpp b/src/gui/itemcontainer.cpp index 8fd3a23e..a4e7a7d0 100644 --- a/src/gui/itemcontainer.cpp +++ b/src/gui/itemcontainer.cpp @@ -41,6 +41,7 @@ ItemContainer::ItemContainer(Inventory *inventory): if (!selImg) logger->error("Unable to load selection.png"); selectedItem = 0; // No item selected + maxItems = inventory->getLastUsedSlot(); addMouseListener(this); } @@ -51,6 +52,18 @@ ItemContainer::~ItemContainer() selImg->decRef(); } +void ItemContainer::logic() +{ + gcn::Widget::logic(); + + int i = inventory->getLastUsedSlot(); + + if (i != maxItems) { + maxItems = i; + setWidth(getWidth()); + } +} + void ItemContainer::draw(gcn::Graphics* graphics) { int gridWidth = itemset->spriteset[0]->getWidth() + 4; @@ -125,7 +138,7 @@ void ItemContainer::setWidth(int width) gcn::Widget::setWidth(width); int gridWidth = itemset->spriteset[0]->getWidth() + 4; - int gridHeight = itemset->spriteset[0]->getHeight() + 10; + int gridHeight = itemset->spriteset[0]->getHeight() + 14; int columns = getWidth() / gridWidth; if (columns < 1) @@ -133,8 +146,8 @@ void ItemContainer::setWidth(int width) columns = 1; } - setHeight(((INVENTORY_SIZE / columns) + - (INVENTORY_SIZE % columns > 0 ? 1 : 0)) * gridHeight); + setHeight(((maxItems / columns) + + (maxItems % columns > 0 ? 1 : 0)) * gridHeight); } Item* ItemContainer::getItem() diff --git a/src/gui/itemcontainer.h b/src/gui/itemcontainer.h index 6def991a..6c1834ef 100644 --- a/src/gui/itemcontainer.h +++ b/src/gui/itemcontainer.h @@ -51,6 +51,11 @@ class ItemContainer : public gcn::Widget, public gcn::MouseListener virtual ~ItemContainer(); /** + * Handles the logic of the ItemContainer + */ + void logic(); + + /** * Draws the items. */ void draw(gcn::Graphics *graphics); @@ -81,6 +86,8 @@ class ItemContainer : public gcn::Widget, public gcn::MouseListener Spriteset *itemset; Image *selImg; Item *selectedItem; + + int maxItems; }; #endif |