aboutsummaryrefslogtreecommitdiff
path: root/engines/tsage/dialogs.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/tsage/dialogs.cpp')
-rw-r--r--engines/tsage/dialogs.cpp236
1 files changed, 0 insertions, 236 deletions
diff --git a/engines/tsage/dialogs.cpp b/engines/tsage/dialogs.cpp
index 002835e76b..972d591c34 100644
--- a/engines/tsage/dialogs.cpp
+++ b/engines/tsage/dialogs.cpp
@@ -181,242 +181,6 @@ void ModalDialog::drawFrame() {
/*--------------------------------------------------------------------------*/
-bool GfxInvImage::process(Event &event) {
- if (!event.handled && (event.eventType == EVENT_BUTTON_DOWN)) {
- event.handled = _bounds.contains(event.mousePos);
- return event.handled;
- }
-
- return false;
-}
-
-/*--------------------------------------------------------------------------*/
-
-void InventoryDialog::show() {
- // Determine how many items are in the player's inventory
- int itemCount = 0;
- SynchronizedList<InvObject *>::iterator i;
- for (i = RING_INVENTORY._itemList.begin(); i != RING_INVENTORY._itemList.end(); ++i) {
- if ((*i)->inInventory())
- ++itemCount;
- }
-
- if (itemCount == 0) {
- MessageDialog::show(INV_EMPTY_MSG, OK_BTN_STRING);
- return;
- }
-
- InventoryDialog *dlg = new InventoryDialog();
- dlg->draw();
- dlg->execute();
- delete dlg;
-}
-
-InventoryDialog::InventoryDialog() {
- // Determine the maximum size of the image of any item in the player's inventory
- int imgWidth = 0, imgHeight = 0;
-
- SynchronizedList<InvObject *>::iterator i;
- for (i = RING_INVENTORY._itemList.begin(); i != RING_INVENTORY._itemList.end(); ++i) {
- InvObject *invObject = *i;
- if (invObject->inInventory()) {
- // Get the image for the item
- GfxSurface itemSurface = surfaceFromRes(invObject->_displayResNum, invObject->_rlbNum, invObject->_cursorNum);
-
- // Maintain the dimensions of the largest item image
- imgWidth = MAX(imgWidth, (int)itemSurface.getBounds().width());
- imgHeight = MAX(imgHeight, (int)itemSurface.getBounds().height());
-
- // Add the item to the display list
- 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);
-
- // Figure out the number of columns/rows to show all the items
- int cellsSize = 3;
- while ((cellsSize * cellsSize) < (int)_images.size())
- ++cellsSize;
-
- // Set the position of each inventory item to be displayed
- int cellX = 0;
- Common::Point pt(0, 0);
-
- for (uint idx = 0; idx < _images.size(); ++idx) {
- if (cellX == cellsSize) {
- // Move to the start of the next line
- pt.x = 0;
- pt.y += imgHeight + 2;
- cellX = 0;
- }
-
- _images[idx]->_bounds.moveTo(pt.x, pt.y);
-
- pt.x += imgWidth + 2;
- ++cellX;
- }
-
- // Set up the buttons
- pt.y += imgHeight + 2;
- _btnOk.setText(OK_BTN_STRING);
- _btnOk._bounds.moveTo((imgWidth + 2) * cellsSize - _btnOk._bounds.width(), pt.y);
- _btnLook.setText(LOOK_BTN_STRING);
- _btnLook._bounds.moveTo(_btnOk._bounds.left - _btnLook._bounds.width() - 2, _btnOk._bounds.top);
- addElements(&_btnLook, &_btnOk, NULL);
-
- frame();
- 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();
-
- GfxElement *hiliteObj;
- bool lookFlag = false;
- _gfxManager.activate();
-
- while (!g_vm->shouldQuit()) {
- // Get events
- Event event;
- while (!g_globals->_events.getEvent(event) && !g_vm->shouldQuit()) {
- g_system->delayMillis(10);
- g_system->updateScreen();
- }
- if (g_vm->shouldQuit())
- break;
-
- hiliteObj = NULL;
- if ((event.eventType == EVENT_BUTTON_DOWN) && !_bounds.contains(event.mousePos))
- break;
-
- // Pass event to elements
- event.mousePos.x -= _gfxManager._bounds.left;
- event.mousePos.y -= _gfxManager._bounds.top;
-
- for (GfxElementList::iterator i = _elements.begin(); i != _elements.end(); ++i) {
- if ((*i)->process(event))
- hiliteObj = *i;
- }
-
- if (!event.handled && event.eventType == EVENT_KEYPRESS) {
- if ((event.kbd.keycode == Common::KEYCODE_RETURN) || (event.kbd.keycode == Common::KEYCODE_ESCAPE)) {
- // Exit the dialog
- //hiliteObj = &_btnOk;
- break;
- }
- }
-
- if (hiliteObj == &_btnOk) {
- // Ok button clicked
- if (lookFlag)
- g_globals->_events.setCursor(CURSOR_WALK);
- break;
- } else if (hiliteObj == &_btnLook) {
- // Look button clicked
- if (_btnLook._message == LOOK_BTN_STRING) {
- _btnLook._message = PICK_BTN_STRING;
- lookFlag = 1;
- g_globals->_events.setCursor(CURSOR_LOOK);
- } else {
- _btnLook._message = LOOK_BTN_STRING;
- lookFlag = 0;
- g_globals->_events.setCursor(CURSOR_WALK);
- }
-
- hiliteObj->draw();
- } else if (hiliteObj) {
- // Inventory item selected
- InvObject *invObject = static_cast<GfxInvImage *>(hiliteObj)->_invObject;
- if (lookFlag) {
- g_globals->_screenSurface.displayText(invObject->_description);
- } else {
- RING_INVENTORY._selectedItem = invObject;
- invObject->setCursor();
- }
- }
- }
-
- _gfxManager.deactivate();
-}
-
-/*--------------------------------------------------------------------------*/
-
-void OptionsDialog::show() {
- OptionsDialog *dlg = new OptionsDialog();
- dlg->draw();
-
- GfxButton *btn = dlg->execute();
-
- if (btn == &dlg->_btnQuit) {
- // Quit game
- if (MessageDialog::show(QUIT_CONFIRM_MSG, CANCEL_BTN_STRING, QUIT_BTN_STRING) == 1) {
- g_vm->quitGame();
- }
- } else if (btn == &dlg->_btnRestart) {
- // Restart game
- g_globals->_game->restartGame();
- } else if (btn == &dlg->_btnSound) {
- // Sound dialog
- SoundDialog::execute();
- } else if (btn == &dlg->_btnSave) {
- // Save button
- g_globals->_game->saveGame();
- } else if (btn == &dlg->_btnRestore) {
- // Restore button
- g_globals->_game->restoreGame();
- }
-
- dlg->remove();
- delete dlg;
-}
-
-OptionsDialog::OptionsDialog() {
- // Set the element text
- _gfxMessage.set(OPTIONS_MSG, 140, ALIGN_LEFT);
- _btnRestore.setText(RESTORE_BTN_STRING);
- _btnSave.setText(SAVE_BTN_STRING);
- _btnRestart.setText(RESTART_BTN_STRING);
- _btnQuit.setText(QUIT_BTN_STRING);
- _btnSound.setText(SOUND_BTN_STRING);
- _btnResume.setText(RESUME_BTN_STRING);
-
- // Set position of the elements
- _gfxMessage._bounds.moveTo(0, 1);
- _btnRestore._bounds.moveTo(0, _gfxMessage._bounds.bottom + 1);
- _btnSave._bounds.moveTo(0, _btnRestore._bounds.bottom + 1);
- _btnRestart._bounds.moveTo(0, _btnSave._bounds.bottom + 1);
- _btnQuit._bounds.moveTo(0, _btnRestart._bounds.bottom + 1);
- _btnSound._bounds.moveTo(0, _btnQuit._bounds.bottom + 1);
- _btnResume._bounds.moveTo(0, _btnSound._bounds.bottom + 1);
-
- // Set all the buttons to the widest button
- GfxButton *btnList[6] = {&_btnRestore, &_btnSave, &_btnRestart, &_btnQuit, &_btnSound, &_btnResume};
- int16 btnWidth = 0;
- for (int idx = 0; idx < 6; ++idx)
- btnWidth = MAX(btnWidth, btnList[idx]->_bounds.width());
- for (int idx = 0; idx < 6; ++idx)
- btnList[idx]->_bounds.setWidth(btnWidth);
-
- // Add the items to the dialog
- addElements(&_gfxMessage, &_btnRestore, &_btnSave, &_btnRestart, &_btnQuit, &_btnSound, &_btnResume, NULL);
-
- // Set the dialog size and position
- frame();
- setCenter(160, 100);
-}
-
-/*--------------------------------------------------------------------------*/
-
void SoundDialog::execute() {
ConfigDialog *dlg = new ConfigDialog();
dlg->runModal();