diff options
author | Paul Gilbert | 2011-05-01 10:35:03 +1000 |
---|---|---|
committer | Paul Gilbert | 2011-05-01 10:35:03 +1000 |
commit | de592e07f33ff8d29110ec6d592b8d6171875969 (patch) | |
tree | cfa350da0ab036bbcb3d83d1f7c57e917b0e7b90 /engines | |
parent | 4ac0e73907a9e7a0f82f1dbc65e5a53014b2a953 (diff) | |
download | scummvm-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
Diffstat (limited to 'engines')
-rw-r--r-- | engines/tsage/dialogs.cpp | 16 | ||||
-rw-r--r-- | engines/tsage/dialogs.h | 4 |
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(); |