summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gui/inventorywindow.cpp55
-rw-r--r--src/gui/inventorywindow.h6
2 files changed, 41 insertions, 20 deletions
diff --git a/src/gui/inventorywindow.cpp b/src/gui/inventorywindow.cpp
index 32817479..fe3300dc 100644
--- a/src/gui/inventorywindow.cpp
+++ b/src/gui/inventorywindow.cpp
@@ -31,6 +31,7 @@
#include "inventorywindow.h"
#include "item_amount.h"
#include "itemcontainer.h"
+#include "progressbar.h"
#include "scrollarea.h"
#include "viewport.h"
@@ -80,23 +81,22 @@ InventoryWindow::InventoryWindow(int invSize):
mMaxWeight = toString(player_node->mMaxWeight);
mUsedSlots = toString(player_node->getInventory()->getNumberOfSlotsUsed());
- mWeight = strprintf(_("Weight: %d g / %d g"),
- atoi(mTotalWeight.c_str()), atoi(mMaxWeight.c_str()));
- mSlots = strprintf(_("Slots used: %d / %d"),
- atoi(mUsedSlots.c_str()), mMaxSlots);
+ mSlotsLabel = new gcn::Label(_("Slots: "));
+ mWeightLabel = new gcn::Label(_("Weight: "));
- mWeightLabel = new gcn::Label(mWeight + " " + mSlots);
+ mSlotsBar = new ProgressBar(1.0f, 100, 20, 225, 200, 25);
+ mWeightBar = new ProgressBar(1.0f, 100, 20, 0, 0, 255);
setMinHeight(130);
- setMinWidth(getFont()->getWidth(mWeight));
+ setMinWidth(mWeightLabel->getWidth() + mSlotsLabel->getWidth() + 310);
- ContainerPlacer place;
- place = getPlacer(0, 0);
-
- place(0, 0, mInvenScroll, 5, 4);
- place(0, 4, mWeightLabel, 5);
- place(3, 5, mDropButton);
- place(4, 5, mUseButton);
+ place(0, 0, mInvenScroll, 7, 4);
+ place(0, 4, mWeightLabel).setPadding(3);
+ place(1, 4, mWeightBar, 2);
+ place(3, 4, mSlotsLabel).setPadding(3);
+ place(4, 4, mSlotsBar, 2);
+ place(5, 5, mDropButton);
+ place(6, 5, mUseButton);
Layout &layout = getLayout();
layout.setRowHeight(0, Layout::AUTO_SET);
@@ -121,15 +121,30 @@ void InventoryWindow::logic()
mMaxWeight = toString(player_node->mMaxWeight);
mUsedSlots = toString(player_node->getInventory()->getNumberOfSlotsUsed());
- // Adjust widgets
- mWeight = strprintf(_("Weight: %d g / %d g"),
- atoi(mTotalWeight.c_str()), atoi(mMaxWeight.c_str()));
- mSlots = strprintf(_("Slots used: %d / %d"),
- atoi(mUsedSlots.c_str()), mMaxSlots);
+ // Weight Bar coloration
+ if (int(player_node->mTotalWeight) < int(player_node->mMaxWeight / 3))
+ {
+ mWeightBar->setColor(0, 0, 255); // Blue
+ }
+ else if (int(player_node->mTotalWeight) <
+ int((player_node->mMaxWeight / 3) * 2))
+ {
+ mWeightBar->setColor(255, 255, 0); // Yellow
+ }
+ else
+ {
+ mWeightBar->setColor(255, 0, 0); // Red
+ }
- mWeightLabel->setCaption(mWeight + " " + mSlots);
+ // Adjust progress bars
+ mSlotsBar->setProgress((float)
+ player_node->getInventory()->getNumberOfSlotsUsed() / mMaxSlots);
+ mWeightBar->setProgress((float) player_node->mTotalWeight /
+ player_node->mMaxWeight);
- setMinWidth(getFont()->getWidth(mWeight));
+ mSlotsBar->setText(strprintf("%s/%d", mUsedSlots.c_str(), mMaxSlots));
+ mWeightBar->setText(strprintf("%sg/%sg", mTotalWeight.c_str(),
+ mMaxWeight.c_str()));
}
}
diff --git a/src/gui/inventorywindow.h b/src/gui/inventorywindow.h
index da7c1cee..93b9c572 100644
--- a/src/gui/inventorywindow.h
+++ b/src/gui/inventorywindow.h
@@ -33,6 +33,7 @@
class Item;
class ItemContainer;
+class ProgressBar;
/**
* Inventory dialog.
@@ -77,7 +78,12 @@ class InventoryWindow : public Window, gcn::ActionListener,
std::string mMaxWeight;
gcn::Button *mUseButton, *mDropButton;
gcn::ScrollArea *mInvenScroll;
+
gcn::Label *mWeightLabel;
+ gcn::Label *mSlotsLabel;
+
+ ProgressBar *mWeightBar;
+ ProgressBar *mSlotsBar;
int mMaxSlots;