aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Gilbert2011-05-01 10:35:03 +1000
committerPaul Gilbert2011-05-01 10:35:03 +1000
commitde592e07f33ff8d29110ec6d592b8d6171875969 (patch)
treecfa350da0ab036bbcb3d83d1f7c57e917b0e7b90
parent4ac0e73907a9e7a0f82f1dbc65e5a53014b2a953 (diff)
downloadscummvm-rg350-de592e07f33ff8d29110ec6d592b8d6171875969.tar.gz
scummvm-rg350-de592e07f33ff8d29110ec6d592b8d6171875969.tar.bz2
scummvm-rg350-de592e07f33ff8d29110ec6d592b8d6171875969.zip
TSAGE: Bugfixes for inventory dialog display with a large number of items
-rw-r--r--engines/tsage/dialogs.cpp16
-rw-r--r--engines/tsage/dialogs.h4
2 files changed, 13 insertions, 7 deletions
diff --git a/engines/tsage/dialogs.cpp b/engines/tsage/dialogs.cpp
index b9ad7b025f..b5f00bf73c 100644
--- a/engines/tsage/dialogs.cpp
+++ b/engines/tsage/dialogs.cpp
@@ -412,10 +412,11 @@ InventoryDialog::InventoryDialog() {
imgHeight = MAX(imgHeight, (int)itemSurface.getBounds().height());
// Add the item to the display list
- _images.push_back(GfxInvImage());
- _images[_images.size() - 1].setDetails(invObject->_displayResNum, invObject->_rlbNum, invObject->_cursorNum);
- _images[_images.size() - 1]._invObject = invObject;
- add(&_images[_images.size() - 1]);
+ GfxInvImage *img = new GfxInvImage();
+ _images.push_back(img);
+ img->setDetails(invObject->_displayResNum, invObject->_rlbNum, invObject->_cursorNum);
+ img->_invObject = invObject;
+ add(img);
}
}
assert(_images.size() > 0);
@@ -437,7 +438,7 @@ InventoryDialog::InventoryDialog() {
cellX = 0;
}
- _images[idx]._bounds.moveTo(pt.x, pt.y);
+ _images[idx]->_bounds.moveTo(pt.x, pt.y);
pt.x += imgWidth + 2;
++cellX;
@@ -455,6 +456,11 @@ InventoryDialog::InventoryDialog() {
setCenter(SCREEN_CENTER_X, SCREEN_CENTER_Y);
}
+InventoryDialog::~InventoryDialog() {
+ for (uint idx = 0; idx < _images.size(); ++idx)
+ delete _images[idx];
+}
+
void InventoryDialog::execute() {
if ((RING_INVENTORY._selectedItem) && RING_INVENTORY._selectedItem->inInventory())
RING_INVENTORY._selectedItem->setCursor();
diff --git a/engines/tsage/dialogs.h b/engines/tsage/dialogs.h
index d7828526eb..c24fa2dd3b 100644
--- a/engines/tsage/dialogs.h
+++ b/engines/tsage/dialogs.h
@@ -105,11 +105,11 @@ public:
class InventoryDialog : public ModalDialog {
private:
- Common::Array<GfxInvImage> _images;
+ Common::Array<GfxInvImage *> _images;
GfxButton _btnOk, _btnLook;
public:
InventoryDialog();
- virtual ~InventoryDialog() {}
+ virtual ~InventoryDialog();
void execute();
static void show();