summaryrefslogtreecommitdiff
path: root/src/gui/itemcontainer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/itemcontainer.cpp')
-rw-r--r--src/gui/itemcontainer.cpp143
1 files changed, 39 insertions, 104 deletions
diff --git a/src/gui/itemcontainer.cpp b/src/gui/itemcontainer.cpp
index 51780fca..bda9f786 100644
--- a/src/gui/itemcontainer.cpp
+++ b/src/gui/itemcontainer.cpp
@@ -28,7 +28,8 @@
#include "../resources/resourcemanager.h"
#include <sstream>
-ItemContainer::ItemContainer()
+ItemContainer::ItemContainer(Inventory *inventory):
+ inventory(inventory)
{
ResourceManager *resman = ResourceManager::getInstance();
Image *itemImg = resman->getImage("graphics/sprites/items.png");
@@ -41,10 +42,6 @@ ItemContainer::ItemContainer()
selectedItem = 0; // No item selected
- for (int i = 0; i < INVENTORY_SIZE; i++) {
- items[i].setInvIndex(i);
- }
-
addMouseListener(this);
}
@@ -82,41 +79,44 @@ void ItemContainer::draw(gcn::Graphics* graphics)
*/
for (int i = 2; i < INVENTORY_SIZE; i++)
{
- if (items[i].getQuantity() > 0)
+ Item *item = inventory->getItem(i);
+
+ if (item->getQuantity() <= 0) {
+ continue;
+ }
+
+ int itemX = ((i - 2) % columns) * gridWidth;
+ int itemY = ((i - 2) / columns) * gridHeight;
+
+ // Draw selection image below selected item
+ if (selectedItem == item)
{
- int itemX = ((i - 2) % columns) * gridWidth;
- int itemY = ((i - 2) / columns) * gridHeight;
-
- // Draw selection image below selected item
- if (selectedItem == &items[i])
- {
- dynamic_cast<Graphics*>(graphics)->drawImage(
- selImg, x + itemX, y + itemY);
- }
-
- // Draw item icon
- int idx;
- if ((idx = items[i].getInfo()->getImage()) > 0)
- {
- dynamic_cast<Graphics*>(graphics)->drawImage(
- itemset->spriteset[idx - 1], x + itemX, y + itemY);
- }
-
- // Draw item caption
- std::stringstream ss;
-
- if (!items[i].isEquipped()) {
- ss << items[i].getQuantity();
- }
- else {
- ss << "Eq.";
- }
-
- graphics->drawText(ss.str(),
- itemX + gridWidth / 2,
- itemY + gridHeight - 11,
- gcn::Graphics::CENTER);
+ dynamic_cast<Graphics*>(graphics)->drawImage(
+ selImg, x + itemX, y + itemY);
+ }
+
+ // Draw item icon
+ int idx;
+ if ((idx = item->getInfo()->getImage()) > 0)
+ {
+ dynamic_cast<Graphics*>(graphics)->drawImage(
+ itemset->spriteset[idx - 1], x + itemX, y + itemY);
+ }
+
+ // Draw item caption
+ std::stringstream ss;
+
+ if (!item->isEquipped()) {
+ ss << item->getQuantity();
}
+ else {
+ ss << "Eq.";
+ }
+
+ graphics->drawText(ss.str(),
+ itemX + gridWidth / 2,
+ itemY + gridHeight - 11,
+ gcn::Graphics::CENTER);
}
}
@@ -137,67 +137,16 @@ void ItemContainer::setWidth(int width)
(INVENTORY_SIZE % columns > 0 ? 1 : 0)) * gridHeight);
}
-int ItemContainer::getIndex(int id)
-{
- for (int i = 0; i < INVENTORY_SIZE; i++) {
- if (items[i].getId() == id) {
- return i;
- }
- }
- return -1;
-}
-
Item* ItemContainer::getItem()
{
return selectedItem;
}
-Item* ItemContainer::getItem(int index)
-{
- return &items[index];
-}
-
-void ItemContainer::addItem(int index, int id, int quantity, bool equipment)
-{
- items[index].setId(id);
- items[index].increaseQuantity(quantity);
- items[index].setEquipment(equipment);
-}
-
-int ItemContainer::getFreeSlot()
-{
- for (int i = 2; i < INVENTORY_SIZE; i++) {
- if (items[i].getId() == -1) {
- return i;
- }
- }
- return -1;
-}
-
-void ItemContainer::resetItems()
-{
- for (int i = 0; i < INVENTORY_SIZE; i++) {
- items[i].setId(-1);
- items[i].setQuantity(0);
- items[i].setEquipped(false);
- }
-}
-
void ItemContainer::selectNone()
{
selectedItem = 0;
}
-void ItemContainer::removeItem(int id)
-{
- for (int i = 0; i < INVENTORY_SIZE; i++) {
- if (items[i].getId() == id) {
- items[i].setId(-1);
- items[i].setQuantity(0);
- }
- }
-}
-
void ItemContainer::mousePress(int mx, int my, int button)
{
int gridWidth = itemset->spriteset[0]->getWidth() + 4;
@@ -212,20 +161,6 @@ void ItemContainer::mousePress(int mx, int my, int button)
if (index > INVENTORY_SIZE) {
index = INVENTORY_SIZE - 1;
}
- selectedItem = &items[index];
+ selectedItem = inventory->getItem(index);
}
}
-
-int ItemContainer::getNumberOfSlotsUsed()
-{
- int NumberOfFilledSlot = 0;
- for (int i = 0; i < INVENTORY_SIZE; i++)
- {
- if (items[i].getId() > -1 || items[i].getQuantity() > 0)
- {
- NumberOfFilledSlot++;
- }
- }
-
- return NumberOfFilledSlot;
-}