summaryrefslogtreecommitdiff
path: root/src/game.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game.cpp')
-rw-r--r--src/game.cpp39
1 files changed, 20 insertions, 19 deletions
diff --git a/src/game.cpp b/src/game.cpp
index 5ab9470f..bbb9d918 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -31,7 +31,7 @@
#include "equipment.h"
#include "gui/chat.h"
#include "gui/gui.h"
-#include "gui/inventory.h"
+#include "gui/inventorywindow.h"
#include "gui/shop.h"
#include "gui/npc.h"
#include "gui/stats.h"
@@ -78,6 +78,7 @@ OkDialog *deathNotice = NULL;
ConfirmDialog *exitConfirm = NULL;
Being *target = NULL;
+Inventory *inventory = NULL;
const int EMOTION_TIME = 150; /**< Duration of emotion icon */
const int MAX_TIME = 10000;
@@ -208,6 +209,9 @@ void do_init()
void game()
{
+ // Needs to be initialised _before_ the engine is created...
+ inventory = new Inventory();
+
engine = new Engine();
do_init();
@@ -1064,25 +1068,22 @@ void do_parse()
}
else
{
- tradeWindow->addItem(
- tradeWindow->partnerItems->getFreeSlot(), RFIFOW(6),
- false, RFIFOL(2), false);
+ tradeWindow->addItem(RFIFOW(6), false, RFIFOL(2), false);
}
break;
// Trade: New Item add response
case 0x01b1:
{
- Item *item = inventoryWindow->items->getItem(RFIFOW(2));
+ Item *item = inventory->getItem(RFIFOW(2));
switch (RFIFOB(6))
{
case 0:
// Successfully added item
if (item->isEquipment() && item->isEquipped())
{
- inventoryWindow->unequipItem(item);
+ inventory->unequipItem(item);
}
tradeWindow->addItem(
- tradeWindow->myItems->getFreeSlot(),
item->getId(), true, RFIFOW(4),
item->isEquipment());
item->increaseQuantity(-RFIFOW(4));
@@ -1130,18 +1131,18 @@ void do_parse()
// Only called on map load / warp
case 0x01ee:
// Reset all items to not load them twice on map change
- inventoryWindow->items->resetItems();
+ inventory->resetItems();
for (int loop = 0; loop < (RFIFOW(2) - 4) / 18; loop++)
{
- inventoryWindow->items->addItem(RFIFOW(4 + loop * 18),
+ inventory->addItem(RFIFOW(4 + loop * 18),
RFIFOW(4 + loop * 18 + 2),
RFIFOW(4 + loop * 18 + 6), false);
// Trick because arrows are not considered equipment
if (RFIFOW(4 + loop * 18 + 2) == 1199 ||
RFIFOW(4 + loop * 18 + 2) == 529)
{
- inventoryWindow->items->getItem(
+ inventory->getItem(
RFIFOW(4 + loop * 18))->setEquipment(true);
}
}
@@ -1152,7 +1153,7 @@ void do_parse()
for (int loop = 0; loop < ((RFIFOW(2) - 4) / 20); loop++)
{
- inventoryWindow->items->addItem(RFIFOW(4 + loop * 20),
+ inventory->addItem(RFIFOW(4 + loop * 20),
RFIFOW(4 + loop * 20 + 2), 1, true);
if (RFIFOW(4 + loop * 20 + 8))
{
@@ -1163,7 +1164,7 @@ void do_parse()
mask *= 2;
position++;
}
- Item *item = inventoryWindow->items->getItem(RFIFOW(4+loop*20));
+ Item *item = inventory->getItem(RFIFOW(4+loop*20));
item->setEquipped(true);
equipment->setEquipment(position - 1, item);
}
@@ -1177,7 +1178,7 @@ void do_parse()
}
else
{
- inventoryWindow->items->getItem(RFIFOW(2))->setQuantity(RFIFOW(4));
+ inventory->getItem(RFIFOW(2))->setQuantity(RFIFOW(4));
}
break;
// Warp
@@ -1468,17 +1469,17 @@ void do_parse()
if (RFIFOB(22) > 0)
chatWindow->chat_log("Unable to pick up item", BY_SERVER);
else {
- inventoryWindow->items->addItem(RFIFOW(2), RFIFOW(6),
+ inventory->addItem(RFIFOW(2), RFIFOW(6),
RFIFOW(4), RFIFOW(19) != 0);
}
break;
// Decrease quantity of an item in inventory
case 0x00af:
- inventoryWindow->items->getItem(RFIFOW(2))->increaseQuantity(-RFIFOW(4));
+ inventory->getItem(RFIFOW(2))->increaseQuantity(-RFIFOW(4));
break;
// Use an item
case 0x01c8:
- inventoryWindow->items->getItem(RFIFOW(2))->setQuantity( RFIFOW(10));
+ inventory->getItem(RFIFOW(2))->setQuantity( RFIFOW(10));
break;
// Skill list TAG
case 0x010f:
@@ -1579,7 +1580,7 @@ void do_parse()
if (item)
item->setEquipped(false);
- item = inventoryWindow->items->getItem(RFIFOW(2));
+ item = inventory->getItem(RFIFOW(2));
item->setEquipped(true);
equipment->setEquipment(position - 1, item);
@@ -1632,7 +1633,7 @@ void do_parse()
position++;
}
- Item *item = inventoryWindow->items->getItem(RFIFOW(2));
+ Item *item = inventory->getItem(RFIFOW(2));
item->setEquipped(false);
switch (item->getId()) {
case 529:
@@ -1658,7 +1659,7 @@ void do_parse()
// Arrows equipped
case 0x013c:
if (RFIFOW(2) > 1) {
- Item *item = inventoryWindow->items->getItem(RFIFOW(2));
+ Item *item = inventory->getItem(RFIFOW(2));
item->setEquipped(true);
equipment->setArrows(item);
logger->log("Arrows equipped: %i", RFIFOW(2));