aboutsummaryrefslogtreecommitdiff
path: root/engines/tsage/ringworld
diff options
context:
space:
mode:
Diffstat (limited to 'engines/tsage/ringworld')
-rw-r--r--engines/tsage/ringworld/ringworld_demo.cpp8
-rw-r--r--engines/tsage/ringworld/ringworld_demo.h2
-rw-r--r--engines/tsage/ringworld/ringworld_dialogs.cpp238
-rw-r--r--engines/tsage/ringworld/ringworld_dialogs.h39
-rw-r--r--engines/tsage/ringworld/ringworld_logic.cpp114
-rw-r--r--engines/tsage/ringworld/ringworld_logic.h27
-rw-r--r--engines/tsage/ringworld/ringworld_scenes1.cpp2
-rw-r--r--engines/tsage/ringworld/ringworld_scenes10.cpp28
-rw-r--r--engines/tsage/ringworld/ringworld_scenes10.h14
-rw-r--r--engines/tsage/ringworld/ringworld_scenes3.cpp6
-rw-r--r--engines/tsage/ringworld/ringworld_scenes5.cpp22
-rw-r--r--engines/tsage/ringworld/ringworld_scenes5.h8
-rw-r--r--engines/tsage/ringworld/ringworld_scenes6.cpp4
-rw-r--r--engines/tsage/ringworld/ringworld_scenes8.cpp46
-rw-r--r--engines/tsage/ringworld/ringworld_scenes8.h2
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);