diff options
Diffstat (limited to 'engines/tsage/ringworld')
-rw-r--r-- | engines/tsage/ringworld/ringworld_demo.cpp | 8 | ||||
-rw-r--r-- | engines/tsage/ringworld/ringworld_demo.h | 2 | ||||
-rw-r--r-- | engines/tsage/ringworld/ringworld_dialogs.cpp | 238 | ||||
-rw-r--r-- | engines/tsage/ringworld/ringworld_dialogs.h | 39 | ||||
-rw-r--r-- | engines/tsage/ringworld/ringworld_logic.cpp | 114 | ||||
-rw-r--r-- | engines/tsage/ringworld/ringworld_logic.h | 27 | ||||
-rw-r--r-- | engines/tsage/ringworld/ringworld_scenes1.cpp | 2 | ||||
-rw-r--r-- | engines/tsage/ringworld/ringworld_scenes10.cpp | 28 | ||||
-rw-r--r-- | engines/tsage/ringworld/ringworld_scenes10.h | 14 | ||||
-rw-r--r-- | engines/tsage/ringworld/ringworld_scenes3.cpp | 6 | ||||
-rw-r--r-- | engines/tsage/ringworld/ringworld_scenes5.cpp | 22 | ||||
-rw-r--r-- | engines/tsage/ringworld/ringworld_scenes5.h | 8 | ||||
-rw-r--r-- | engines/tsage/ringworld/ringworld_scenes6.cpp | 4 | ||||
-rw-r--r-- | engines/tsage/ringworld/ringworld_scenes8.cpp | 46 | ||||
-rw-r--r-- | engines/tsage/ringworld/ringworld_scenes8.h | 2 |
15 files changed, 493 insertions, 67 deletions
diff --git a/engines/tsage/ringworld/ringworld_demo.cpp b/engines/tsage/ringworld/ringworld_demo.cpp index adf4aae9dd..fedb19c804 100644 --- a/engines/tsage/ringworld/ringworld_demo.cpp +++ b/engines/tsage/ringworld/ringworld_demo.cpp @@ -41,6 +41,14 @@ Scene *RingworldDemoGame::createScene(int sceneNumber) { return new RingworldDemoScene(); } +bool RingworldDemoGame::canLoadGameStateCurrently() { + return false; +} + +bool RingworldDemoGame::canSaveGameStateCurrently() { + return false; +} + void RingworldDemoGame::quitGame() { if (MessageDialog::show(DEMO_EXIT_MSG, EXIT_BTN_STRING, DEMO_BTN_STRING) == 0) g_vm->quitGame(); diff --git a/engines/tsage/ringworld/ringworld_demo.h b/engines/tsage/ringworld/ringworld_demo.h index 30527b0aea..7c0ac39285 100644 --- a/engines/tsage/ringworld/ringworld_demo.h +++ b/engines/tsage/ringworld/ringworld_demo.h @@ -44,6 +44,8 @@ public: virtual Scene *createScene(int sceneNumber); virtual void quitGame(); virtual void processEvent(Event &event); + virtual bool canSaveGameStateCurrently(); + virtual bool canLoadGameStateCurrently(); }; class RingworldDemoScene: public Scene { diff --git a/engines/tsage/ringworld/ringworld_dialogs.cpp b/engines/tsage/ringworld/ringworld_dialogs.cpp index 9d1a7effc2..37101c9c58 100644 --- a/engines/tsage/ringworld/ringworld_dialogs.cpp +++ b/engines/tsage/ringworld/ringworld_dialogs.cpp @@ -210,13 +210,249 @@ void RightClickDialog::execute() { break; case 6: // Dialog options - OptionsDialog::show(); + Ringworld::OptionsDialog::show(); break; } _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); +} + +/*--------------------------------------------------------------------------*/ + +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(); +} + } // End of namespace Ringworld } // End of namespace TsAGE diff --git a/engines/tsage/ringworld/ringworld_dialogs.h b/engines/tsage/ringworld/ringworld_dialogs.h index 11a8f10e70..b14b3f6d78 100644 --- a/engines/tsage/ringworld/ringworld_dialogs.h +++ b/engines/tsage/ringworld/ringworld_dialogs.h @@ -63,6 +63,45 @@ public: void execute(); }; +class OptionsDialog : public ModalDialog { +private: + GfxButton _btnSave, _btnRestore, _btnRestart; + GfxButton _btnQuit, _btnResume; + GfxButton _btnSound; + GfxMessage _gfxMessage; +public: + OptionsDialog(); + virtual ~OptionsDialog() {} + GfxButton *execute() { return GfxDialog::execute(&_btnResume); } + + static void show(); +}; + +/*--------------------------------------------------------------------------*/ + +class GfxInvImage : public GfxImage { +public: + InvObject *_invObject; +public: + GfxInvImage() : GfxImage(), _invObject(NULL) {} + + virtual bool process(Event &event); +}; + +#define MAX_INVOBJECT_DISPLAY 20 + +class InventoryDialog : public ModalDialog { +private: + Common::Array<GfxInvImage *> _images; + GfxButton _btnOk, _btnLook; +public: + InventoryDialog(); + virtual ~InventoryDialog(); + void execute(); + + static void show(); +}; + } // End of namespace Ringworld } // End of namespace TsAGE diff --git a/engines/tsage/ringworld/ringworld_logic.cpp b/engines/tsage/ringworld/ringworld_logic.cpp index 3fb284f5da..ad67b66f69 100644 --- a/engines/tsage/ringworld/ringworld_logic.cpp +++ b/engines/tsage/ringworld/ringworld_logic.cpp @@ -192,6 +192,20 @@ Scene *RingworldGame::createScene(int sceneNumber) { } } +/** + * Returns true if it is currently okay to restore a game + */ +bool RingworldGame::canLoadGameStateCurrently() { + return !g_globals->getFlag(50); +} + +/** + * Returns true if it is currently okay to save the game + */ +bool RingworldGame::canSaveGameStateCurrently() { + return !g_globals->getFlag(50); +} + /*--------------------------------------------------------------------------*/ DisplayHotspot::DisplayHotspot(int regionId, ...) { @@ -572,6 +586,106 @@ void RingworldGame::rightClick() { delete dlg; } +/*--------------------------------------------------------------------------*/ + +NamedHotspot::NamedHotspot() : SceneHotspot() { + _resNum = 0; + _lookLineNum = _useLineNum = _talkLineNum = -1; +} + +void NamedHotspot::doAction(int action) { + switch (action) { + case CURSOR_WALK: + // Nothing + return; + case CURSOR_LOOK: + if (_lookLineNum == -1) + break; + + SceneItem::display(_resNum, _lookLineNum, SET_Y, 20, SET_WIDTH, 200, SET_EXT_BGCOLOR, 7, LIST_END); + return; + case CURSOR_USE: + if (_useLineNum == -1) + break; + + SceneItem::display(_resNum, _useLineNum, SET_Y, 20, SET_WIDTH, 200, SET_EXT_BGCOLOR, 7, LIST_END); + return; + case CURSOR_TALK: + if (_talkLineNum == -1) + break; + + SceneItem::display(_resNum, _lookLineNum, SET_Y, 20, SET_WIDTH, 200, SET_EXT_BGCOLOR, 7, LIST_END); + return; + default: + break; + } + + SceneHotspot::doAction(action); +} + +void NamedHotspot::setDetails(int ys, int xs, int ye, int xe, const int resnum, const int lookLineNum, const int useLineNum) { + setBounds(ys, xe, ye, xs); + _resNum = resnum; + _lookLineNum = lookLineNum; + _useLineNum = useLineNum; + _talkLineNum = -1; + g_globals->_sceneItems.addItems(this, NULL); +} + +void NamedHotspot::setDetails(const Rect &bounds, int resNum, int lookLineNum, int talkLineNum, int useLineNum, int mode, SceneItem *item) { + setBounds(bounds); + _resNum = resNum; + _lookLineNum = lookLineNum; + _talkLineNum = talkLineNum; + _useLineNum = useLineNum; + + switch (mode) { + case 2: + g_globals->_sceneItems.push_front(this); + break; + case 4: + g_globals->_sceneItems.addBefore(item, this); + break; + case 5: + g_globals->_sceneItems.addAfter(item, this); + break; + default: + g_globals->_sceneItems.push_back(this); + break; + } +} + +void NamedHotspot::setDetails(int sceneRegionId, int resNum, int lookLineNum, int talkLineNum, int useLineNum, int mode) { + _sceneRegionId = sceneRegionId; + _resNum = resNum; + _lookLineNum = lookLineNum; + _talkLineNum = talkLineNum; + _useLineNum = useLineNum; + + // Handle adding hotspot to scene items list as necessary + switch (mode) { + case 2: + GLOBALS._sceneItems.push_front(this); + break; + case 3: + break; + default: + GLOBALS._sceneItems.push_back(this); + break; + } +} + +void NamedHotspot::synchronize(Serializer &s) { + SceneHotspot::synchronize(s); + s.syncAsSint16LE(_resNum); + s.syncAsSint16LE(_lookLineNum); + s.syncAsSint16LE(_useLineNum); + + if (g_vm->getGameID() == GType_BlueForce) + s.syncAsSint16LE(_talkLineNum); +} + + } // End of namespace Ringworld } // End of namespace TsAGE diff --git a/engines/tsage/ringworld/ringworld_logic.h b/engines/tsage/ringworld/ringworld_logic.h index 84816347af..6f6a66cc26 100644 --- a/engines/tsage/ringworld/ringworld_logic.h +++ b/engines/tsage/ringworld/ringworld_logic.h @@ -155,6 +155,33 @@ public: virtual Scene *createScene(int sceneNumber); virtual void processEvent(Event &event); virtual void rightClick(); + virtual bool canSaveGameStateCurrently(); + virtual bool canLoadGameStateCurrently(); +}; + +class NamedHotspot : public SceneHotspot { +public: + int _resNum, _lookLineNum, _useLineNum, _talkLineNum; + NamedHotspot(); + + virtual void doAction(int action); + virtual Common::String getClassName() { return "NamedHotspot"; } + virtual void synchronize(Serializer &s); + virtual void setDetails(int ys, int xs, int ye, int xe, const int resnum, const int lookLineNum, const int useLineNum); + virtual void setDetails(const Rect &bounds, int resNum, int lookLineNum, int talkLineNum, int useLineNum, int mode, SceneItem *item); + virtual void setDetails(int sceneRegionId, int resNum, int lookLineNum, int talkLineNum, int useLineNum, int mode); +}; + +class NamedHotspotExt : public NamedHotspot { +public: + int _flag; + NamedHotspotExt() { _flag = 0; } + + virtual Common::String getClassName() { return "NamedHotspot"; } + virtual void synchronize(Serializer &s) { + NamedHotspot::synchronize(s); + s.syncAsSint16LE(_flag); + } }; } // End of namespace Ringworld diff --git a/engines/tsage/ringworld/ringworld_scenes1.cpp b/engines/tsage/ringworld/ringworld_scenes1.cpp index 8227e2a884..4d9d565705 100644 --- a/engines/tsage/ringworld/ringworld_scenes1.cpp +++ b/engines/tsage/ringworld/ringworld_scenes1.cpp @@ -2607,7 +2607,7 @@ void Scene90::stripCallback(int v) { Scene90 *scene = (Scene90 *)g_globals->_sceneManager._scene; if (v == 1) - scene->_object2.animate(ANIM_MODE_7, NULL); + scene->_object2.animate(ANIM_MODE_7, 0, NULL); else if (v == 2) scene->_object2.animate(ANIM_MODE_NONE); } diff --git a/engines/tsage/ringworld/ringworld_scenes10.cpp b/engines/tsage/ringworld/ringworld_scenes10.cpp index 9a9f63705b..f9a8e7996a 100644 --- a/engines/tsage/ringworld/ringworld_scenes10.cpp +++ b/engines/tsage/ringworld/ringworld_scenes10.cpp @@ -20,7 +20,6 @@ * */ -#include "graphics/cursorman.h" #include "tsage/ringworld/ringworld_scenes10.h" #include "tsage/scenes.h" #include "tsage/tsage.h" @@ -54,6 +53,7 @@ void Object9350::draw() { * Scene 9100 - Near beach: Slave washing clothes * *--------------------------------------------------------------------------*/ +// Slave hotspot void Scene9100::SceneHotspot1::doAction(int action) { Scene9100 *scene = (Scene9100 *)g_globals->_sceneManager._scene; @@ -102,7 +102,7 @@ void Scene9100::signal() { g_globals->_sceneManager.changeScene(9150); break; case 9105: - _sceneHotspot3.remove(); + _hotspotCleanedClothes.remove(); // No break on purpose case 9103: case 9104: @@ -145,13 +145,13 @@ void Scene9100::postInit(SceneObjectList *OwnerList) { _object6.setStrip(6); _object6.setFrame(1); _object6.setPosition(Common::Point(138, 166)); - _sceneHotspot3.setDetails(145, 125, 166, 156, 9100, 40, 43); + _hotspotCleanedClothes.setDetails(145, 125, 166, 156, 9100, 40, 43); } - _sceneHotspot1.setDetails(140, 176, 185, 215, 9100, 36, 37); - _sceneHotspot2.setDetails(161, 138, 182, 175, 9100, 38, 39); - _sceneHotspot4.setDetails(37, 196, 47, 320, 9100, 44, -1); - _sceneHotspot5.setDetails(69, 36, 121, 272, 9100, 45, 46); - _sceneHotspot6.setDetails(127, 0, 200, 52, 9100, 47, 48); + _hotspotSlave.setDetails(140, 176, 185, 215, 9100, 36, 37); + _hotspotSoiledClothes.setDetails(161, 138, 182, 175, 9100, 38, 39); + _hotspotIsland.setDetails(37, 196, 47, 320, 9100, 44, -1); + _hotspotBoulders.setDetails(69, 36, 121, 272, 9100, 45, 46); + _hotspotTrees.setDetails(127, 0, 200, 52, 9100, 47, 48); g_globals->_soundHandler.play(251); if (g_globals->_sceneManager._previousScene == 9150) { @@ -708,7 +708,7 @@ void Scene9360::postInit(SceneObjectList *OwnerList) { * *--------------------------------------------------------------------------*/ Scene9400::Scene9400() { - _field1032 = 0; + _hittingAnvil = false; } void Scene9400::SceneHotspot7::doAction(int action) { @@ -766,12 +766,12 @@ void Scene9400::signal() { void Scene9400::dispatch() { if ((_object1._animateMode == 2) && (_object1._strip == 1) && (_object1._frame == 4)){ - if (_field1032 == 0) { + if (_hittingAnvil == false) { _soundHandler.play(296); - _field1032 = 1; + _hittingAnvil = true; } } else { - _field1032 = 0; + _hittingAnvil = false; } if (_action == 0) { if (g_globals->_player._position.y < 120) { @@ -825,7 +825,7 @@ void Scene9400::postInit(SceneObjectList *OwnerList) { void Scene9400::synchronize(Serializer &s) { Scene::synchronize(s); if (s.getVersion() >= 3) - s.syncAsSint16LE(_field1032); + s.syncAsSint16LE(_hittingAnvil); } /*-------------------------------------------------------------------------- @@ -1181,7 +1181,7 @@ void Scene9500::postInit(SceneObjectList *OwnerList) { _object2.setFrame(_object2.getFrameCount()); _object2.setPosition(Common::Point(303, 130)); _object2.fixPriority(132); - if (RING_INVENTORY._helmet._sceneNumber == 1) { + if (RING_INVENTORY._helmet._sceneNumber != 1) { _hotspot2.setDetails(87, 294, 104, 314, 9400, 17, -1); } else { _object2.setStrip(2); diff --git a/engines/tsage/ringworld/ringworld_scenes10.h b/engines/tsage/ringworld/ringworld_scenes10.h index 6bca48776b..48859ab454 100644 --- a/engines/tsage/ringworld/ringworld_scenes10.h +++ b/engines/tsage/ringworld/ringworld_scenes10.h @@ -80,12 +80,12 @@ public: SceneObject _object4; SceneObject _object5; SceneObject _object6; - SceneHotspot1 _sceneHotspot1; - NamedHotspot _sceneHotspot2; - NamedHotspot _sceneHotspot3; - NamedHotspot _sceneHotspot4; - NamedHotspot _sceneHotspot5; - NamedHotspot _sceneHotspot6; + SceneHotspot1 _hotspotSlave; + NamedHotspot _hotspotSoiledClothes; + NamedHotspot _hotspotCleanedClothes; + NamedHotspot _hotspotIsland; + NamedHotspot _hotspotBoulders; + NamedHotspot _hotspotTrees; virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void signal(); @@ -236,7 +236,7 @@ public: NamedHotspot _hotspot5; NamedHotspot _hotspot6; ASound _soundHandler; - int _field1032; + bool _hittingAnvil; SceneHotspot7 _hotspot7; SceneHotspot8 _hotspot8; diff --git a/engines/tsage/ringworld/ringworld_scenes3.cpp b/engines/tsage/ringworld/ringworld_scenes3.cpp index 7103a48ed9..81190aea7b 100644 --- a/engines/tsage/ringworld/ringworld_scenes3.cpp +++ b/engines/tsage/ringworld/ringworld_scenes3.cpp @@ -453,14 +453,14 @@ void Scene2000::stripCallback(int v) { switch (v) { case 0: _object9.setStrip(3); - _object9.animate(ANIM_MODE_7, NULL); + _object9.animate(ANIM_MODE_7, 0, NULL); _object10.setStrip(6); _object10.setFrame(1); _object10.animate(ANIM_MODE_5, NULL); break; case 1: _object10.setStrip(5); - _object10.animate(ANIM_MODE_7, NULL); + _object10.animate(ANIM_MODE_7, 0, NULL); _object9.setStrip(4); _object9.setFrame(1); _object9.animate(ANIM_MODE_5, NULL); @@ -1921,7 +1921,7 @@ void Scene2100::stripCallback(int v) { switch (v) { case 1: _object4._numFrames = 4; - _object4.animate(ANIM_MODE_7, NULL); + _object4.animate(ANIM_MODE_7, 0, NULL); break; case 2: _object4.animate(ANIM_MODE_NONE, NULL); diff --git a/engines/tsage/ringworld/ringworld_scenes5.cpp b/engines/tsage/ringworld/ringworld_scenes5.cpp index 3cf1207e9e..49726eba2e 100644 --- a/engines/tsage/ringworld/ringworld_scenes5.cpp +++ b/engines/tsage/ringworld/ringworld_scenes5.cpp @@ -1478,7 +1478,7 @@ void Scene4025::Hole::doAction(int action) { void Scene4025::Peg::synchronize(Serializer &s) { SceneObject::synchronize(s); - s.syncAsSint16LE(_field88); + s.syncAsSint16LE(_pegId); s.syncAsSint16LE(_armStrip); } @@ -1513,35 +1513,35 @@ void Scene4025::postInit(SceneObjectList *OwnerList) { _pegPtr = _pegPtr2 = NULL; _peg1.postInit(); - _peg1._field88 = 1; + _peg1._pegId = 1; _peg1.setVisage(4025); _peg1.setStrip(2); _peg1.setFrame(1); _peg1.setPosition(Common::Point(203, 61)); _peg2.postInit(); - _peg2._field88 = 4; + _peg2._pegId = 4; _peg2.setVisage(4025); _peg2.setStrip(2); _peg2.setFrame(2); _peg2.setPosition(Common::Point(195, 57)); _peg3.postInit(); - _peg3._field88 = 0; + _peg3._pegId = 0; _peg3.setVisage(4025); _peg3.setStrip(2); _peg3.setFrame(3); _peg3.setPosition(Common::Point(202, 66)); _peg4.postInit(); - _peg4._field88 = 3; + _peg4._pegId = 3; _peg4.setVisage(4025); _peg4.setStrip(2); _peg4.setFrame(4); _peg4.setPosition(Common::Point(194, 68)); _peg5.postInit(); - _peg5._field88 = 2; + _peg5._pegId = 2; _peg5.setVisage(4025); _peg5.setStrip(1); _peg5.setFrame(5); @@ -2173,7 +2173,7 @@ void Scene4050::Action4::signal() { case 5: scene->_hotspot16.setStrip2(4); scene->_hotspot16.setFrame(1); - scene->_hotspot16.animate(ANIM_MODE_4, 4, 1, this);; + scene->_hotspot16.animate(ANIM_MODE_4, 4, 1, this); break; case 6: scene->_hotspot16.animate(ANIM_MODE_5, NULL); @@ -4311,7 +4311,7 @@ void Scene4301::Action1::signal() { setDelay(20); break; case 21: - scene->_field68E = true; + scene->_puzzleDone = true; remove(); break; } @@ -4412,7 +4412,7 @@ void Scene4301::postInit(SceneObjectList *OwnerList) { Scene::postInit(); setZoomPercents(0, 100, 200, 100); - _field68E = false; + _puzzleDone = false; RING_INVENTORY._stasisBox2._sceneNumber = 1; _hotspot4.setDetails(97, 76, 127, 102, 4300, 5, 6); @@ -4432,8 +4432,8 @@ void Scene4301::postInit(SceneObjectList *OwnerList) { void Scene4301::dispatch() { if (_action) { _action->dispatch(); - } else if (_field68E) { - _field68E = 0; + } else if (_puzzleDone) { + _puzzleDone = false; g_globals->clearFlag(50); g_globals->_sceneManager._fadeMode = FADEMODE_NONE; g_globals->_sceneManager.setNewScene(4300); diff --git a/engines/tsage/ringworld/ringworld_scenes5.h b/engines/tsage/ringworld/ringworld_scenes5.h index 80e67755bd..c93df2a1d8 100644 --- a/engines/tsage/ringworld/ringworld_scenes5.h +++ b/engines/tsage/ringworld/ringworld_scenes5.h @@ -215,10 +215,10 @@ class Scene4025 : public Scene { }; class Peg : public SceneObject { public: - int _field88; + int _pegId; int _armStrip; - Peg() : SceneObject() { _field88 = 0; _armStrip = 3; } + Peg() : SceneObject() { _pegId = 0; _armStrip = 3; } virtual void synchronize(Serializer &s); virtual void doAction(int action); }; @@ -682,13 +682,13 @@ public: SceneObject _hotspot1, _hotspot2, _hotspot3; Hotspot4 _hotspot4; Hotspot5 _hotspot5; - bool _field68E; + bool _puzzleDone; virtual void postInit(SceneObjectList *OwnerList = NULL); virtual void dispatch(); virtual void synchronize(Serializer &s) { Scene::synchronize(s); - s.syncAsSint16LE(_field68E); + s.syncAsSint16LE(_puzzleDone); } }; diff --git a/engines/tsage/ringworld/ringworld_scenes6.cpp b/engines/tsage/ringworld/ringworld_scenes6.cpp index cd3415f511..30a91b57aa 100644 --- a/engines/tsage/ringworld/ringworld_scenes6.cpp +++ b/engines/tsage/ringworld/ringworld_scenes6.cpp @@ -1124,7 +1124,7 @@ void Scene5100::postInit(SceneObjectList *OwnerList) { _hotspot4.setVisage(5363); _hotspot4.setPosition(Common::Point(1025, 65)); _hotspot4.setStrip(4); - _hotspot4.animate(ANIM_MODE_7, 0, NULL);; + _hotspot4.animate(ANIM_MODE_7, 0, NULL); g_globals->_sceneItems.push_back(&_hotspot4); _hotspot9.postInit(); @@ -1562,7 +1562,7 @@ void Scene5200::Hotspot9::doAction(int action) { SceneItem::display2(5200, 14); break; default: - SceneItem::doAction(action); + SceneHotspot::doAction(action); break; } } diff --git a/engines/tsage/ringworld/ringworld_scenes8.cpp b/engines/tsage/ringworld/ringworld_scenes8.cpp index f8fb8b01e7..9cb85a6930 100644 --- a/engines/tsage/ringworld/ringworld_scenes8.cpp +++ b/engines/tsage/ringworld/ringworld_scenes8.cpp @@ -1879,12 +1879,12 @@ void Scene7700::SceneHotspot8::doAction(int action) { scene->_soundHandler.play(259); scene->_object15.setFrame(scene->_object15.getFrameCount()); scene->_object15.animate(ANIM_MODE_6, scene); - if ((scene->_field977 == 2) && (scene->_field97B == 0)) { - scene->_field979++; + if ((scene->_seatCountLeft1 == 2) && (scene->_seatCountLeft2 == 0)) { + scene->_seatCountRight++; } else { - scene->_field97B = 0; - scene->_field979 = 0; - scene->_field977 = 0; + scene->_seatCountLeft2 = 0; + scene->_seatCountRight = 0; + scene->_seatCountLeft1 = 0; } break; default: @@ -1905,26 +1905,26 @@ void Scene7700::SceneHotspot9::doAction(int action) { scene->_soundHandler.play(259); scene->_object15.setFrame(1); scene->_object15.animate(ANIM_MODE_5, scene); - if (scene->_field977 > 2) { - scene->_field97B = 0; - scene->_field979 = 0; - scene->_field977 = 0; + if (scene->_seatCountLeft1 > 2) { + scene->_seatCountLeft2 = 0; + scene->_seatCountRight = 0; + scene->_seatCountLeft1 = 0; } - if (scene->_field979 != 0) { - if (scene->_field979 != 4) { - scene->_field97B = 0; - scene->_field979 = 0; - scene->_field977 = 0; + if (scene->_seatCountRight != 0) { + if (scene->_seatCountRight != 4) { + scene->_seatCountLeft2 = 0; + scene->_seatCountRight = 0; + scene->_seatCountLeft1 = 0; } else { - scene->_field97B++; - if (scene->_field97B == 3) { + scene->_seatCountLeft2++; + if (scene->_seatCountLeft2 == 3) { g_globals->_player.disableControl(); scene->setAction(&scene->_action3); } } } else { - scene->_field977++; + scene->_seatCountLeft1++; } break; default: @@ -2315,9 +2315,9 @@ void Scene7700::postInit(SceneObjectList *OwnerList) { Scene::postInit(); setZoomPercents(100, 80, 200, 100); g_globals->setFlag(53); - _field97B = 0; - _field979 = 0; - _field977 = 0; + _seatCountLeft2 = 0; + _seatCountRight = 0; + _seatCountLeft1 = 0; _stripManager.addSpeaker(&_speakerEText); _stripManager.addSpeaker(&_speakerQText); @@ -2538,9 +2538,9 @@ Scene7700::Scene7700() { void Scene7700::synchronize(Serializer &s) { Scene::synchronize(s); if (s.getVersion() >= 3) { - s.syncAsSint16LE(_field977); - s.syncAsSint16LE(_field979); - s.syncAsSint16LE(_field97B); + s.syncAsSint16LE(_seatCountLeft1); + s.syncAsSint16LE(_seatCountRight); + s.syncAsSint16LE(_seatCountLeft2); } } diff --git a/engines/tsage/ringworld/ringworld_scenes8.h b/engines/tsage/ringworld/ringworld_scenes8.h index 84178c36f9..b24f220f8c 100644 --- a/engines/tsage/ringworld/ringworld_scenes8.h +++ b/engines/tsage/ringworld/ringworld_scenes8.h @@ -480,7 +480,7 @@ public: SceneHotspot11 _sceneHotspot34; SceneHotspot11 _sceneHotspot35; SceneHotspot11 _sceneHotspot36; - int _field977, _field979, _field97B; + int _seatCountLeft1, _seatCountRight, _seatCountLeft2; Scene7700(); virtual void postInit(SceneObjectList *OwnerList = NULL); |