aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/fullpipe/constants.h7
-rw-r--r--engines/fullpipe/fullpipe.cpp3
-rw-r--r--engines/fullpipe/fullpipe.h6
-rw-r--r--engines/fullpipe/gameloader.cpp2
-rw-r--r--engines/fullpipe/gfx.cpp4
-rw-r--r--engines/fullpipe/interaction.cpp18
-rw-r--r--engines/fullpipe/messages.cpp57
-rw-r--r--engines/fullpipe/messages.h6
-rw-r--r--engines/fullpipe/motion.cpp43
-rw-r--r--engines/fullpipe/motion.h2
-rw-r--r--engines/fullpipe/scene.cpp3
-rw-r--r--engines/fullpipe/scenes.cpp29
-rw-r--r--engines/fullpipe/scenes.h5
-rw-r--r--engines/fullpipe/scenes/scene03.cpp4
-rw-r--r--engines/fullpipe/scenes/scene04.cpp276
-rw-r--r--engines/fullpipe/statics.cpp25
-rw-r--r--engines/fullpipe/statics.h4
-rw-r--r--engines/lastexpress/entities/abbot.cpp162
-rw-r--r--engines/lastexpress/entities/abbot.h56
-rw-r--r--engines/lastexpress/entities/alexei.cpp230
-rw-r--r--engines/lastexpress/entities/alexei.h56
-rw-r--r--engines/lastexpress/entities/alouan.cpp48
-rw-r--r--engines/lastexpress/entities/alouan.h10
-rw-r--r--engines/lastexpress/entities/anna.cpp398
-rw-r--r--engines/lastexpress/entities/anna.h113
-rw-r--r--engines/lastexpress/entities/august.cpp32
-rw-r--r--engines/lastexpress/entities/chapters.cpp32
-rw-r--r--engines/lastexpress/entities/coudert.cpp54
-rw-r--r--engines/lastexpress/entities/entity.cpp4
-rw-r--r--engines/lastexpress/entities/entity.h2
-rw-r--r--engines/lastexpress/entities/francois.cpp150
-rw-r--r--engines/lastexpress/entities/francois.h29
-rw-r--r--engines/lastexpress/entities/gendarmes.cpp10
-rw-r--r--engines/lastexpress/entities/kahina.cpp24
-rw-r--r--engines/lastexpress/entities/kronos.cpp4
-rw-r--r--engines/lastexpress/entities/mertens.cpp60
-rw-r--r--engines/lastexpress/entities/milos.cpp30
-rw-r--r--engines/lastexpress/entities/rebecca.cpp8
-rw-r--r--engines/lastexpress/entities/tatiana.cpp14
-rw-r--r--engines/lastexpress/entities/vassili.cpp8
-rw-r--r--engines/lastexpress/entities/verges.cpp2
-rw-r--r--engines/lastexpress/entities/yasmin.cpp74
-rw-r--r--engines/lastexpress/entities/yasmin.h16
-rw-r--r--engines/lastexpress/fight/fight.cpp2
-rw-r--r--engines/lastexpress/game/action.cpp116
-rw-r--r--engines/lastexpress/game/action.h28
-rw-r--r--engines/lastexpress/game/inventory.cpp56
-rw-r--r--engines/lastexpress/game/inventory.h20
-rw-r--r--engines/lastexpress/game/logic.cpp2
-rw-r--r--engines/lastexpress/game/object.cpp24
-rw-r--r--engines/lastexpress/game/object.h28
-rw-r--r--engines/lastexpress/game/savegame.h52
-rw-r--r--engines/lastexpress/game/scenes.cpp12
-rw-r--r--engines/lastexpress/shared.h30
-rw-r--r--engines/lastexpress/sound/sound.cpp2
-rw-r--r--engines/pegasus/neighborhood/mars/mars.cpp2
-rw-r--r--engines/sci/detection_tables.h12
-rw-r--r--engines/sci/engine/kgraphics.cpp3
-rw-r--r--engines/sci/graphics/portrait.cpp244
-rw-r--r--engines/sci/graphics/portrait.h11
-rw-r--r--engines/sci/resource.cpp42
-rw-r--r--engines/sci/resource.h31
-rw-r--r--engines/sci/resource_audio.cpp54
-rw-r--r--engines/sci/sci.cpp2
-rw-r--r--engines/tsage/ringworld2/ringworld2_scenes1.cpp1472
-rw-r--r--engines/tsage/ringworld2/ringworld2_scenes1.h53
66 files changed, 2483 insertions, 1935 deletions
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h
index b774c89ed0..1a59cce787 100644
--- a/engines/fullpipe/constants.h
+++ b/engines/fullpipe/constants.h
@@ -122,6 +122,7 @@ namespace Fullpipe {
#define MV_MAN_JUMPONPLANK 551
#define MV_MAN_LOOKLADDER 520
#define MV_MAN_LOOKUP 4773
+#define MV_MAN_PLANKTOLADDER 553
#define MV_MAN_STARTLADDER 452
#define MV_MAN_STARTLADDER2 2842
#define MV_MAN_STOPLADDER 454
@@ -129,10 +130,12 @@ namespace Fullpipe {
#define MV_MAN_TOLADDER 448
#define MV_MAN_TOLADDER2 2841
#define MV_MAN_TURN_LU 486
+#define MV_MAN_TURN_SUD 1089
#define MV_PNK_WEIGHTLEFT 541
#define MV_PNK_WEIGHTRIGHT 502
#define MV_SC4_COIN_default 1029
#define MV_SPK4_PLAY 3276
+#define MV_SPR_LOWER 543
#define PIC_CMN_EVAL 3468
#define PIC_CSR_DEFAULT 4891
#define PIC_CSR_DEFAULT_INV 4892
@@ -292,13 +295,17 @@ namespace Fullpipe {
#define ST_LBN_8P 2775
#define ST_LBN_9N 2777
#define ST_LBN_9P 2778
+#define ST_MAN_GOLADDER 450
+#define ST_MAN_GOLADDER2 2843
#define ST_MAN_EMPTY 476
#define ST_MAN_LADDERDOWN 521
#define ST_MAN_ONPLANK 552
#define ST_MAN_RIGHT 325
#define ST_MAN_SIT 1164
#define ST_MAN_STANDLADDER 453
+#define ST_MAN_UP 449
#define ST_PNK_WEIGHTLEFT 503
+#define ST_SPR_UP 544
#define TrubaDown 697
#define TrubaLeft 474
#define TrubaRight 696
diff --git a/engines/fullpipe/fullpipe.cpp b/engines/fullpipe/fullpipe.cpp
index a254ea642d..970af423ae 100644
--- a/engines/fullpipe/fullpipe.cpp
+++ b/engines/fullpipe/fullpipe.cpp
@@ -35,6 +35,7 @@
#include "fullpipe/input.h"
#include "fullpipe/scenes.h"
#include "fullpipe/floaters.h"
+#include "fullpipe/motion.h"
#include "fullpipe/console.h"
namespace Fullpipe {
@@ -100,6 +101,7 @@ FullpipeEngine::FullpipeEngine(OSystem *syst, const ADGameDescription *gameDesc)
_scene2 = 0;
_movTable = 0;
_floaters = 0;
+ _mgm = 0;
_globalMessageQueueList = 0;
_messageHandlers = 0;
@@ -168,6 +170,7 @@ void FullpipeEngine::initialize() {
_sceneRect.bottom = 599;
_floaters = new Floaters;
+ _mgm = new MGM;
}
Common::Error FullpipeEngine::run() {
diff --git a/engines/fullpipe/fullpipe.h b/engines/fullpipe/fullpipe.h
index ca025a48a2..eb502cbadf 100644
--- a/engines/fullpipe/fullpipe.h
+++ b/engines/fullpipe/fullpipe.h
@@ -61,6 +61,7 @@ class GameObject;
class GlobalMessageQueueList;
struct MessageHandler;
struct MovTable;
+class MGM;
class NGIArchive;
class Scene;
class SoundList;
@@ -173,6 +174,9 @@ public:
MovTable *_movTable;
Floaters *_floaters;
+ MGM *_mgm;
+
+ Common::Array<Common::Point *> _arcadeKeys;
void initMap();
void updateMapPiece(int mapId, int update);
@@ -239,7 +243,9 @@ public:
void openMainMenu();
void initArcadeKeys(const char *varname);
+ void processArcade(ExCommand *ex);
void winArcade();
+
void getAllInventory();
int lift_getButtonIdP(int objid);
diff --git a/engines/fullpipe/gameloader.cpp b/engines/fullpipe/gameloader.cpp
index a2ab71d7e3..e130337001 100644
--- a/engines/fullpipe/gameloader.cpp
+++ b/engines/fullpipe/gameloader.cpp
@@ -209,7 +209,7 @@ bool GameLoader::gotoScene(int sceneId, int entranceId) {
ex->_messageNum = 0;
ex->_excFlags |= 3;
- mq->_exCommands.push_back(ex);
+ mq->addExCommandToEnd(ex);
}
mq->setFlags(mq->getFlags() | 1);
diff --git a/engines/fullpipe/gfx.cpp b/engines/fullpipe/gfx.cpp
index a4dbc30669..d54f7591b4 100644
--- a/engines/fullpipe/gfx.cpp
+++ b/engines/fullpipe/gfx.cpp
@@ -659,8 +659,8 @@ void Picture::displayPicture() {
if (!_dataSize)
return;
- g_fullpipe->_backgroundSurface.fillRect(Common::Rect(0, 0, 799, 599), 0);
- g_fullpipe->_system->copyRectToScreen(g_fullpipe->_backgroundSurface.getBasePtr(0, 0), g_fullpipe->_backgroundSurface.pitch, 0, 0, 799, 599);
+ g_fullpipe->_backgroundSurface.fillRect(Common::Rect(0, 0, 800, 600), 0);
+ g_fullpipe->_system->copyRectToScreen(g_fullpipe->_backgroundSurface.getBasePtr(0, 0), g_fullpipe->_backgroundSurface.pitch, 0, 0, 800, 600);
draw(0, 0, 0, 0);
diff --git a/engines/fullpipe/interaction.cpp b/engines/fullpipe/interaction.cpp
index b513d2b8ee..cd9aad5b22 100644
--- a/engines/fullpipe/interaction.cpp
+++ b/engines/fullpipe/interaction.cpp
@@ -186,7 +186,7 @@ bool InteractionController::handleInteraction(StaticANIObject *subj, GameObject
ex->_excFlags = 3;
ex->_field_14 = (obj->_objtype != kObjTypePictureObject);
ex->_field_20 = invId;
- mq->_exCommands.push_back(ex);
+ mq->addExCommandToEnd(ex);
if (mq->_isFinished) {
mq->_isFinished = 0;
@@ -255,7 +255,7 @@ LABEL_38:
ex->_field_14 = 0x100;
ex->_messageNum = 0;
ex->_excFlags = 3;
- mq->_exCommands.push_back(ex);
+ mq->addExCommandToEnd(ex);
}
ex = new ExCommand(obj->_id, 34, 0x100, 0, 0, 0, 1, 0, 0, 0);
@@ -263,19 +263,19 @@ LABEL_38:
ex->_field_14 = 0x100;
ex->_messageNum = 0;
ex->_excFlags = 3;
- mq->_exCommands.push_back(ex);
+ mq->addExCommandToEnd(ex);
ex = new ExCommand(subj->_id, 34, 0x100, 0, 0, 0, 1, 0, 0, 0);
ex->_keyCode = subj->_okeyCode;
ex->_field_14 = 0x100;
ex->_messageNum = 0;
ex->_excFlags = 3;
- mq->_exCommands.push_back(ex);
+ mq->addExCommandToEnd(ex);
ex = new ExCommand(subj->_id, 17, 0x40, 0, 0, 0, 1, 0, 0, 0);
ex->_excFlags |= 3;
ex->_keyCode = 0;
- mq->_exCommands.push_back(ex);
+ mq->addExCommandToEnd(ex);
if (!mq->chain(subj)) {
delete mq;
@@ -317,7 +317,7 @@ LABEL_38:
ex->_excFlags = 3;
ex->_field_20 = invId;
ex->_field_14 = (obj->_objtype != kObjTypePictureObject);
- mq->_exCommands.push_back(ex);
+ mq->addExCommandToEnd(ex);
someFlag = true;
@@ -357,14 +357,14 @@ LABEL_38:
ex->_field_14 = 0x80;
ex->_keyCode = ani->_okeyCode;
ex->_excFlags = 3;
- mq->_exCommands.push_back(ex);
+ mq->addExCommandToEnd(ex);
}
}
ex = new ExCommand(ani->_id, 34, 0x100, 0, 0, 0, 1, 0, 0, 0);
ex->_keyCode = ani->_okeyCode;
ex->_field_14 = 0x100;
ex->_excFlags = 3;
- mq->_exCommands.push_back(ex);
+ mq->addExCommandToEnd(ex);
} else {
ex = new ExCommand(subj->_id, 55, 0, 0, 0, 0, 1, 0, 0, 0);
ex->_x = ani->_id;
@@ -373,7 +373,7 @@ LABEL_38:
ex->_excFlags = 2;
ex->_field_14 = (obj->_objtype != kObjTypePictureObject);
ex->_field_20 = invId;
- mq->_exCommands.push_back(ex);
+ mq->addExCommandToEnd(ex);
if (!mq->_isFinished)
return true;
diff --git a/engines/fullpipe/messages.cpp b/engines/fullpipe/messages.cpp
index 4abf2ef56f..8ed99fce15 100644
--- a/engines/fullpipe/messages.cpp
+++ b/engines/fullpipe/messages.cpp
@@ -309,7 +309,7 @@ void MessageQueue::update() {
if (_counter > 0)
_counter--;
- if (_exCommands.size()) {
+ if (getCount()) {
sendNextCommand();
} else if (_counter == 0) {
_isFinished = 1;
@@ -326,8 +326,12 @@ void MessageQueue::addExCommand(ExCommand *ex) {
_exCommands.push_front(ex);
}
+void MessageQueue::addExCommandToEnd(ExCommand *ex) {
+ _exCommands.push_back(ex);
+}
+
ExCommand *MessageQueue::getExCommandByIndex(uint idx) {
- if (idx > _exCommands.size())
+ if (idx > getCount())
return 0;
Common::List<ExCommand *>::iterator it = _exCommands.begin();
@@ -341,7 +345,7 @@ ExCommand *MessageQueue::getExCommandByIndex(uint idx) {
}
void MessageQueue::deleteExCommandByIndex(uint idx, bool doFree) {
- if (idx > _exCommands.size())
+ if (idx > getCount())
return;
Common::List<ExCommand *>::iterator it = _exCommands.begin();
@@ -351,10 +355,10 @@ void MessageQueue::deleteExCommandByIndex(uint idx, bool doFree) {
idx--;
}
- _exCommands.erase(it);
-
if (doFree)
delete *it;
+
+ _exCommands.erase(it);
}
void MessageQueue::transferExCommands(MessageQueue *mq) {
@@ -365,7 +369,7 @@ void MessageQueue::transferExCommands(MessageQueue *mq) {
}
void MessageQueue::sendNextCommand() {
- if (_exCommands.size()) {
+ if (getCount()) {
if (!(_flags & 4) && (_flags & 1)) {
messageQueueCallback1(16);
}
@@ -492,7 +496,8 @@ int MessageQueue::calcDuration(StaticANIObject *obj) {
ExCommand *ex;
Movement *mov;
- for (uint i = 0; (ex = getExCommandByIndex(i)); i++)
+ for (uint i = 0; i < getCount(); i++) {
+ ex = getExCommandByIndex(i);
if (ex->_parentId == obj->_id) {
if (ex->_messageKind == 1 || ex->_messageKind == 20) {
if ((mov = obj->getMovementById(ex->_messageNum)) != 0) {
@@ -503,12 +508,13 @@ int MessageQueue::calcDuration(StaticANIObject *obj) {
}
}
}
+ }
return res;
}
void MessageQueue::changeParam28ForObjectId(int objId, int oldParam28, int newParam28) {
- for (uint i = 0; i < _exCommands.size(); i++) {
+ for (uint i = 0; i < getCount(); i++) {
ExCommand *ex = getExCommandByIndex(i);
int k = ex->_messageKind;
@@ -557,16 +563,32 @@ void GlobalMessageQueueList::disableQueueById(int id) {
}
int GlobalMessageQueueList::compact() {
+ int *useList = new int[size() + 2];
+
+ for (uint i = 0; i < size() + 2; i++)
+ useList[i] = 0;
+
for (uint i = 0; i < size();) {
if (((MessageQueue *)_storage[i])->_isFinished) {
disableQueueById(_storage[i]->_id);
remove_at(i);
} else {
+ if (_storage[i]->_id < size() + 2)
+ useList[_storage[i]->_id] = 1;
i++;
}
}
- return size() + 1;
+ uint i;
+
+ for (i = 1; i < size() + 2; i++) {
+ if (!useList[i])
+ break;
+ }
+
+ delete [] useList;
+
+ return i;
}
void GlobalMessageQueueList::addMessageQueue(MessageQueue *msg) {
@@ -779,8 +801,8 @@ bool chainQueue(int queueId, int flags) {
nmq->_flags |= flags;
- if (!mq->chain(0)) {
- delete mq;
+ if (!nmq->chain(0)) {
+ delete nmq;
return false;
}
@@ -788,4 +810,17 @@ bool chainQueue(int queueId, int flags) {
return true;
}
+void postExCommand(int parentId, int keyCode, int x, int y, int f20, int f14) {
+ ExCommand *ex = new ExCommand(parentId, 17, 64, 0, 0, 0, 1, 0, 0, 0);
+
+ ex->_keyCode = keyCode;
+ ex->_excFlags |= 3;
+ ex->_x = x;
+ ex->_y = y;
+ ex->_field_20 = f20;
+ ex->_field_14 = f14;
+
+ ex->postMessage();
+}
+
} // End of namespace Fullpipe
diff --git a/engines/fullpipe/messages.h b/engines/fullpipe/messages.h
index 326f05cef3..ca61dad007 100644
--- a/engines/fullpipe/messages.h
+++ b/engines/fullpipe/messages.h
@@ -100,13 +100,15 @@ class MessageQueue : public CObject {
char *_queueName;
int16 _dataId;
CObject *_field_14;
- Common::List<ExCommand *> _exCommands;
int _counter;
int _field_38;
int _isFinished;
int _parId;
int _flag1;
+ private:
+ Common::List<ExCommand *> _exCommands;
+
public:
MessageQueue();
MessageQueue(int dataId);
@@ -121,6 +123,7 @@ class MessageQueue : public CObject {
uint getCount() { return _exCommands.size(); }
void addExCommand(ExCommand *ex);
+ void addExCommandToEnd(ExCommand *ex);
ExCommand *getExCommandByIndex(uint idx);
void deleteExCommandByIndex(uint idx, bool doFree);
@@ -175,6 +178,7 @@ void updateGlobalMessageQueue(int id, int objid);
void clearGlobalMessageQueueList1();
bool chainQueue(int queueId, int flags);
+void postExCommand(int parentId, int keyCode, int x, int y, int f20, int f16);
} // End of namespace Fullpipe
diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp
index 20b710d7df..fbe2768486 100644
--- a/engines/fullpipe/motion.cpp
+++ b/engines/fullpipe/motion.cpp
@@ -170,7 +170,7 @@ MessageQueue *MctlCompound::doWalkTo(StaticANIObject *subj, int xpos, int ypos,
for (uint i = 0; i < closestP->_messageQueueObj->getCount(); i++) {
ex = new ExCommand(closestP->_messageQueueObj->getExCommandByIndex(i));
ex->_excFlags |= 2;
- mq->_exCommands.push_back(ex);
+ mq->addExCommandToEnd(ex);
}
ex = new ExCommand(subj->_id, 51, 0, xpos, ypos, 0, 1, 0, 0, 0);
@@ -179,7 +179,7 @@ MessageQueue *MctlCompound::doWalkTo(StaticANIObject *subj, int xpos, int ypos,
ex->_keyCode = subj->_okeyCode;
ex->_excFlags |= 2;
- mq->_exCommands.push_back(ex);
+ mq->addExCommandToEnd(ex);
}
return mq;
@@ -817,7 +817,7 @@ MessageQueue *MovGraph2::buildMovInfo1MessageQueue(MovInfo1 *movInfo) {
ex->_keyCode = _items2[movInfo->field_0]->_obj->_okeyCode;
ex->_field_24 = 1;
ex->_field_14 = -1;
- mq->_exCommands.push_back(ex);
+ mq->addExCommandToEnd(ex);
curX += mg2i->_mx;
curY += mg2i->_my;
@@ -1046,20 +1046,20 @@ MessageQueue *MovGraph2::doWalkTo(StaticANIObject *obj, int xpos, int ypos, int
ex->_keyCode = picAniInfo.field_8;
ex->_excFlags |= 2;
- mq->_exCommands.push_back(ex);
+ mq->addExCommandToEnd(ex);
} else {
ExCommand *ex = new ExCommand(picAniInfo.objectId, 22, obj->_statics->_staticsId, 0, 0, 0, 1, 0, 0, 0);
ex->_keyCode = picAniInfo.field_8;
ex->_excFlags |= 3;
- mq->_exCommands.push_back(ex);
+ mq->addExCommandToEnd(ex);
ex = new ExCommand(picAniInfo.objectId, 5, -1, obj->_ox, obj->_oy, 0, 1, 0, 0, 0);
ex->_field_14 = -1;
ex->_keyCode = picAniInfo.field_8;
ex->_excFlags |= 3;
- mq->_exCommands.push_back(ex);
+ mq->addExCommandToEnd(ex);
}
obj->setPicAniInfo(&picAniInfo);
@@ -1160,6 +1160,7 @@ MessageQueue *MovGraph2::doWalkTo(StaticANIObject *obj, int xpos, int ypos, int
if (_items2[idx]->_subItems[idxsub]._staticsId1 != obj->_statics->_staticsId)
movInfo1.flags |= 2;
+ // FIXME: This somehow corrupts the heap (reported by MSVC)
buildMovInfo1SubItems(&movInfo1, &tempLinkList, &linkInfoSource, &linkInfoDest);
MessageQueue *mq = buildMovInfo1MessageQueue(&movInfo1);
@@ -1519,6 +1520,36 @@ MessageQueue *MGM::genMovement(MGMInfo *mgminfo) {
return 0;
}
+void MGM::updateAnimStatics(StaticANIObject *ani, int staticsId) {
+ if (getItemIndexById(ani->_id) == -1)
+ return;
+
+ if (ani->_movement) {
+ ani->queueMessageQueue(0);
+ ani->_movement->gotoLastFrame();
+ ani->_statics = ani->_movement->_staticsObj2;
+ ani->_movement = 0;
+
+ ani->setOXY(ani->_movement->_ox, ani->_movement->_oy);
+ }
+
+ if (ani->_statics) {
+ Common::Point point;
+
+ getPoint(&point, ani->_id, ani->_statics->_staticsId, staticsId);
+
+ ani->setOXY(ani->_ox + point.x, ani->_oy + point.y);
+
+ ani->_statics = ani->getStaticsById(staticsId);
+ }
+}
+
+Common::Point *MGM::getPoint(Common::Point *point, int aniId, int staticsId1, int staticsId2) {
+ warning("STUB: MGM::getPoint()");
+
+ return point;
+}
+
MovGraphLink::MovGraphLink() {
_distance = 0;
_angle = 0;
diff --git a/engines/fullpipe/motion.h b/engines/fullpipe/motion.h
index 5842b296da..b49fea55bc 100644
--- a/engines/fullpipe/motion.h
+++ b/engines/fullpipe/motion.h
@@ -159,6 +159,8 @@ public:
int getItemIndexById(int objId);
MessageQueue *genMovement(MGMInfo *mgminfo);
+ void updateAnimStatics(StaticANIObject *ani, int staticsId);
+ Common::Point *getPoint(Common::Point *point, int aniId, int staticsId1, int staticsId2);
};
struct MctlLadderMovementVars {
diff --git a/engines/fullpipe/scene.cpp b/engines/fullpipe/scene.cpp
index 61ff3457a7..a5a286cfcb 100644
--- a/engines/fullpipe/scene.cpp
+++ b/engines/fullpipe/scene.cpp
@@ -450,6 +450,9 @@ void Scene::draw() {
debug(6, ">>>>> Scene::draw()");
updateScrolling();
+ // Clean previous stuff
+ g_fullpipe->_backgroundSurface.fillRect(Common::Rect(0, 0, 800, 600), 0);
+
drawContent(60000, 0, true);
objectList_sortByPriority(_staticANIObjectList2);
diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp
index 9dc4c74b15..37d1250ae0 100644
--- a/engines/fullpipe/scenes.cpp
+++ b/engines/fullpipe/scenes.cpp
@@ -72,7 +72,7 @@ Vars::Vars() {
scene04_coinPut = false;
scene04_soundPlaying = false;
scene04_dynamicPhaseIndex = 0;
- scene04_needJumping = false;
+ scene04_dudeOnLadder = false;
scene04_sceneClickX = 0;
scene04_sceneClickY = 0;
@@ -83,7 +83,7 @@ Vars::Vars() {
scene04_var02 = 0;
scene04_var04 = 0;
scene04_walkingKozyawka = 0;
- scene04_var06 = 0;
+ scene04_bottleWeight = 0;
scene04_var07 = 0;
scene04_var08 = 0;
scene04_var09 = 0;
@@ -99,6 +99,7 @@ Vars::Vars() {
scene04_var19 = 0;
scene04_var20 = 0;
scene04_var24 = 0;
+ scene04_var25 = 0;
scene04_bottleY = 0;
scene04_ladderOffset = 0;
@@ -707,7 +708,29 @@ int defaultUpdateCursor() {
}
void FullpipeEngine::initArcadeKeys(const char *varname) {
- warning("STUB: FullpipeEngine::initArcadeKeys(\"%s\")", varname);
+ GameVar *var = getGameLoaderGameVar()->getSubVarByName(varname)->getSubVarByName("KEYPOS");
+
+ if (!var)
+ return;
+
+ int cnt = var->getSubVarsCount();
+
+ for (int i = 0; i < cnt; i++) {
+ Common::Point *point = new Common::Point;
+
+ GameVar *sub = var->getSubVarByIndex(i);
+
+ point->x = sub->getSubVarAsInt("X");
+ point->y = sub->getSubVarAsInt("Y");
+
+ _arcadeKeys.push_back(point);
+ }
+}
+
+void FullpipeEngine::processArcade(ExCommand *ex) {
+ warning("STUB: FullpipeEngine::processArcade()");
}
+
+
} // End of namespace Fullpipe
diff --git a/engines/fullpipe/scenes.h b/engines/fullpipe/scenes.h
index e7960fe010..38f685e82a 100644
--- a/engines/fullpipe/scenes.h
+++ b/engines/fullpipe/scenes.h
@@ -99,7 +99,7 @@ public:
bool scene04_coinPut;
bool scene04_soundPlaying;
- bool scene04_needJumping;
+ bool scene04_dudeOnLadder;
int scene04_dynamicPhaseIndex;
int scene04_sceneClickX;
@@ -115,7 +115,7 @@ public:
int scene04_var02;
int scene04_var04;
- int scene04_var06;
+ int scene04_bottleWeight;
int scene04_var07;
int scene04_var08;
int scene04_var09;
@@ -129,6 +129,7 @@ public:
int scene04_var19;
int scene04_var20;
StaticANIObject *scene04_var24;
+ int scene04_var25;
PictureObject *selector;
};
diff --git a/engines/fullpipe/scenes/scene03.cpp b/engines/fullpipe/scenes/scene03.cpp
index e9f8a240e8..1bfd8b8fcc 100644
--- a/engines/fullpipe/scenes/scene03.cpp
+++ b/engines/fullpipe/scenes/scene03.cpp
@@ -241,7 +241,7 @@ int sceneHandler03(ExCommand *ex) {
g_fullpipe->lift_sub05(ex);
break;
- case 93:
+ case 29:
{
StaticANIObject *ani = g_fullpipe->_currentScene->getStaticANIObjectAtPos(ex->_sceneClickX, ex->_sceneClickY);
if (ani && ani->_id == ANI_LIFTBUTTON) {
@@ -266,7 +266,7 @@ int sceneHandler03(ExCommand *ex) {
break;
}
- case 97:
+ case 33:
{
int res = 0;
diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp
index 3c2c02298a..07ac109477 100644
--- a/engines/fullpipe/scenes/scene04.cpp
+++ b/engines/fullpipe/scenes/scene04.cpp
@@ -61,7 +61,7 @@ void scene04_speakerCallback(int *phase) {
}
void scene04_initScene(Scene *sc) {
- g_vars->scene04_needJumping = false;
+ g_vars->scene04_dudeOnLadder = false;
g_vars->scene04_bottle = sc->getPictureObjectById(PIC_SC4_BOTTLE, 0);
g_vars->scene04_hand = sc->getStaticANIObject1ById(ANI_HAND, -1);
g_vars->scene04_plank = sc->getStaticANIObject1ById(ANI_PLANK, -1);
@@ -164,7 +164,7 @@ void scene04_initScene(Scene *sc) {
g_vars->scene04_soundPlaying = false;
g_vars->scene04_var04 = 0;
g_vars->scene04_walkingKozyawka = 0;
- g_vars->scene04_var06 = 2;
+ g_vars->scene04_bottleWeight = 2;
g_vars->scene04_dynamicPhaseIndex = 0;
g_vars->scene04_kozyawkiAni.clear();
@@ -196,7 +196,7 @@ void scene04_initScene(Scene *sc) {
}
bool sceneHandler04_friesAreWalking() {
- if (g_vars->scene04_needJumping && g_fullpipe->_aniMan->isIdle() && !(g_fullpipe->_aniMan->_flags & 0x100)) {
+ if (g_vars->scene04_dudeOnLadder && g_fullpipe->_aniMan->isIdle() && !(g_fullpipe->_aniMan->_flags & 0x100)) {
int col = g_vars->scene04_ladder->collisionDetection(g_fullpipe->_aniMan);
if (col >= 3 && col <= 6 ) {
Movement *koz;
@@ -244,10 +244,6 @@ int scene04_updateCursor() {
return g_fullpipe->_cursorId;
}
-void sceneHandlers_sub01(ExCommand *ex) {
- warning("STUB: sceneHandlers_sub01()");
-}
-
void sceneHandler04_checkBigBallClick() {
StaticANIObject *ball = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_BIGBALL, -1);
@@ -278,8 +274,114 @@ void sceneHandler04_clickButton() {
}
}
+void sceneHandler04_downLadder(int x, int y) {
+ g_vars->scene04_ladder->method34(g_fullpipe->_aniMan, x + g_vars->scene04_ladder->_ladder_field_20, y + g_vars->scene04_ladder->_ladder_field_24, 0, 0);
+}
+
+void sceneHandler04_walkClimbLadder(ExCommand *ex) {
+ MessageQueue *mq = new MessageQueue(g_fullpipe->_globalMessageQueueList->compact());
+
+ ExCommand *ex1 = new ExCommand(ANI_MAN, 1, MV_MAN_TOLADDER, 0, 0, 0, 1, 0, 0, 0);
+
+ ex1->_keyCode = g_fullpipe->_aniMan->_okeyCode;
+ ex1->_excFlags |= 2;
+
+ mq->addExCommandToEnd(ex1);
+
+ ExCommand *ex2 = new ExCommand(ANI_MAN, 1, MV_MAN_STOPLADDER, 0, 0, 0, 1, 0, 0, 0);
+
+ ex2->_keyCode = g_fullpipe->_aniMan->_okeyCode;
+ ex2->_excFlags |= 2;
+
+ mq->addExCommandToEnd(ex2);
+
+ ExCommand *ex3;
+
+ if (ex) {
+ ex3 = new ExCommand(ex);
+ } else {
+ ex3 = new ExCommand(0, 17, MSG_SC4_CLICKLADDER, 0, 0, 0, 1, 0, 0, 0);
+ ex3->_excFlags |= 3;
+ }
+
+ mq->addExCommandToEnd(ex3);
+
+ mq->setFlags(mq->getFlags() | 1);
+
+ mq->chain(0);
+
+ g_vars->scene04_dudeOnLadder = 1;
+
+ g_vars->scene04_ladder = new MctlLadder;
+ g_vars->scene04_ladder->_objId = MV_MAN_TURN_SUD;
+ g_vars->scene04_ladder->_ladderY = 406;
+ g_vars->scene04_ladder->_ladder_field_14 = 12;
+ g_vars->scene04_ladder->_ladder_field_18 = 0;
+ g_vars->scene04_ladder->_height = -40;
+ g_vars->scene04_ladder->_ladder_field_20 = 0;
+ g_vars->scene04_ladder->_ladder_field_24 = -60;
+
+ g_vars->scene04_ladder->addObject(g_fullpipe->_aniMan);
+
+ if (g_vars->scene04_soundPlaying) {
+ g_vars->scene04_ladder->_movements.front()->movVars->varUpStart = MV_MAN_STARTLADDER2;
+ g_vars->scene04_ladder->_movements.front()->movVars->varUpGo = MV_MAN_GOLADDER2;
+ g_vars->scene04_ladder->_movements.front()->movVars->varUpStop = MV_MAN_STOPLADDER2;
+ g_vars->scene04_ladder->_movements.front()->staticIds[2] = ST_MAN_GOLADDER2;
+ } else {
+ g_vars->scene04_ladder->_movements.front()->movVars->varUpStart = MV_MAN_STARTLADDER;
+ g_vars->scene04_ladder->_movements.front()->movVars->varUpGo = MV_MAN_GOLADDER;
+ g_vars->scene04_ladder->_movements.front()->movVars->varUpStop = MV_MAN_STOPLADDER;
+ g_vars->scene04_ladder->_movements.front()->staticIds[2] = ST_MAN_GOLADDER;
+ }
+
+ g_fullpipe->_aniMan->_priority = 12;
+
+ getSc2MctlCompoundBySceneId(g_fullpipe->_currentScene->_sceneId)->clearEnabled();
+ getGameLoaderInteractionController()->disableFlag24();
+}
+
void sceneHandler04_clickLadder() {
- warning("STUB: sceneHandler04_clickLadder()");
+ g_vars->scene04_dudePosX = g_fullpipe->_aniMan->_ox;
+ g_vars->scene04_dudePosY = g_fullpipe->_aniMan->_oy;
+
+ if (g_vars->scene04_dudeOnLadder) {
+ if (!g_fullpipe->_aniMan->isIdle() || (g_fullpipe->_aniMan->_flags & 0x100)) {
+ g_vars->scene04_var08 = 1;
+ } else {
+ int h3 = 3 * g_vars->scene04_ladder->_height;
+ int half = abs(g_vars->scene04_ladder->_height) / 2;
+ int start = g_vars->scene04_ladder->_ladderY - g_vars->scene04_ladder->_ladder_field_24;
+ int min = 2 * h3 + start + half + 1;
+ int max = h3 + start - half - 1;
+
+ if (g_vars->scene04_sceneClickY > max)
+ g_vars->scene04_sceneClickY = max;
+
+ if (g_vars->scene04_sceneClickY < min)
+ g_vars->scene04_sceneClickY = min;
+
+ sceneHandler04_downLadder(g_vars->scene04_sceneClickX, g_vars->scene04_sceneClickY);
+
+ g_vars->scene04_var08 = 0;
+ }
+ } else {
+ if (g_fullpipe->_aniMan->isIdle() && !(g_fullpipe->_aniMan->_flags & 0x100)) {
+ if (abs(1095 - g_vars->scene04_dudePosX) > 1 || abs(434 - g_vars->scene04_dudePosY) > 1) {
+ MessageQueue *mq = getSc2MctlCompoundBySceneId(g_fullpipe->_currentScene->_sceneId)->method34(g_fullpipe->_aniMan, 1095, 434, 1, ST_MAN_UP);
+ if (mq) {
+ ExCommand *ex = new ExCommand(0, 17, MSG_SC4_CLICKLADDER, 0, 0, 0, 1, 0, 0, 0);
+
+ ex->_excFlags = 3;
+ mq->addExCommandToEnd(ex);
+
+ postExCommand(g_fullpipe->_aniMan->_id, 2, 1095, 434, 0, -1);
+ }
+ } else {
+ sceneHandler04_walkClimbLadder(0);
+ }
+ }
+ }
}
void sceneHandler04_jumpOnLadder() {
@@ -324,7 +426,7 @@ void sceneHandler04_jumpOnLadder() {
void sceneHandler04_clickPlank() {
if (sceneHandler04_friesAreWalking())
sceneHandler04_jumpOnLadder();
- else if (g_vars->scene04_needJumping)
+ else if (g_vars->scene04_dudeOnLadder)
g_fullpipe->playSound(SND_4_033, 0);
else if (!g_vars->scene04_soundPlaying)
chainQueue(QU_PNK_CLICK, 0);
@@ -333,7 +435,7 @@ void sceneHandler04_clickPlank() {
void sceneHandler04_dropBottle() {
g_vars->scene04_var12 = 1;
g_vars->scene04_bottleY = 10;
- g_vars->scene04_var06 = 0;
+ g_vars->scene04_bottleWeight = 0;
while (g_vars->scene04_kozyawkiAni.size()) {
StaticANIObject *koz = g_vars->scene04_kozyawkiAni.front();
@@ -357,8 +459,61 @@ void sceneHandler04_dropBottle() {
g_vars->scene04_hand->_priority = 15;
}
-void sceneHandler04_gotoLadder(int par) {
- warning("STUB: sceneHandler04_gotoLadder()");
+void sceneHandler04_gotoLadder(ExCommand *ex) {
+ MGM mgm;
+ MGMInfo mgminfo;
+
+ mgm.addItem(ANI_MAN);
+
+ mgminfo.ani = g_fullpipe->_aniMan;
+ mgminfo.staticsId2 = ST_MAN_UP;
+ mgminfo.x1 = 1095;
+ mgminfo.y1 = 434;
+ mgminfo.field_1C = 12;
+ mgminfo.field_10 = 1;
+ mgminfo.flags = 78;
+ mgminfo.movementId = MV_MAN_PLANKTOLADDER;
+
+ MessageQueue *mq = mgm.genMovement(&mgminfo);
+
+ if (mq) {
+ mq->deleteExCommandByIndex(mq->getCount() - 1, 1);
+
+ ExCommand *ex1 = new ExCommand(ANI_MAN, 1, MV_MAN_TOLADDER, 0, 0, 0, 1, 0, 0, 0);
+ ex1->_excFlags = 2;
+ ex1->_field_24 = 1;
+ ex1->_keyCode = -1;
+ mq->addExCommandToEnd(ex1);
+
+ ExCommand *ex2 = new ExCommand(ANI_MAN, 1, MV_MAN_STOPLADDER, 0, 0, 0, 1, 0, 0, 0);
+ ex2->_excFlags = 2;
+ ex2->_field_24 = 1;
+ ex2->_keyCode = -1;
+ mq->addExCommandToEnd(ex2);
+
+ ExCommand *ex3 = new ExCommand(g_fullpipe->_aniMan->_id, 34, 256, 0, 0, 0, 1, 0, 0, 0);
+ ex3->_field_14 = 256;
+ ex3->_messageNum = 0;
+ ex3->_excFlags |= 3;
+ mq->addExCommandToEnd(ex3);
+
+ if (ex) {
+ ExCommand *ex4 = new ExCommand(ex);
+
+ mq->addExCommandToEnd(ex4);
+ }
+
+ mq->setFlags(mq->getFlags() | 1);
+
+ if (mq->chain(g_fullpipe->_aniMan)) {
+ g_fullpipe->_aniMan->_priority = 12;
+ g_fullpipe->_aniMan->_flags |= 1;
+ } else {
+ delete mq;
+ }
+ }
+
+ g_vars->scene04_var04 = 0;
}
void sceneHandler04_lowerPlank() {
@@ -369,7 +524,7 @@ void sceneHandler04_manFromBottle() {
for (Common::List<GameObject *>::iterator it = g_vars->scene04_bottleObjList.begin(); it != g_vars->scene04_bottleObjList.end(); ++it)
if (*it == g_fullpipe->_aniMan) {
g_vars->scene04_bottleObjList.erase(it);
- g_vars->scene04_var06 -= 9;
+ g_vars->scene04_bottleWeight -= 9;
break;
}
@@ -385,7 +540,7 @@ void sceneHandler04_manFromBottle() {
void sceneHandler04_manToBottle() {
g_vars->scene04_bottleObjList.push_back(g_fullpipe->_aniMan);
g_vars->scene04_var20 = 5;
- g_vars->scene04_var06 += 9;
+ g_vars->scene04_bottleWeight += 9;
g_fullpipe->_aniMan2 = g_fullpipe->_aniMan;
g_vars->scene04_var10 = 1;
}
@@ -420,7 +575,7 @@ void sceneHandler04_sub1(ExCommand *ex) {
if (ex) {
ExCommand *newex = new ExCommand(ex);
- mq->_exCommands.push_back(newex);
+ mq->addExCommandToEnd(newex);
}
mq->_flags |= 1;
@@ -441,61 +596,49 @@ void sceneHandler04_walkKozyawka() {
}
}
-void sceneHandler04_sub4() {
-#if 0
- int var20 = g_vars->scene04_var20;
+void sceneHandler04_bottleUpdateObjects(int off) {
+ for (Common::List<GameObject *>::iterator it = g_vars->scene04_bottleObjList.begin(); it != g_vars->scene04_bottleObjList.end(); ++it) {
+ GameObject *obj = *it;
+
+ obj->setOXY(obj->_ox, off + obj->_oy);
+ }
+}
+
+void sceneHandler04_springWobble() {
int oldDynIndex = g_vars->scene04_dynamicPhaseIndex;
- v2 = g_vars->scene04_var20 + g_vars->scene04_dynamicPhaseIndex;
+ int newdelta = g_vars->scene04_var20 + g_vars->scene04_dynamicPhaseIndex;
+
g_vars->scene04_dynamicPhaseIndex += g_vars->scene04_var20;
- if (g_vars->scene04_var20 + g_vars->scene04_dynamicPhaseIndex < 0) {
- v2 = 0;
- var20 = 0;
+ if (newdelta < 0) {
+ newdelta = 0;
g_vars->scene04_dynamicPhaseIndex = 0;
g_vars->scene04_var20 = 0;
}
- if (v2 > 14) {
- v2 = 14;
- var20 = 0;
+ if (newdelta > 14) {
+ newdelta = 14;
g_vars->scene04_dynamicPhaseIndex = 14;
g_vars->scene04_var20 = 0;
}
- v4 = __OFSUB__(g_vars->scene04_var06, v2);
- v3 = g_vars->scene04_var06 - v2 < 0;
+ if (g_vars->scene04_bottleWeight > newdelta)
+ g_vars->scene04_var20++;
- if (g_vars->scene04_var06 > v2) {
- ++var20;
- v4 = __OFSUB__(g_vars->scene04_var06, v2);
- v3 = g_vars->scene04_var06 - v2 < 0;
- g_vars->scene04_var20 = var20;
- }
-
- if (v3 ^ v4) {
- --var20;
- g_vars->scene04_var20 = var20;
- }
-
- if (oldDynIndex <= g_vars->scene04_var06)
- if (v2 <= g_vars->scene04_var06)
- goto LABEL_16;
- } else if (v2 > g_vars->scene04_var06) {
- goto LABEL_16;
- }
+ if (g_vars->scene04_bottleWeight < newdelta)
+ g_vars->scene04_var20--;
- g_vars->scene04_var25++;
+ if ((oldDynIndex > g_vars->scene04_bottleWeight && newdelta > g_vars->scene04_bottleWeight) || newdelta <= g_vars->scene04_bottleWeight) {
+ g_vars->scene04_var25++;
- if (var20 && g_vars->scene04_var25 > 1) {
- g_vars->scene04_var25 = 0;
- g_vars->scene04_var20--;
+ if (g_vars->scene04_var20 && g_vars->scene04_var25 > 1) {
+ g_vars->scene04_var25 = 0;
+ g_vars->scene04_var20 = g_vars->scene04_var20 - g_vars->scene04_var20 / abs(g_vars->scene04_var20);
+ }
}
- LABEL_16:
Common::Point point;
- int curdelta = g_vars->scene04_spring->getCurrDimensions(&point)->y - g_vars->scene04_dynamicPhaseIndex;
-
if (g_vars->scene04_dynamicPhaseIndex) {
if (!g_vars->scene04_spring->_movement)
g_vars->scene04_spring->startAnim(MV_SPR_LOWER, 0, -1);
@@ -506,24 +649,13 @@ void sceneHandler04_sub4() {
}
if (g_vars->scene04_dynamicPhaseIndex != oldDynIndex)
- sceneHandler04_bottleUpdateObjects(curdelta - (g_vars->scene04_spring->getCurrDimensions(&point)->y - g_vars->scene04_dynamicPhaseIndex));
-#endif
-
- warning("STUB: sceneHandler04_sub4()");
+ sceneHandler04_bottleUpdateObjects(oldDynIndex - g_vars->scene04_dynamicPhaseIndex);
}
void sceneHandler04_sub5() {
warning("STUB: sceneHandler04_sub5()");
}
-void sceneHandler04_bottleUpdateObjects(int off) {
- for (Common::List<GameObject *>::iterator it = g_vars->scene04_bottleObjList.begin(); it != g_vars->scene04_bottleObjList.end(); ++it) {
- GameObject *obj = *it;
-
- obj->setOXY(obj->_field_8 + 20, off + obj->_field_8 + 24);
- }
-}
-
void sceneHandler04_liftBottle() {
int newy = g_vars->scene04_bottleY + g_vars->scene04_spring->_oy;
@@ -540,7 +672,7 @@ void sceneHandler04_liftBottle() {
g_vars->scene04_var12 = 0;
g_vars->scene04_var09 = 0;
g_vars->scene04_var19 = 1;
- g_vars->scene04_var06 = 2;
+ g_vars->scene04_bottleWeight = 2;
g_vars->scene04_var20 = 10;
g_vars->scene04_var02 = 0;
@@ -600,7 +732,7 @@ void sceneHandler04_sub9(StaticANIObject *ani) {
g_vars->scene04_bottleObjList.push_back(ani);
g_vars->scene04_kozyawkiAni.push_back(ani);
- g_vars->scene04_var06 += 2;
+ g_vars->scene04_bottleWeight += 2;
g_vars->scene04_walkingKozyawka = 0;
g_vars->scene04_var24 = 0;
@@ -618,7 +750,7 @@ void sceneHandler04_sub9(StaticANIObject *ani) {
void sceneHandler04_sub17() {
StaticANIObject *ball = g_fullpipe->_currentScene->getStaticANIObject1ById(ANI_BIGBALL, -1);
- if (g_vars->scene04_needJumping
+ if (g_vars->scene04_dudeOnLadder
&& (!ball || !(ball->_flags & 4))
&& g_vars->scene04_ladder->collisionDetection(g_fullpipe->_aniMan) > 3) {
@@ -664,7 +796,7 @@ void sceneHandler04_takeKozyawka() {
break;
}
- g_vars->scene04_var06 -= 2;
+ g_vars->scene04_bottleWeight -= 2;
}
}
}
@@ -828,7 +960,7 @@ int sceneHandler04(ExCommand *ex) {
g_fullpipe->_aniMan2 = g_fullpipe->_aniMan;
}
- sceneHandler04_sub4();
+ sceneHandler04_springWobble();
if (g_vars->scene04_var07 && !g_vars->scene04_var09)
sceneHandler04_sub5();
@@ -845,7 +977,7 @@ int sceneHandler04(ExCommand *ex) {
if (g_vars->scene04_coinPut && g_vars->scene04_var18 && !g_vars->scene04_var09 && !g_vars->scene04_soundPlaying)
sceneHandler04_goClock();
- if (g_vars->scene04_needJumping) {
+ if (g_vars->scene04_dudeOnLadder) {
if (!g_vars->scene04_soundPlaying) {
g_fullpipe->startSceneTrack();
@@ -905,7 +1037,7 @@ int sceneHandler04(ExCommand *ex) {
sceneHandler04_clickPlank();
ex->_messageKind = 0;
- } else if (g_vars->scene04_needJumping) {
+ } else if (g_vars->scene04_dudeOnLadder) {
sceneHandler04_sub8(ex);
} else if (!ani || !canInteractAny(g_fullpipe->_aniMan, ani, ex->_keyCode)) {
PictureObject *pic = g_fullpipe->_currentScene->getPictureObjectById(picid, 0);
@@ -913,7 +1045,7 @@ int sceneHandler04(ExCommand *ex) {
if (!pic || !canInteractAny(g_fullpipe->_aniMan, pic,ex->_keyCode)) {
if ((g_fullpipe->_sceneRect.right - ex->_sceneClickX < 47 && g_fullpipe->_sceneRect.right < g_fullpipe->_sceneWidth - 1)
|| (ex->_sceneClickX - g_fullpipe->_sceneRect.left < 47 && g_fullpipe->_sceneRect.left > 0))
- sceneHandlers_sub01(ex);
+ g_fullpipe->processArcade(ex);
}
}
}
diff --git a/engines/fullpipe/statics.cpp b/engines/fullpipe/statics.cpp
index 8324e0f322..12c56fe429 100644
--- a/engines/fullpipe/statics.cpp
+++ b/engines/fullpipe/statics.cpp
@@ -27,6 +27,7 @@
#include "fullpipe/statics.h"
#include "fullpipe/messages.h"
#include "fullpipe/interaction.h"
+#include "fullpipe/motion.h"
#include "fullpipe/constants.h"
#include "fullpipe/objectnames.h"
@@ -880,7 +881,23 @@ MessageQueue *StaticANIObject::changeStatics1(int msgNum) {
}
void StaticANIObject::changeStatics2(int objId) {
- warning("STUB: StaticANIObject::changeStatics2(%d)", objId);
+ _animExFlag = 0;
+
+ deleteFromGlobalMessageQueue();
+
+ if (_movement || _statics) {
+ g_fullpipe->_mgm->addItem(_id);
+ g_fullpipe->_mgm->updateAnimStatics(this, objId);
+ } else {
+ _statics = getStaticsById(objId);
+ }
+
+ if (_messageQueueId) {
+ if (g_fullpipe->_globalMessageQueueList->getMessageQueueById(_messageQueueId))
+ g_fullpipe->_globalMessageQueueList->deleteQueueById(_messageQueueId);
+
+ _messageQueueId = 0;
+ }
}
void StaticANIObject::hide() {
@@ -1570,7 +1587,7 @@ void Movement::removeFirstPhase() {
_updateFlag1 = 0;
}
-bool Movement::gotoNextFrame(int callback1, void (*callback2)(int *)) {
+bool Movement::gotoNextFrame(void (*callback1)(int, Common::Point *point, int, int), void (*callback2)(int *)) {
debug(8, "Movement::gotoNextFrame()");
if (!callback2) {
@@ -1622,7 +1639,7 @@ bool Movement::gotoNextFrame(int callback1, void (*callback2)(int *)) {
if (_currMovement->_framePosOffsets) {
if (callback1) {
point = *_currMovement->_framePosOffsets[_currDynamicPhaseIndex];
- //callback1(_currDynamicPhaseIndex, &point, _ox, _oy);
+ callback1(_currDynamicPhaseIndex, &point, _ox, _oy);
_ox += deltax - point.x;
_oy += point.y;
@@ -1664,7 +1681,7 @@ bool Movement::gotoNextFrame(int callback1, void (*callback2)(int *)) {
point.x = _framePosOffsets[_currDynamicPhaseIndex]->x;
point.y = _framePosOffsets[_currDynamicPhaseIndex]->y;
- //callback1(_currDynamicPhaseIndex, &point, _ox, _oy);
+ callback1(_currDynamicPhaseIndex, &point, _ox, _oy);
_ox += point.x;
_oy += point.y;
} else if (oldDynIndex >= _currDynamicPhaseIndex) {
diff --git a/engines/fullpipe/statics.h b/engines/fullpipe/statics.h
index 15de4ab3be..c8537dfa97 100644
--- a/engines/fullpipe/statics.h
+++ b/engines/fullpipe/statics.h
@@ -155,7 +155,7 @@ class Movement : public GameObject {
int calcDuration();
void removeFirstPhase();
- bool gotoNextFrame(int callback1, void (*callback2)(int *));
+ bool gotoNextFrame(void (*_callback1)(int, Common::Point *point, int, int), void (*callback2)(int *));
bool gotoPrevFrame();
void gotoFirstFrame();
void gotoLastFrame();
@@ -174,7 +174,7 @@ class StaticANIObject : public GameObject {
int16 _field_32;
int _field_34;
int _initialCounter;
- int _callback1;
+ void (*_callback1)(int, Common::Point *point, int, int);
void (*_callback2)(int *);
PtrList _movements;
PtrList _staticsList;
diff --git a/engines/lastexpress/entities/abbot.cpp b/engines/lastexpress/entities/abbot.cpp
index 406b017d3a..cdd9d8e712 100644
--- a/engines/lastexpress/entities/abbot.cpp
+++ b/engines/lastexpress/entities/abbot.cpp
@@ -57,42 +57,42 @@ Abbot::Abbot(LastExpressEngine *engine) : Entity(engine, kEntityAbbot) {
ADD_CALLBACK_FUNCTION(Abbot, chapter1);
ADD_CALLBACK_FUNCTION(Abbot, chapter2);
ADD_CALLBACK_FUNCTION(Abbot, chapter3);
- ADD_CALLBACK_FUNCTION(Abbot, chapter3Handler);
- ADD_CALLBACK_FUNCTION(Abbot, conversationWithBoutarel);
+ ADD_CALLBACK_FUNCTION(Abbot, inKitchen);
+ ADD_CALLBACK_FUNCTION(Abbot, openCompartment);
ADD_CALLBACK_FUNCTION(Abbot, readPaper);
ADD_CALLBACK_FUNCTION(Abbot, goToLunch);
ADD_CALLBACK_FUNCTION(Abbot, haveLunch);
- ADD_CALLBACK_FUNCTION(Abbot, function23);
- ADD_CALLBACK_FUNCTION(Abbot, function24);
- ADD_CALLBACK_FUNCTION(Abbot, function25);
- ADD_CALLBACK_FUNCTION(Abbot, function26);
- ADD_CALLBACK_FUNCTION(Abbot, function27);
- ADD_CALLBACK_FUNCTION(Abbot, function28);
- ADD_CALLBACK_FUNCTION(Abbot, function29);
- ADD_CALLBACK_FUNCTION(Abbot, function30);
- ADD_CALLBACK_FUNCTION(Abbot, function31);
- ADD_CALLBACK_FUNCTION(Abbot, function32);
- ADD_CALLBACK_FUNCTION(Abbot, function33);
- ADD_CALLBACK_FUNCTION(Abbot, function34);
- ADD_CALLBACK_FUNCTION(Abbot, function35);
- ADD_CALLBACK_FUNCTION(Abbot, function36);
- ADD_CALLBACK_FUNCTION(Abbot, function37);
- ADD_CALLBACK_FUNCTION(Abbot, function38);
+ ADD_CALLBACK_FUNCTION(Abbot, leaveLunch);
+ ADD_CALLBACK_FUNCTION(Abbot, closedCompartment);
+ ADD_CALLBACK_FUNCTION(Abbot, goSalon1);
+ ADD_CALLBACK_FUNCTION(Abbot, inSalon1);
+ ADD_CALLBACK_FUNCTION(Abbot, goCompartment);
+ ADD_CALLBACK_FUNCTION(Abbot, openCompartment2);
+ ADD_CALLBACK_FUNCTION(Abbot, goWander);
+ ADD_CALLBACK_FUNCTION(Abbot, goSalon2);
+ ADD_CALLBACK_FUNCTION(Abbot, inSalon2);
+ ADD_CALLBACK_FUNCTION(Abbot, goCompartment3);
+ ADD_CALLBACK_FUNCTION(Abbot, openCompartment3);
+ ADD_CALLBACK_FUNCTION(Abbot, goSalon3);
+ ADD_CALLBACK_FUNCTION(Abbot, inSalon3);
+ ADD_CALLBACK_FUNCTION(Abbot, withAugust);
+ ADD_CALLBACK_FUNCTION(Abbot, goCompartment4);
+ ADD_CALLBACK_FUNCTION(Abbot, inCompartment4);
ADD_CALLBACK_FUNCTION(Abbot, chapter4);
- ADD_CALLBACK_FUNCTION(Abbot, function40);
+ ADD_CALLBACK_FUNCTION(Abbot, doWalkSearchingForCath);
ADD_CALLBACK_FUNCTION(Abbot, chapter4Handler);
- ADD_CALLBACK_FUNCTION(Abbot, function42);
- ADD_CALLBACK_FUNCTION(Abbot, function43);
+ ADD_CALLBACK_FUNCTION(Abbot, leaveDinner);
+ ADD_CALLBACK_FUNCTION(Abbot, inCompartment);
ADD_CALLBACK_FUNCTION(Abbot, function44);
- ADD_CALLBACK_FUNCTION(Abbot, function45);
- ADD_CALLBACK_FUNCTION(Abbot, function46);
- ADD_CALLBACK_FUNCTION(Abbot, drinkAfterDefuse);
- ADD_CALLBACK_FUNCTION(Abbot, function48);
- ADD_CALLBACK_FUNCTION(Abbot, pickBomb);
+ ADD_CALLBACK_FUNCTION(Abbot, conferring);
+ ADD_CALLBACK_FUNCTION(Abbot, goSalon4);
+ ADD_CALLBACK_FUNCTION(Abbot, beforeBomb);
+ ADD_CALLBACK_FUNCTION(Abbot, afterBomb);
+ ADD_CALLBACK_FUNCTION(Abbot, catchCath);
ADD_CALLBACK_FUNCTION(Abbot, chapter5);
ADD_CALLBACK_FUNCTION(Abbot, chapter5Handler);
ADD_CALLBACK_FUNCTION(Abbot, function52);
- ADD_CALLBACK_FUNCTION(Abbot, function53);
+ ADD_CALLBACK_FUNCTION(Abbot, runningTrain);
}
//////////////////////////////////////////////////////////////////////////
@@ -196,7 +196,7 @@ IMPLEMENT_FUNCTION(17, Abbot, chapter3)
break;
case kActionNone:
- setup_chapter3Handler();
+ setup_inKitchen();
break;
case kActionDefault:
@@ -213,7 +213,7 @@ IMPLEMENT_FUNCTION(17, Abbot, chapter3)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(18, Abbot, chapter3Handler)
+IMPLEMENT_FUNCTION(18, Abbot, inKitchen)
switch (savepoint.action) {
default:
break;
@@ -259,7 +259,7 @@ IMPLEMENT_FUNCTION(18, Abbot, chapter3Handler)
getData()->entityPosition = kPosition_6470;
getData()->location = kLocationInsideCompartment;
- setup_conversationWithBoutarel();
+ setup_openCompartment();
break;
}
break;
@@ -272,7 +272,7 @@ IMPLEMENT_FUNCTION(18, Abbot, chapter3Handler)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(19, Abbot, conversationWithBoutarel)
+IMPLEMENT_FUNCTION(19, Abbot, openCompartment)
switch (savepoint.action) {
default:
break;
@@ -419,7 +419,7 @@ IMPLEMENT_FUNCTION(22, Abbot, haveLunch)
if (getState()->time > kTime1989000 && getEntities()->isSomebodyInsideRestaurantOrSalon()) {
getData()->inventoryItem = kItemNone;
- setup_function23();
+ setup_leaveLunch();
}
break;
@@ -456,7 +456,7 @@ IMPLEMENT_FUNCTION(22, Abbot, haveLunch)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(23, Abbot, function23)
+IMPLEMENT_FUNCTION(23, Abbot, leaveLunch)
switch (savepoint.action) {
default:
break;
@@ -500,7 +500,7 @@ IMPLEMENT_FUNCTION(23, Abbot, function23)
case 4:
getData()->location = kLocationInsideCompartment;
- setup_function24();
+ setup_closedCompartment();
break;
}
break;
@@ -508,7 +508,7 @@ IMPLEMENT_FUNCTION(23, Abbot, function23)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(24, Abbot, function24)
+IMPLEMENT_FUNCTION(24, Abbot, closedCompartment)
switch (savepoint.action) {
default:
break;
@@ -517,7 +517,7 @@ IMPLEMENT_FUNCTION(24, Abbot, function24)
if (!Entity::updateParameter(params->param1, getState()->time, 900))
break;
- setup_function25();
+ setup_goSalon1();
break;
case kActionKnock:
@@ -561,7 +561,7 @@ IMPLEMENT_FUNCTION(24, Abbot, function24)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(25, Abbot, function25)
+IMPLEMENT_FUNCTION(25, Abbot, goSalon1)
switch (savepoint.action) {
default:
break;
@@ -602,7 +602,7 @@ IMPLEMENT_FUNCTION(25, Abbot, function25)
getData()->location = kLocationInsideCompartment;
getScenes()->loadSceneFromItemPosition(kItem3);
- setup_function26();
+ setup_inSalon1();
break;
}
break;
@@ -610,7 +610,7 @@ IMPLEMENT_FUNCTION(25, Abbot, function25)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(26, Abbot, function26)
+IMPLEMENT_FUNCTION(26, Abbot, inSalon1)
switch (savepoint.action) {
default:
break;
@@ -620,7 +620,7 @@ IMPLEMENT_FUNCTION(26, Abbot, function26)
break;
if (getEntities()->isSomebodyInsideRestaurantOrSalon())
- setup_function27();
+ setup_goCompartment();
break;
case kActionDefault:
@@ -636,7 +636,7 @@ IMPLEMENT_FUNCTION(26, Abbot, function26)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(27, Abbot, function27)
+IMPLEMENT_FUNCTION(27, Abbot, goCompartment)
switch (savepoint.action) {
default:
break;
@@ -677,7 +677,7 @@ IMPLEMENT_FUNCTION(27, Abbot, function27)
getData()->entityPosition = kPosition_6470;
getData()->location = kLocationInsideCompartment;
- setup_function28();
+ setup_openCompartment2();
break;
}
break;
@@ -685,13 +685,13 @@ IMPLEMENT_FUNCTION(27, Abbot, function27)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(28, Abbot, function28)
+IMPLEMENT_FUNCTION(28, Abbot, openCompartment2)
switch (savepoint.action) {
default:
break;
case kActionNone:
- Entity::timeCheckCallback(kTime2052000, params->param1, 1, WRAP_SETUP_FUNCTION(Abbot, setup_function29));
+ Entity::timeCheckCallback(kTime2052000, params->param1, 1, WRAP_SETUP_FUNCTION(Abbot, setup_goWander));
break;
case kActionDefault:
@@ -708,12 +708,12 @@ IMPLEMENT_FUNCTION(28, Abbot, function28)
break;
case kAction222609266:
- setup_function30();
+ setup_goSalon2();
}
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(29, Abbot, function29)
+IMPLEMENT_FUNCTION(29, Abbot, goWander)
switch (savepoint.action) {
default:
break;
@@ -778,7 +778,7 @@ IMPLEMENT_FUNCTION(29, Abbot, function29)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(30, Abbot, function30)
+IMPLEMENT_FUNCTION(30, Abbot, goSalon2)
switch (savepoint.action) {
default:
break;
@@ -826,7 +826,7 @@ switch (savepoint.action) {
getScenes()->loadSceneFromItemPosition(kItem3);
getData()->location = kLocationInsideCompartment;
- setup_function31();
+ setup_inSalon2();
break;
}
break;
@@ -834,7 +834,7 @@ switch (savepoint.action) {
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(31, Abbot, function31)
+IMPLEMENT_FUNCTION(31, Abbot, inSalon2)
switch (savepoint.action) {
default:
break;
@@ -936,7 +936,7 @@ IMPLEMENT_FUNCTION(31, Abbot, function31)
break;
case 7:
- setup_function32();
+ setup_goCompartment3();
break;
}
break;
@@ -944,7 +944,7 @@ IMPLEMENT_FUNCTION(31, Abbot, function31)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(32, Abbot, function32)
+IMPLEMENT_FUNCTION(32, Abbot, goCompartment3)
switch (savepoint.action) {
default:
break;
@@ -972,7 +972,7 @@ IMPLEMENT_FUNCTION(32, Abbot, function32)
getData()->location = kLocationInsideCompartment;
getSavePoints()->push(kEntityAbbot, kEntityBoutarel, kAction122358304);
- setup_function33();
+ setup_openCompartment3();
break;
}
break;
@@ -980,7 +980,7 @@ IMPLEMENT_FUNCTION(32, Abbot, function32)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(33, Abbot, function33)
+IMPLEMENT_FUNCTION(33, Abbot, openCompartment3)
switch (savepoint.action) {
default:
break;
@@ -1012,13 +1012,13 @@ IMPLEMENT_FUNCTION(33, Abbot, function33)
break;
case kAction123712592:
- setup_function34();
+ setup_goSalon3();
break;
}
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(34, Abbot, function34)
+IMPLEMENT_FUNCTION(34, Abbot, goSalon3)
switch (savepoint.action) {
default:
break;
@@ -1066,7 +1066,7 @@ IMPLEMENT_FUNCTION(34, Abbot, function34)
getScenes()->loadSceneFromItemPosition(kItem3);
getData()->location = kLocationInsideCompartment;
- setup_function35();
+ setup_inSalon3();
break;
}
break;
@@ -1074,7 +1074,7 @@ IMPLEMENT_FUNCTION(34, Abbot, function34)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(35, Abbot, function35)
+IMPLEMENT_FUNCTION(35, Abbot, inSalon3)
switch (savepoint.action) {
default:
break;
@@ -1128,7 +1128,7 @@ IMPLEMENT_FUNCTION(35, Abbot, function35)
getInventory()->setLocationAndProcess(kItem3, kObjectLocation1);
getData()->location = kLocationInsideCompartment;
- setup_function36();
+ setup_withAugust();
break;
}
break;
@@ -1136,7 +1136,7 @@ IMPLEMENT_FUNCTION(35, Abbot, function35)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(36, Abbot, function36)
+IMPLEMENT_FUNCTION(36, Abbot, withAugust)
switch (savepoint.action) {
default:
break;
@@ -1198,14 +1198,14 @@ IMPLEMENT_FUNCTION(36, Abbot, function36)
case kActionCallback:
if (getCallback() == 1) {
getEntities()->updatePositionExit(kEntityAbbot, kCarRestaurant, 57);
- setup_function37();
+ setup_goCompartment4();
}
break;
}
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(37, Abbot, function37)
+IMPLEMENT_FUNCTION(37, Abbot, goCompartment4)
switch (savepoint.action) {
default:
break;
@@ -1233,7 +1233,7 @@ IMPLEMENT_FUNCTION(37, Abbot, function37)
getData()->location = kLocationInsideCompartment;
getSavePoints()->push(kEntityAbbot, kEntityBoutarel, kAction122358304);
- setup_function38();
+ setup_inCompartment4();
break;
}
break;
@@ -1241,7 +1241,7 @@ IMPLEMENT_FUNCTION(37, Abbot, function37)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(38, Abbot, function38)
+IMPLEMENT_FUNCTION(38, Abbot, inCompartment4)
switch (savepoint.action) {
default:
break;
@@ -1283,7 +1283,7 @@ IMPLEMENT_FUNCTION(39, Abbot, chapter4)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION_II(40, Abbot, function40, CarIndex, EntityPosition)
+IMPLEMENT_FUNCTION_II(40, Abbot, doWalkSearchingForCath, CarIndex, EntityPosition)
switch (savepoint.action) {
default:
break;
@@ -1327,7 +1327,7 @@ IMPLEMENT_FUNCTION(41, Abbot, chapter4Handler)
Entity::timeCheckSavepoint(kTime2358000, params->param1, kEntityAbbot, kEntityServers0, kAction218128129);
if (getState()->time > kTime2389500 && getEntities()->isSomebodyInsideRestaurantOrSalon())
- setup_function42();
+ setup_leaveDinner();
break;
@@ -1348,7 +1348,7 @@ IMPLEMENT_FUNCTION(41, Abbot, chapter4Handler)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(42, Abbot, function42)
+IMPLEMENT_FUNCTION(42, Abbot, leaveDinner)
switch (savepoint.action) {
default:
break;
@@ -1392,7 +1392,7 @@ IMPLEMENT_FUNCTION(42, Abbot, function42)
getData()->location = kLocationInsideCompartment;
getEntities()->clearSequences(kEntityAbbot);
- setup_function43();
+ setup_inCompartment();
break;
}
break;
@@ -1400,7 +1400,7 @@ IMPLEMENT_FUNCTION(42, Abbot, function42)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(43, Abbot, function43)
+IMPLEMENT_FUNCTION(43, Abbot, inCompartment)
switch (savepoint.action) {
default:
break;
@@ -1531,13 +1531,13 @@ IMPLEMENT_FUNCTION(44, Abbot, function44)
break;
case kAction104060776:
- setup_function45();
+ setup_conferring();
break;
}
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(45, Abbot, function45)
+IMPLEMENT_FUNCTION(45, Abbot, conferring)
switch (savepoint.action) {
default:
break;
@@ -1570,7 +1570,7 @@ IMPLEMENT_FUNCTION(45, Abbot, function45)
getEntities()->exitCompartment(kEntityAbbot, kObjectCompartmentC, true);
getSavePoints()->push(kEntityAbbot, kEntityVerges, kAction125233040);
- setup_function46();
+ setup_goSalon4();
break;
}
break;
@@ -1578,7 +1578,7 @@ IMPLEMENT_FUNCTION(45, Abbot, function45)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(46, Abbot, function46)
+IMPLEMENT_FUNCTION(46, Abbot, goSalon4)
switch (savepoint.action) {
default:
break;
@@ -1587,18 +1587,18 @@ IMPLEMENT_FUNCTION(46, Abbot, function46)
getData()->entityPosition = kPosition_6471;
setCallback(1);
- setup_function40(kCarRestaurant, kPosition_850);
+ setup_doWalkSearchingForCath(kCarRestaurant, kPosition_850);
break;
case kActionCallback:
if (getCallback() == 1)
- setup_drinkAfterDefuse();
+ setup_beforeBomb();
break;
}
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(47, Abbot, drinkAfterDefuse)
+IMPLEMENT_FUNCTION(47, Abbot, beforeBomb)
switch (savepoint.action) {
default:
break;
@@ -1642,7 +1642,7 @@ IMPLEMENT_FUNCTION(47, Abbot, drinkAfterDefuse)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(48, Abbot, function48)
+IMPLEMENT_FUNCTION(48, Abbot, afterBomb)
switch (savepoint.action) {
default:
break;
@@ -1749,7 +1749,7 @@ IMPLEMENT_FUNCTION(48, Abbot, function48)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(49, Abbot, pickBomb)
+IMPLEMENT_FUNCTION(49, Abbot, catchCath)
switch (savepoint.action) {
default:
break;
@@ -1791,7 +1791,7 @@ IMPLEMENT_FUNCTION(49, Abbot, pickBomb)
break;
case 1:
- getAction()->playAnimation(getObjects()->get(kObjectCompartment2).location2 < kObjectLocation2 ? kEventAbbotWrongCompartmentBed : kEventAbbotWrongCompartment);
+ getAction()->playAnimation(getObjects()->get(kObjectCompartment2).model < kObjectModel2 ? kEventAbbotWrongCompartmentBed : kEventAbbotWrongCompartment);
getEntities()->updateEntity(kEntityAbbot, kCarRedSleeping, kPosition_6470);
getSound()->playSound(kEntityPlayer, "LIB015");
getScenes()->loadSceneFromObject(kObjectCompartment2, true);
@@ -1810,7 +1810,7 @@ IMPLEMENT_FUNCTION(49, Abbot, pickBomb)
getEntities()->clearSequences(kEntityAbbot);
getObjects()->update(kObjectCompartmentC, kEntityAbbot, kObjectLocation1, kCursorHandKnock, kCursorHand);
- setup_function43();
+ setup_inCompartment();
break;
}
break;
@@ -1860,13 +1860,13 @@ IMPLEMENT_FUNCTION(52, Abbot, function52)
break;
case kAction135600432:
- setup_function53();
+ setup_runningTrain();
break;
}
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(53, Abbot, function53)
+IMPLEMENT_FUNCTION(53, Abbot, runningTrain)
switch (savepoint.action) {
default:
break;
diff --git a/engines/lastexpress/entities/abbot.h b/engines/lastexpress/entities/abbot.h
index dc3e86db54..ba993fdbc9 100644
--- a/engines/lastexpress/entities/abbot.h
+++ b/engines/lastexpress/entities/abbot.h
@@ -155,27 +155,27 @@ public:
/**
* Handle Chapter 3 events
*/
- DECLARE_FUNCTION(chapter3Handler)
- DECLARE_FUNCTION(conversationWithBoutarel)
+ DECLARE_FUNCTION(inKitchen)
+ DECLARE_FUNCTION(openCompartment)
DECLARE_FUNCTION(readPaper)
DECLARE_FUNCTION(goToLunch)
DECLARE_FUNCTION(haveLunch)
- DECLARE_FUNCTION(function23)
- DECLARE_FUNCTION(function24)
- DECLARE_FUNCTION(function25)
- DECLARE_FUNCTION(function26)
- DECLARE_FUNCTION(function27)
- DECLARE_FUNCTION(function28)
- DECLARE_FUNCTION(function29)
- DECLARE_FUNCTION(function30)
- DECLARE_FUNCTION(function31)
- DECLARE_FUNCTION(function32)
- DECLARE_FUNCTION(function33)
- DECLARE_FUNCTION(function34)
- DECLARE_FUNCTION(function35)
- DECLARE_FUNCTION(function36)
- DECLARE_FUNCTION(function37)
- DECLARE_FUNCTION(function38)
+ DECLARE_FUNCTION(leaveLunch)
+ DECLARE_FUNCTION(closedCompartment)
+ DECLARE_FUNCTION(goSalon1)
+ DECLARE_FUNCTION(inSalon1)
+ DECLARE_FUNCTION(goCompartment)
+ DECLARE_FUNCTION(openCompartment2)
+ DECLARE_FUNCTION(goWander)
+ DECLARE_FUNCTION(goSalon2)
+ DECLARE_FUNCTION(inSalon2)
+ DECLARE_FUNCTION(goCompartment3)
+ DECLARE_FUNCTION(openCompartment3)
+ DECLARE_FUNCTION(goSalon3)
+ DECLARE_FUNCTION(inSalon3)
+ DECLARE_FUNCTION(withAugust)
+ DECLARE_FUNCTION(goCompartment4)
+ DECLARE_FUNCTION(inCompartment4)
/**
* Setup Chapter 4
@@ -183,25 +183,25 @@ public:
DECLARE_FUNCTION(chapter4)
/**
- * ???
+ * Search Cath by walking around
*
* @param car The car
* @param entityPosition The entity position
*/
- DECLARE_FUNCTION_2(function40, CarIndex car, EntityPosition position)
+ DECLARE_FUNCTION_2(doWalkSearchingForCath, CarIndex car, EntityPosition position)
/**
* Handle Chapter 4 events
*/
DECLARE_FUNCTION(chapter4Handler)
- DECLARE_FUNCTION(function42)
- DECLARE_FUNCTION(function43)
+ DECLARE_FUNCTION(leaveDinner)
+ DECLARE_FUNCTION(inCompartment)
DECLARE_FUNCTION(function44)
- DECLARE_FUNCTION(function45)
- DECLARE_FUNCTION(function46)
- DECLARE_FUNCTION(drinkAfterDefuse)
- DECLARE_FUNCTION(function48)
- DECLARE_FUNCTION(pickBomb)
+ DECLARE_FUNCTION(conferring)
+ DECLARE_FUNCTION(goSalon4)
+ DECLARE_FUNCTION(beforeBomb)
+ DECLARE_FUNCTION(afterBomb)
+ DECLARE_FUNCTION(catchCath)
/**
* Setup Chapter 5
@@ -213,7 +213,7 @@ public:
*/
DECLARE_FUNCTION(chapter5Handler)
DECLARE_FUNCTION(function52)
- DECLARE_FUNCTION(function53)
+ DECLARE_FUNCTION(runningTrain)
};
} // End of namespace LastExpress
diff --git a/engines/lastexpress/entities/alexei.cpp b/engines/lastexpress/entities/alexei.cpp
index 115c890f6f..b8ae62e7c4 100644
--- a/engines/lastexpress/entities/alexei.cpp
+++ b/engines/lastexpress/entities/alexei.cpp
@@ -48,40 +48,40 @@ Alexei::Alexei(LastExpressEngine *engine) : Entity(engine, kEntityAlexei) {
ADD_CALLBACK_FUNCTION(Alexei, updateEntity);
ADD_CALLBACK_FUNCTION(Alexei, draw2);
ADD_CALLBACK_FUNCTION(Alexei, callbackActionRestaurantOrSalon);
- ADD_CALLBACK_FUNCTION(Alexei, function13);
- ADD_CALLBACK_FUNCTION(Alexei, function14);
- ADD_CALLBACK_FUNCTION(Alexei, function15);
- ADD_CALLBACK_FUNCTION(Alexei, function16);
+ ADD_CALLBACK_FUNCTION(Alexei, enterComparment);
+ ADD_CALLBACK_FUNCTION(Alexei, exitCompartment);
+ ADD_CALLBACK_FUNCTION(Alexei, pacingAtWindow);
+ ADD_CALLBACK_FUNCTION(Alexei, compartmentLogic);
ADD_CALLBACK_FUNCTION(Alexei, chapter1);
- ADD_CALLBACK_FUNCTION(Alexei, chapter1Handler);
- ADD_CALLBACK_FUNCTION(Alexei, function19);
- ADD_CALLBACK_FUNCTION(Alexei, function20);
- ADD_CALLBACK_FUNCTION(Alexei, function21);
- ADD_CALLBACK_FUNCTION(Alexei, function22);
- ADD_CALLBACK_FUNCTION(Alexei, function23);
- ADD_CALLBACK_FUNCTION(Alexei, function24);
- ADD_CALLBACK_FUNCTION(Alexei, function25);
+ ADD_CALLBACK_FUNCTION(Alexei, atDinner);
+ ADD_CALLBACK_FUNCTION(Alexei, returnCompartment);
+ ADD_CALLBACK_FUNCTION(Alexei, goSalon);
+ ADD_CALLBACK_FUNCTION(Alexei, sitting);
+ ADD_CALLBACK_FUNCTION(Alexei, standingAtWindow);
+ ADD_CALLBACK_FUNCTION(Alexei, waitingForTatiana);
+ ADD_CALLBACK_FUNCTION(Alexei, upset);
+ ADD_CALLBACK_FUNCTION(Alexei, returnCompartmentNight);
ADD_CALLBACK_FUNCTION(Alexei, function26);
ADD_CALLBACK_FUNCTION(Alexei, function27);
ADD_CALLBACK_FUNCTION(Alexei, chapter2);
- ADD_CALLBACK_FUNCTION(Alexei, chapter2Handler);
- ADD_CALLBACK_FUNCTION(Alexei, function30);
- ADD_CALLBACK_FUNCTION(Alexei, function31);
+ ADD_CALLBACK_FUNCTION(Alexei, inCompartment2);
+ ADD_CALLBACK_FUNCTION(Alexei, atBreakfast);
+ ADD_CALLBACK_FUNCTION(Alexei, returnCompartment2);
ADD_CALLBACK_FUNCTION(Alexei, chapter3);
- ADD_CALLBACK_FUNCTION(Alexei, chapter3Handler);
- ADD_CALLBACK_FUNCTION(Alexei, function34);
- ADD_CALLBACK_FUNCTION(Alexei, function35);
- ADD_CALLBACK_FUNCTION(Alexei, function36);
+ ADD_CALLBACK_FUNCTION(Alexei, playingChess);
+ ADD_CALLBACK_FUNCTION(Alexei, inPart3);
+ ADD_CALLBACK_FUNCTION(Alexei, pacing3);
+ ADD_CALLBACK_FUNCTION(Alexei, goSalon3);
ADD_CALLBACK_FUNCTION(Alexei, chapter4);
- ADD_CALLBACK_FUNCTION(Alexei, chapter4Handler);
- ADD_CALLBACK_FUNCTION(Alexei, function39);
- ADD_CALLBACK_FUNCTION(Alexei, function40);
- ADD_CALLBACK_FUNCTION(Alexei, function41);
- ADD_CALLBACK_FUNCTION(Alexei, function42);
- ADD_CALLBACK_FUNCTION(Alexei, function43);
- ADD_CALLBACK_FUNCTION(Alexei, function44);
- ADD_CALLBACK_FUNCTION(Alexei, function45);
- ADD_CALLBACK_FUNCTION(Alexei, function46);
+ ADD_CALLBACK_FUNCTION(Alexei, inCompartment4);
+ ADD_CALLBACK_FUNCTION(Alexei, meetTatiana);
+ ADD_CALLBACK_FUNCTION(Alexei, leavePlatform);
+ ADD_CALLBACK_FUNCTION(Alexei, inCompartmentAgain);
+ ADD_CALLBACK_FUNCTION(Alexei, goSalon4);
+ ADD_CALLBACK_FUNCTION(Alexei, pacing);
+ ADD_CALLBACK_FUNCTION(Alexei, goToPlatform);
+ ADD_CALLBACK_FUNCTION(Alexei, returnCompartment4);
+ ADD_CALLBACK_FUNCTION(Alexei, bombPlanB);
ADD_CALLBACK_FUNCTION(Alexei, function47);
ADD_CALLBACK_FUNCTION(Alexei, chapter5);
}
@@ -169,7 +169,7 @@ IMPLEMENT_FUNCTION(12, Alexei, callbackActionRestaurantOrSalon)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(13, Alexei, function13)
+IMPLEMENT_FUNCTION(13, Alexei, enterComparment)
switch (savepoint.action) {
default:
break;
@@ -216,7 +216,7 @@ IMPLEMENT_FUNCTION(13, Alexei, function13)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(14, Alexei, function14)
+IMPLEMENT_FUNCTION(14, Alexei, exitCompartment)
switch (savepoint.action) {
default:
break;
@@ -245,7 +245,7 @@ IMPLEMENT_FUNCTION(14, Alexei, function14)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(15, Alexei, function15)
+IMPLEMENT_FUNCTION(15, Alexei, pacingAtWindow)
switch (savepoint.action) {
default:
break;
@@ -297,7 +297,7 @@ IMPLEMENT_FUNCTION(15, Alexei, function15)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION_IS(16, Alexei, function16, TimeValue)
+IMPLEMENT_FUNCTION_IS(16, Alexei, compartmentLogic, TimeValue)
switch (savepoint.action) {
default:
break;
@@ -446,7 +446,7 @@ IMPLEMENT_FUNCTION(17, Alexei, chapter1)
break;
case kActionNone:
- Entity::timeCheck(kTimeChapter1, params->param1, WRAP_SETUP_FUNCTION(Alexei, setup_chapter1Handler));
+ Entity::timeCheck(kTimeChapter1, params->param1, WRAP_SETUP_FUNCTION(Alexei, setup_atDinner));
break;
case kActionDefault:
@@ -462,7 +462,7 @@ IMPLEMENT_FUNCTION(17, Alexei, chapter1)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(18, Alexei, chapter1Handler)
+IMPLEMENT_FUNCTION(18, Alexei, atDinner)
switch (savepoint.action) {
default:
break;
@@ -519,7 +519,7 @@ IMPLEMENT_FUNCTION(18, Alexei, chapter1Handler)
case 1:
getEntities()->updatePositionExit(kEntityAlexei, kCarRestaurant, 63);
- setup_function19();
+ setup_returnCompartment();
break;
case 2:
@@ -533,7 +533,7 @@ IMPLEMENT_FUNCTION(18, Alexei, chapter1Handler)
getInventory()->get(kItem17)->location = kObjectLocation1;
getScenes()->loadSceneFromPosition(kCarRestaurant, 63);
- setup_function19();
+ setup_returnCompartment();
break;
}
break;
@@ -553,7 +553,7 @@ IMPLEMENT_FUNCTION(18, Alexei, chapter1Handler)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(19, Alexei, function19)
+IMPLEMENT_FUNCTION(19, Alexei, returnCompartment)
switch (savepoint.action) {
default:
break;
@@ -620,7 +620,7 @@ IMPLEMENT_FUNCTION(19, Alexei, function19)
case 9:
setCallback(10);
- setup_function13();
+ setup_enterComparment();
break;
case 10:
@@ -628,11 +628,11 @@ IMPLEMENT_FUNCTION(19, Alexei, function19)
getScenes()->loadSceneFromPosition(kCarGreenSleeping, 49);
setCallback(11);
- setup_function16(kTime1098000, "411");
+ setup_compartmentLogic(kTime1098000, "411");
break;
case 11:
- setup_function20();
+ setup_goSalon();
break;
}
break;
@@ -640,14 +640,14 @@ IMPLEMENT_FUNCTION(19, Alexei, function19)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(20, Alexei, function20)
+IMPLEMENT_FUNCTION(20, Alexei, goSalon)
switch (savepoint.action) {
default:
break;
case kActionDefault:
setCallback(1);
- setup_function14();
+ setup_exitCompartment();
break;
case kActionCallback:
@@ -683,7 +683,7 @@ IMPLEMENT_FUNCTION(20, Alexei, function20)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(21, Alexei, function21)
+IMPLEMENT_FUNCTION(21, Alexei, sitting)
switch (savepoint.action) {
default:
break;
@@ -720,7 +720,7 @@ IMPLEMENT_FUNCTION(21, Alexei, function21)
case 1:
getData()->location = kLocationInsideCompartment;
- setup_function22();
+ setup_standingAtWindow();
break;
case 2:
@@ -745,7 +745,7 @@ IMPLEMENT_FUNCTION(21, Alexei, function21)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(22, Alexei, function22)
+IMPLEMENT_FUNCTION(22, Alexei, standingAtWindow)
switch (savepoint.action) {
default:
break;
@@ -779,7 +779,7 @@ IMPLEMENT_FUNCTION(22, Alexei, function22)
getData()->inventoryItem = kItemNone;
- setup_function23();
+ setup_waitingForTatiana();
break;
case kAction1:
@@ -801,7 +801,7 @@ IMPLEMENT_FUNCTION(22, Alexei, function22)
case 1:
getData()->location = kLocationInsideCompartment;
- setup_function21();
+ setup_sitting();
break;
case 2:
@@ -821,7 +821,7 @@ IMPLEMENT_FUNCTION(22, Alexei, function22)
getEntities()->updatePositionExit(kEntityAlexei, kCarRestaurant, 52);
getData()->location = kLocationInsideCompartment;
- setup_function21();
+ setup_standingAtWindow();
break;
}
break;
@@ -829,7 +829,7 @@ IMPLEMENT_FUNCTION(22, Alexei, function22)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(23, Alexei, function23)
+IMPLEMENT_FUNCTION(23, Alexei, waitingForTatiana)
switch (savepoint.action) {
default:
break;
@@ -861,7 +861,7 @@ IMPLEMENT_FUNCTION(23, Alexei, function23)
getEntities()->drawSequenceLeft(kEntityAlexei, "103F");
getScenes()->processScene();
- setup_function24();
+ setup_upset();
break;
case 2:
@@ -879,18 +879,18 @@ IMPLEMENT_FUNCTION(23, Alexei, function23)
setCallback(1);
setup_savegame(kSavegameTypeEvent, kEventAlexeiSalonVassili);
} else {
- setup_function24();
+ setup_upset();
}
break;
case kAction188784532:
- setup_function24();
+ setup_upset();
break;
}
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(24, Alexei, function24)
+IMPLEMENT_FUNCTION(24, Alexei, upset)
switch (savepoint.action) {
default:
break;
@@ -917,11 +917,11 @@ IMPLEMENT_FUNCTION(24, Alexei, function24)
getData()->entityPosition = kPosition_9460;
getEntities()->clearSequences(kEntityAlexei);
getScenes()->loadSceneFromPosition(kCarRestaurant, 55);
- setup_function25();
+ setup_returnCompartmentNight();
break;
case 2:
- setup_function25();
+ setup_returnCompartmentNight();
break;
}
break;
@@ -935,14 +935,14 @@ IMPLEMENT_FUNCTION(24, Alexei, function24)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(25, Alexei, function25)
+IMPLEMENT_FUNCTION(25, Alexei, returnCompartmentNight)
switch (savepoint.action) {
default:
break;
case kActionDefault:
setCallback(1);
- setup_function13();
+ setup_enterComparment();
break;
case kActionCallback:
@@ -955,12 +955,12 @@ IMPLEMENT_FUNCTION(25, Alexei, function25)
getScenes()->loadSceneFromPosition(kCarGreenSleeping, 49);
setCallback(2);
- setup_function16(kTime1179000, "411");
+ setup_compartmentLogic(kTime1179000, "411");
break;
case 2:
setCallback(3);
- setup_function16(kTime1323000, "412");
+ setup_compartmentLogic(kTime1323000, "412");
break;
case 3:
@@ -1017,7 +1017,7 @@ IMPLEMENT_FUNCTION(28, Alexei, chapter2)
break;
case kActionNone:
- setup_chapter2Handler();
+ setup_inCompartment2();
break;
case kActionDefault:
@@ -1037,14 +1037,14 @@ IMPLEMENT_FUNCTION(28, Alexei, chapter2)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(29, Alexei, chapter2Handler)
+IMPLEMENT_FUNCTION(29, Alexei, inCompartment2)
switch (savepoint.action) {
default:
break;
case kActionDefault:
setCallback(1);
- setup_function16(kTime1791000, "411");
+ setup_compartmentLogic(kTime1791000, "411");
break;
case kActionCallback:
@@ -1054,7 +1054,7 @@ IMPLEMENT_FUNCTION(29, Alexei, chapter2Handler)
case 1:
setCallback(2);
- setup_function14();
+ setup_exitCompartment();
break;
case 2:
@@ -1085,7 +1085,7 @@ IMPLEMENT_FUNCTION(29, Alexei, chapter2Handler)
case 6:
getEntities()->updatePositionExit(kEntityAlexei, kCarRestaurant, 63);
getSavePoints()->push(kEntityAlexei, kEntityTatiana, kAction290869168);
- setup_function30();
+ setup_atBreakfast();
break;
}
break;
@@ -1093,7 +1093,7 @@ IMPLEMENT_FUNCTION(29, Alexei, chapter2Handler)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(30, Alexei, function30)
+IMPLEMENT_FUNCTION(30, Alexei, atBreakfast)
switch (savepoint.action) {
default:
break;
@@ -1134,7 +1134,7 @@ IMPLEMENT_FUNCTION(30, Alexei, function30)
case 3:
getEntities()->updatePositionExit(kEntityAlexei, kCarRestaurant, 63);
- setup_function31();
+ setup_returnCompartment2();
break;
}
break;
@@ -1154,7 +1154,7 @@ IMPLEMENT_FUNCTION(30, Alexei, function30)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(31, Alexei, function31)
+IMPLEMENT_FUNCTION(31, Alexei, returnCompartment2)
switch (savepoint.action) {
default:
break;
@@ -1175,7 +1175,7 @@ IMPLEMENT_FUNCTION(31, Alexei, function31)
case 1:
setCallback(2);
- setup_function13();
+ setup_enterComparment();
break;
case 2:
@@ -1183,7 +1183,7 @@ IMPLEMENT_FUNCTION(31, Alexei, function31)
getScenes()->loadSceneFromPosition(kCarGreenSleeping, 49);
setCallback(3);
- setup_function16(kTimeEnd, "411");
+ setup_compartmentLogic(kTimeEnd, "411");
break;
}
break;
@@ -1197,7 +1197,7 @@ IMPLEMENT_FUNCTION(32, Alexei, chapter3)
break;
case kActionNone:
- setup_chapter3Handler();
+ setup_playingChess();
break;
case kActionDefault:
@@ -1216,14 +1216,14 @@ IMPLEMENT_FUNCTION(32, Alexei, chapter3)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(33, Alexei, chapter3Handler)
+IMPLEMENT_FUNCTION(33, Alexei, playingChess)
switch (savepoint.action) {
default:
break;
case kActionCallback:
if (getCallback() == 1)
- setup_function34();
+ setup_inPart3();
break;
case kAction122288808:
@@ -1232,7 +1232,7 @@ IMPLEMENT_FUNCTION(33, Alexei, chapter3Handler)
getData()->car = kCarRedSleeping;
setCallback(1);
- setup_function13();
+ setup_enterComparment();
break;
case kAction122358304:
@@ -1242,7 +1242,7 @@ IMPLEMENT_FUNCTION(33, Alexei, chapter3Handler)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(34, Alexei, function34)
+IMPLEMENT_FUNCTION(34, Alexei, inPart3)
switch (savepoint.action) {
default:
break;
@@ -1252,7 +1252,7 @@ IMPLEMENT_FUNCTION(34, Alexei, function34)
getScenes()->loadSceneFromPosition(kCarGreenSleeping, 49);
setCallback(1);
- setup_function16(kTime2083500, "411");
+ setup_compartmentLogic(kTime2083500, "411");
break;
case kActionCallback:
@@ -1262,7 +1262,7 @@ IMPLEMENT_FUNCTION(34, Alexei, function34)
case 1:
setCallback(2);
- setup_function14();
+ setup_exitCompartment();
break;
case 2:
@@ -1285,12 +1285,12 @@ IMPLEMENT_FUNCTION(34, Alexei, function34)
case 5:
setCallback(6);
- setup_function35();
+ setup_pacing3();
break;
case 6:
setCallback(7);
- setup_function13();
+ setup_enterComparment();
break;
case 7:
@@ -1299,17 +1299,17 @@ IMPLEMENT_FUNCTION(34, Alexei, function34)
getScenes()->loadSceneFromPosition(kCarGreenSleeping, 66);
setCallback(8);
- setup_function16(kTime2124000, "NONE");
+ setup_compartmentLogic(kTime2124000, "NONE");
break;
case 8:
setCallback(9);
- setup_function14();
+ setup_exitCompartment();
break;
case 9:
setCallback(10);
- setup_function36();
+ setup_goSalon3();
break;
case 10:
@@ -1318,7 +1318,7 @@ IMPLEMENT_FUNCTION(34, Alexei, function34)
getScenes()->loadSceneFromPosition(kCarGreenSleeping, 49);
setCallback(11);
- setup_function16(kTime16451100, "411");
+ setup_compartmentLogic(kTime16451100, "411");
break;
}
break;
@@ -1326,7 +1326,7 @@ IMPLEMENT_FUNCTION(34, Alexei, function34)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(35, Alexei, function35)
+IMPLEMENT_FUNCTION(35, Alexei, pacing3)
switch (savepoint.action) {
default:
break;
@@ -1345,7 +1345,7 @@ IMPLEMENT_FUNCTION(35, Alexei, function35)
if (Entity::updateParameter(params->param3, getState()->time, params->param1)) {
if (getEntities()->isSomebodyInsideRestaurantOrSalon()) {
setCallback(3);
- setup_function15();
+ setup_pacingAtWindow();
break;
}
}
@@ -1392,7 +1392,7 @@ label_callback_3:
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(36, Alexei, function36)
+IMPLEMENT_FUNCTION(36, Alexei, goSalon3)
switch (savepoint.action) {
default:
break;
@@ -1457,7 +1457,7 @@ IMPLEMENT_FUNCTION(36, Alexei, function36)
case kAction122288808:
setCallback(4);
- setup_function13();
+ setup_enterComparment();
break;
case kAction122358304:
@@ -1474,7 +1474,7 @@ IMPLEMENT_FUNCTION(37, Alexei, chapter4)
break;
case kActionNone:
- setup_chapter4Handler();
+ setup_inCompartment4();
break;
case kActionDefault:
@@ -1493,25 +1493,25 @@ IMPLEMENT_FUNCTION(37, Alexei, chapter4)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(38, Alexei, chapter4Handler)
+IMPLEMENT_FUNCTION(38, Alexei, inCompartment4)
switch (savepoint.action) {
default:
break;
case kActionDefault:
setCallback(1);
- setup_function16(kTime2354400, "411");
+ setup_compartmentLogic(kTime2354400, "411");
break;
case kActionCallback:
if (getCallback() == 1)
- setup_function39();
+ setup_meetTatiana();
break;
}
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(39, Alexei, function39)
+IMPLEMENT_FUNCTION(39, Alexei, meetTatiana)
switch (savepoint.action) {
default:
break;
@@ -1547,7 +1547,7 @@ IMPLEMENT_FUNCTION(39, Alexei, function39)
getScenes()->loadSceneFromPosition(kCarGreenSleeping, 72);
}
- setup_function40();
+ setup_leavePlatform();
}
break;
@@ -1571,7 +1571,7 @@ IMPLEMENT_FUNCTION(39, Alexei, function39)
break;
}
- setup_function40();
+ setup_leavePlatform();
}
break;
@@ -1616,7 +1616,7 @@ IMPLEMENT_FUNCTION(39, Alexei, function39)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(40, Alexei, function40)
+IMPLEMENT_FUNCTION(40, Alexei, leavePlatform)
switch (savepoint.action) {
default:
break;
@@ -1653,7 +1653,7 @@ IMPLEMENT_FUNCTION(40, Alexei, function40)
getData()->location = kLocationInsideCompartment;
getEntities()->clearSequences(kEntityAlexei);
- setup_function41();
+ setup_inCompartmentAgain();
break;
}
break;
@@ -1661,7 +1661,7 @@ IMPLEMENT_FUNCTION(40, Alexei, function40)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(41, Alexei, function41)
+IMPLEMENT_FUNCTION(41, Alexei, inCompartmentAgain)
switch (savepoint.action) {
default:
break;
@@ -1671,25 +1671,25 @@ IMPLEMENT_FUNCTION(41, Alexei, function41)
getScenes()->loadSceneFromPosition(kCarGreenSleeping, 49);
setCallback(1);
- setup_function16(kTime2403000, "411");
+ setup_compartmentLogic(kTime2403000, "411");
break;
case kActionCallback:
if (getCallback() == 1)
- setup_function42();
+ setup_goSalon4();
break;
}
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(42, Alexei, function42)
+IMPLEMENT_FUNCTION(42, Alexei, goSalon4)
switch (savepoint.action) {
default:
break;
case kActionDefault:
setCallback(1);
- setup_function14();
+ setup_exitCompartment();
break;
case kActionCallback:
@@ -1711,7 +1711,7 @@ IMPLEMENT_FUNCTION(42, Alexei, function42)
case 3:
getData()->location = kLocationInsideCompartment;
- setup_function43();
+ setup_pacing();
break;
}
break;
@@ -1719,7 +1719,7 @@ IMPLEMENT_FUNCTION(42, Alexei, function42)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(43, Alexei, function43)
+IMPLEMENT_FUNCTION(43, Alexei, pacing)
switch (savepoint.action) {
default:
break;
@@ -1731,7 +1731,7 @@ IMPLEMENT_FUNCTION(43, Alexei, function43)
if (getEntities()->isSomebodyInsideRestaurantOrSalon()) {
setCallback(1);
- setup_function15();
+ setup_pacingAtWindow();
break;
}
}
@@ -1768,7 +1768,7 @@ label_callback_1:
break;
case 3:
- setup_function44();
+ setup_goToPlatform();
break;
}
break;
@@ -1776,7 +1776,7 @@ label_callback_1:
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(44, Alexei, function44)
+IMPLEMENT_FUNCTION(44, Alexei, goToPlatform)
switch (savepoint.action) {
default:
break;
@@ -1794,7 +1794,7 @@ IMPLEMENT_FUNCTION(44, Alexei, function44)
if (getEntities()->isPlayerPosition(kCarGreenSleeping, 62))
getScenes()->loadSceneFromPosition(kCarGreenSleeping, 72);
- setup_function45();
+ setup_returnCompartment4();
}
}
break;
@@ -1843,14 +1843,14 @@ IMPLEMENT_FUNCTION(44, Alexei, function44)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(45, Alexei, function45)
+IMPLEMENT_FUNCTION(45, Alexei, returnCompartment4)
switch (savepoint.action) {
default:
break;
case kActionDefault:
setCallback(1);
- setup_function13();
+ setup_enterComparment();
break;
case kActionCallback:
@@ -1859,10 +1859,10 @@ IMPLEMENT_FUNCTION(45, Alexei, function45)
getScenes()->loadSceneFromPosition(kCarGreenSleeping, 49);
if (getInventory()->hasItem(kItemBomb)) {
- setup_function46();
+ setup_bombPlanB();
} else {
setCallback(2);
- setup_function16(kTimeEnd, "412");
+ setup_compartmentLogic(kTimeEnd, "412");
}
}
break;
@@ -1870,7 +1870,7 @@ IMPLEMENT_FUNCTION(45, Alexei, function45)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(46, Alexei, function46)
+IMPLEMENT_FUNCTION(46, Alexei, bombPlanB)
switch (savepoint.action) {
default:
break;
@@ -1899,12 +1899,12 @@ IMPLEMENT_FUNCTION(46, Alexei, function46)
}
setCallback(4);
- setup_function13();
+ setup_enterComparment();
break;
case kActionDefault:
setCallback(1);
- setup_function16(kTime2488500, "411");
+ setup_compartmentLogic(kTime2488500, "411");
break;
case kActionCallback:
@@ -1914,7 +1914,7 @@ IMPLEMENT_FUNCTION(46, Alexei, function46)
case 1:
setCallback(2);
- setup_function14();
+ setup_exitCompartment();
break;
case 2:
@@ -1927,7 +1927,7 @@ IMPLEMENT_FUNCTION(46, Alexei, function46)
getScenes()->loadSceneFromPosition(kCarGreenSleeping, 49);
setCallback(5);
- setup_function16(kTime2507400, "412");
+ setup_compartmentLogic(kTime2507400, "412");
break;
case 5:
diff --git a/engines/lastexpress/entities/alexei.h b/engines/lastexpress/entities/alexei.h
index 9792385863..9a316ec574 100644
--- a/engines/lastexpress/entities/alexei.h
+++ b/engines/lastexpress/entities/alexei.h
@@ -123,9 +123,9 @@ public:
*/
DECLARE_FUNCTION(callbackActionRestaurantOrSalon)
- DECLARE_FUNCTION(function13)
- DECLARE_FUNCTION(function14)
- DECLARE_FUNCTION(function15)
+ DECLARE_FUNCTION(enterComparment)
+ DECLARE_FUNCTION(exitCompartment)
+ DECLARE_FUNCTION(pacingAtWindow)
/**
* ???
@@ -133,7 +133,7 @@ public:
* @param timeValue The time value
* @param sequence The sequence to draw
*/
- DECLARE_FUNCTION_2(function16, TimeValue timeValue, const char *sequence)
+ DECLARE_FUNCTION_2(compartmentLogic, TimeValue timeValue, const char *sequence)
/**
* Setup Chapter 1
@@ -143,14 +143,14 @@ public:
/**
* Handle Chapter 1 events
*/
- DECLARE_FUNCTION(chapter1Handler)
- DECLARE_FUNCTION(function19)
- DECLARE_FUNCTION(function20)
- DECLARE_FUNCTION(function21)
- DECLARE_FUNCTION(function22)
- DECLARE_FUNCTION(function23)
- DECLARE_FUNCTION(function24)
- DECLARE_FUNCTION(function25)
+ DECLARE_FUNCTION(atDinner)
+ DECLARE_FUNCTION(returnCompartment)
+ DECLARE_FUNCTION(goSalon)
+ DECLARE_FUNCTION(sitting)
+ DECLARE_FUNCTION(standingAtWindow)
+ DECLARE_FUNCTION(waitingForTatiana)
+ DECLARE_FUNCTION(upset)
+ DECLARE_FUNCTION(returnCompartmentNight)
DECLARE_FUNCTION(function26)
DECLARE_FUNCTION(function27)
@@ -162,9 +162,9 @@ public:
/**
* Handle Chapter 2 events
*/
- DECLARE_FUNCTION(chapter2Handler)
- DECLARE_FUNCTION(function30)
- DECLARE_FUNCTION(function31)
+ DECLARE_FUNCTION(inCompartment2)
+ DECLARE_FUNCTION(atBreakfast)
+ DECLARE_FUNCTION(returnCompartment2)
/**
* Setup Chapter 3
@@ -174,10 +174,10 @@ public:
/**
* Handle Chapter 3 events
*/
- DECLARE_FUNCTION(chapter3Handler)
- DECLARE_FUNCTION(function34)
- DECLARE_FUNCTION(function35)
- DECLARE_FUNCTION(function36)
+ DECLARE_FUNCTION(playingChess)
+ DECLARE_FUNCTION(inPart3)
+ DECLARE_FUNCTION(pacing3)
+ DECLARE_FUNCTION(goSalon3)
/**
* Setup Chapter 4
@@ -187,15 +187,15 @@ public:
/**
* Handle Chapter 4 events
*/
- DECLARE_FUNCTION(chapter4Handler)
- DECLARE_FUNCTION(function39)
- DECLARE_FUNCTION(function40)
- DECLARE_FUNCTION(function41)
- DECLARE_FUNCTION(function42)
- DECLARE_FUNCTION(function43)
- DECLARE_FUNCTION(function44)
- DECLARE_FUNCTION(function45)
- DECLARE_FUNCTION(function46)
+ DECLARE_FUNCTION(inCompartment4)
+ DECLARE_FUNCTION(meetTatiana)
+ DECLARE_FUNCTION(leavePlatform)
+ DECLARE_FUNCTION(inCompartmentAgain)
+ DECLARE_FUNCTION(goSalon4)
+ DECLARE_FUNCTION(pacing)
+ DECLARE_FUNCTION(goToPlatform)
+ DECLARE_FUNCTION(returnCompartment4)
+ DECLARE_FUNCTION(bombPlanB)
DECLARE_FUNCTION(function47)
/**
diff --git a/engines/lastexpress/entities/alouan.cpp b/engines/lastexpress/entities/alouan.cpp
index e834e1f7cb..86d5512cb9 100644
--- a/engines/lastexpress/entities/alouan.cpp
+++ b/engines/lastexpress/entities/alouan.cpp
@@ -38,10 +38,10 @@ Alouan::Alouan(LastExpressEngine *engine) : Entity(engine, kEntityAlouan) {
ADD_CALLBACK_FUNCTION(Alouan, playSound);
ADD_CALLBACK_FUNCTION(Alouan, updateFromTime);
ADD_CALLBACK_FUNCTION(Alouan, updateEntity);
- ADD_CALLBACK_FUNCTION(Alouan, compartment6);
- ADD_CALLBACK_FUNCTION(Alouan, compartment8);
- ADD_CALLBACK_FUNCTION(Alouan, compartment6to8);
- ADD_CALLBACK_FUNCTION(Alouan, compartment8to6);
+ ADD_CALLBACK_FUNCTION(Alouan, peekF);
+ ADD_CALLBACK_FUNCTION(Alouan, peekH);
+ ADD_CALLBACK_FUNCTION(Alouan, goFtoH);
+ ADD_CALLBACK_FUNCTION(Alouan, goHtoF);
ADD_CALLBACK_FUNCTION(Alouan, chapter1);
ADD_CALLBACK_FUNCTION(Alouan, chapter1Handler);
ADD_CALLBACK_FUNCTION(Alouan, function12);
@@ -55,7 +55,7 @@ Alouan::Alouan(LastExpressEngine *engine) : Entity(engine, kEntityAlouan) {
ADD_CALLBACK_FUNCTION(Alouan, chapter5);
ADD_CALLBACK_FUNCTION(Alouan, chapter5Handler);
ADD_CALLBACK_FUNCTION(Alouan, function22);
- ADD_CALLBACK_FUNCTION(Alouan, function23);
+ ADD_CALLBACK_FUNCTION(Alouan, hiding);
ADD_NULL_FUNCTION();
}
@@ -85,22 +85,22 @@ IMPLEMENT_FUNCTION_II(5, Alouan, updateEntity, CarIndex, EntityPosition)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(6, Alouan, compartment6)
+IMPLEMENT_FUNCTION(6, Alouan, peekF)
Entity::goToCompartment(savepoint, kObjectCompartment6, kPosition_4070, "621Cf", "621Df");
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(7, Alouan, compartment8)
+IMPLEMENT_FUNCTION(7, Alouan, peekH)
Entity::goToCompartment(savepoint, kObjectCompartment8, kPosition_2740, "621Ch", "621Dh");
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(8, Alouan, compartment6to8)
+IMPLEMENT_FUNCTION(8, Alouan, goFtoH)
Entity::goToCompartmentFromCompartment(savepoint, kObjectCompartment6, kPosition_4070, "621Bf", kObjectCompartment8, kPosition_2740, "621Ah");
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(9, Alouan, compartment8to6)
+IMPLEMENT_FUNCTION(9, Alouan, goHtoF)
Entity::goToCompartmentFromCompartment(savepoint, kObjectCompartment8, kPosition_2740, "621Bh", kObjectCompartment6, kPosition_4070, "621Af");
IMPLEMENT_FUNCTION_END
@@ -131,7 +131,7 @@ IMPLEMENT_FUNCTION(11, Alouan, chapter1Handler)
case kActionNone:
- if (Entity::timeCheckCallback(kTime1096200, params->param1, 1, WRAP_SETUP_FUNCTION(Alouan, setup_compartment8to6)))
+ if (Entity::timeCheckCallback(kTime1096200, params->param1, 1, WRAP_SETUP_FUNCTION(Alouan, setup_goHtoF)))
break;
label_callback1:
@@ -146,7 +146,7 @@ label_callback1:
getSavePoints()->push(kEntityAlouan, kEntityTrain, kAction191070912, kPosition_4840);
setCallback(2);
- setup_compartment6to8();
+ setup_goFtoH();
}
break;
@@ -215,9 +215,9 @@ IMPLEMENT_FUNCTION(14, Alouan, chapter2Handler)
setCallback(params->param1 ? 1 : 2);
if (params->param1)
- setup_compartment8();
+ setup_peekH();
else
- setup_compartment6();
+ setup_peekF();
break;
case kActionDefault:
@@ -249,7 +249,7 @@ IMPLEMENT_FUNCTION(14, Alouan, chapter2Handler)
case kAction189489753:
setCallback(3);
- setup_compartment8to6();
+ setup_goHtoF();
break;
}
IMPLEMENT_FUNCTION_END
@@ -282,12 +282,12 @@ IMPLEMENT_FUNCTION(16, Alouan, chapter3Handler)
break;
case kActionNone:
- if (Entity::timeCheckCallback(kTimeCitySalzbourg, params->param1, 1, WRAP_SETUP_FUNCTION(Alouan, setup_compartment8to6)))
+ if (Entity::timeCheckCallback(kTimeCitySalzbourg, params->param1, 1, WRAP_SETUP_FUNCTION(Alouan, setup_goHtoF)))
break;
label_callback1:
if (params->param2 != kTimeInvalid && getState()->time > kTime1989000) {
- if (Entity::timeCheckCar(kTime2119500, params->param5, 5, WRAP_SETUP_FUNCTION(Alouan, setup_compartment8)))
+ if (Entity::timeCheckCar(kTime2119500, params->param5, 5, WRAP_SETUP_FUNCTION(Alouan, setup_peekH)))
break;
}
@@ -296,12 +296,12 @@ label_callback2:
break;
label_callback3:
- if (Entity::timeCheckCallback(kTime2133000, params->param4, 4, WRAP_SETUP_FUNCTION(Alouan, setup_compartment6to8)))
+ if (Entity::timeCheckCallback(kTime2133000, params->param4, 4, WRAP_SETUP_FUNCTION(Alouan, setup_goFtoH)))
break;
label_callback4:
if (params->param5 != kTimeInvalid && getState()->time > kTime2151000) {
- if (Entity::timeCheckCar(kTime2241000, params->param5, 5, WRAP_SETUP_FUNCTION(Alouan, setup_compartment8)))
+ if (Entity::timeCheckCar(kTime2241000, params->param5, 5, WRAP_SETUP_FUNCTION(Alouan, setup_peekH)))
break;
}
break;
@@ -361,12 +361,12 @@ IMPLEMENT_FUNCTION(18, Alouan, chapter4Handler)
case kActionNone:
if (params->param1 != kTimeInvalid) {
- if (Entity::timeCheckCar(kTime2443500, params->param1, 1, WRAP_SETUP_FUNCTION(Alouan, setup_compartment8)))
+ if (Entity::timeCheckCar(kTime2443500, params->param1, 1, WRAP_SETUP_FUNCTION(Alouan, setup_peekH)))
break;
}
label_callback1:
- if (Entity::timeCheckCallback(kTime2455200, params->param2, 2, WRAP_SETUP_FUNCTION(Alouan, setup_compartment8to6)))
+ if (Entity::timeCheckCallback(kTime2455200, params->param2, 2, WRAP_SETUP_FUNCTION(Alouan, setup_goHtoF)))
break;
label_callback2:
@@ -375,7 +375,7 @@ label_callback2:
getSavePoints()->push(kEntityAlouan, kEntityTrain, kAction191070912, kPosition_4840);
setCallback(3);
- setup_compartment6to8();
+ setup_goFtoH();
}
break;
@@ -452,7 +452,7 @@ IMPLEMENT_FUNCTION(22, Alouan, function22)
if (!Entity::updateParameter(params->param1, getState()->time, 2700))
break;
- setup_function23();
+ setup_hiding();
break;
case kActionDefault:
@@ -463,13 +463,13 @@ IMPLEMENT_FUNCTION(22, Alouan, function22)
case kActionDrawScene:
if (getEntities()->isInsideTrainCar(kEntityPlayer, kCarGreenSleeping))
- setup_function23();
+ setup_hiding();
break;
}
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(23, Alouan, function23)
+IMPLEMENT_FUNCTION(23, Alouan, hiding)
switch (savepoint.action) {
default:
break;
diff --git a/engines/lastexpress/entities/alouan.h b/engines/lastexpress/entities/alouan.h
index 91254a449a..371e4f20d9 100644
--- a/engines/lastexpress/entities/alouan.h
+++ b/engines/lastexpress/entities/alouan.h
@@ -69,10 +69,10 @@ public:
*/
DECLARE_FUNCTION_2(updateEntity, CarIndex car, EntityPosition entityPosition)
- DECLARE_FUNCTION(compartment6)
- DECLARE_FUNCTION(compartment8)
- DECLARE_FUNCTION(compartment6to8)
- DECLARE_FUNCTION(compartment8to6)
+ DECLARE_FUNCTION(peekF)
+ DECLARE_FUNCTION(peekH)
+ DECLARE_FUNCTION(goFtoH)
+ DECLARE_FUNCTION(goHtoF)
/**
* Setup Chapter 1
@@ -126,7 +126,7 @@ public:
*/
DECLARE_FUNCTION(chapter5Handler)
DECLARE_FUNCTION(function22)
- DECLARE_FUNCTION(function23)
+ DECLARE_FUNCTION(hiding)
DECLARE_NULL_FUNCTION()
};
diff --git a/engines/lastexpress/entities/anna.cpp b/engines/lastexpress/entities/anna.cpp
index f8768032b5..4889f66c69 100644
--- a/engines/lastexpress/entities/anna.cpp
+++ b/engines/lastexpress/entities/anna.cpp
@@ -51,76 +51,76 @@ Anna::Anna(LastExpressEngine *engine) : Entity(engine, kEntityAnna) {
ADD_CALLBACK_FUNCTION(Anna, savegame);
ADD_CALLBACK_FUNCTION(Anna, updateEntity);
ADD_CALLBACK_FUNCTION(Anna, updateFromTime);
- ADD_CALLBACK_FUNCTION(Anna, function12);
+ ADD_CALLBACK_FUNCTION(Anna, practiceMusic);
ADD_CALLBACK_FUNCTION(Anna, draw2);
ADD_CALLBACK_FUNCTION(Anna, updateFromTicks);
- ADD_CALLBACK_FUNCTION(Anna, function15);
+ ADD_CALLBACK_FUNCTION(Anna, compartmentLogic);
ADD_CALLBACK_FUNCTION(Anna, chapter1);
- ADD_CALLBACK_FUNCTION(Anna, function17);
- ADD_CALLBACK_FUNCTION(Anna, function18);
- ADD_CALLBACK_FUNCTION(Anna, chapter1Handler);
- ADD_CALLBACK_FUNCTION(Anna, function20);
- ADD_CALLBACK_FUNCTION(Anna, function21);
+ ADD_CALLBACK_FUNCTION(Anna, doWalkP1);
+ ADD_CALLBACK_FUNCTION(Anna, diningLogic);
+ ADD_CALLBACK_FUNCTION(Anna, fleeTyler);
+ ADD_CALLBACK_FUNCTION(Anna, waitDinner);
+ ADD_CALLBACK_FUNCTION(Anna, goDinner);
ADD_CALLBACK_FUNCTION(Anna, function22);
- ADD_CALLBACK_FUNCTION(Anna, function23);
- ADD_CALLBACK_FUNCTION(Anna, function24);
- ADD_CALLBACK_FUNCTION(Anna, function25);
- ADD_CALLBACK_FUNCTION(Anna, function26);
- ADD_CALLBACK_FUNCTION(Anna, function27);
- ADD_CALLBACK_FUNCTION(Anna, function28);
- ADD_CALLBACK_FUNCTION(Anna, function29);
+ ADD_CALLBACK_FUNCTION(Anna, waitingDinner);
+ ADD_CALLBACK_FUNCTION(Anna, waitingDinner2);
+ ADD_CALLBACK_FUNCTION(Anna, eatingDinner);
+ ADD_CALLBACK_FUNCTION(Anna, leaveDinner);
+ ADD_CALLBACK_FUNCTION(Anna, freshenUp);
+ ADD_CALLBACK_FUNCTION(Anna, goSalon);
+ ADD_CALLBACK_FUNCTION(Anna, waitAugust);
ADD_CALLBACK_FUNCTION(Anna, function30);
- ADD_CALLBACK_FUNCTION(Anna, function31);
- ADD_CALLBACK_FUNCTION(Anna, function32);
- ADD_CALLBACK_FUNCTION(Anna, function33);
- ADD_CALLBACK_FUNCTION(Anna, function34);
- ADD_CALLBACK_FUNCTION(Anna, function35);
- ADD_CALLBACK_FUNCTION(Anna, function36);
+ ADD_CALLBACK_FUNCTION(Anna, leaveAugust);
+ ADD_CALLBACK_FUNCTION(Anna, returnCompartment);
+ ADD_CALLBACK_FUNCTION(Anna, readyForBed);
+ ADD_CALLBACK_FUNCTION(Anna, asleep);
+ ADD_CALLBACK_FUNCTION(Anna, wakeNight);
+ ADD_CALLBACK_FUNCTION(Anna, goVassili);
ADD_CALLBACK_FUNCTION(Anna, function37);
- ADD_CALLBACK_FUNCTION(Anna, function38);
- ADD_CALLBACK_FUNCTION(Anna, function39);
- ADD_CALLBACK_FUNCTION(Anna, function40);
- ADD_CALLBACK_FUNCTION(Anna, function41);
+ ADD_CALLBACK_FUNCTION(Anna, speakTatiana);
+ ADD_CALLBACK_FUNCTION(Anna, doWalk1019);
+ ADD_CALLBACK_FUNCTION(Anna, leaveTatiana);
+ ADD_CALLBACK_FUNCTION(Anna, goBackToSleep);
ADD_CALLBACK_FUNCTION(Anna, chapter2);
- ADD_CALLBACK_FUNCTION(Anna, chapter2Handler);
+ ADD_CALLBACK_FUNCTION(Anna, inPart2);
ADD_CALLBACK_FUNCTION(Anna, chapter3);
- ADD_CALLBACK_FUNCTION(Anna, function45);
- ADD_CALLBACK_FUNCTION(Anna, chapter3Handler);
- ADD_CALLBACK_FUNCTION(Anna, function47);
- ADD_CALLBACK_FUNCTION(Anna, function48);
+ ADD_CALLBACK_FUNCTION(Anna, exitCompartment);
+ ADD_CALLBACK_FUNCTION(Anna, practicing);
+ ADD_CALLBACK_FUNCTION(Anna, goLunch);
+ ADD_CALLBACK_FUNCTION(Anna, lunch);
ADD_CALLBACK_FUNCTION(Anna, leaveTableWithAugust);
- ADD_CALLBACK_FUNCTION(Anna, function50);
- ADD_CALLBACK_FUNCTION(Anna, function51);
- ADD_CALLBACK_FUNCTION(Anna, function52);
- ADD_CALLBACK_FUNCTION(Anna, function53);
- ADD_CALLBACK_FUNCTION(Anna, function54);
- ADD_CALLBACK_FUNCTION(Anna, function55);
- ADD_CALLBACK_FUNCTION(Anna, function56);
- ADD_CALLBACK_FUNCTION(Anna, function57);
- ADD_CALLBACK_FUNCTION(Anna, function58);
- ADD_CALLBACK_FUNCTION(Anna, function59);
- ADD_CALLBACK_FUNCTION(Anna, function60);
- ADD_CALLBACK_FUNCTION(Anna, function61);
+ ADD_CALLBACK_FUNCTION(Anna, leaveLunch);
+ ADD_CALLBACK_FUNCTION(Anna, afterLunch);
+ ADD_CALLBACK_FUNCTION(Anna, returnCompartment3);
+ ADD_CALLBACK_FUNCTION(Anna, dressing);
+ ADD_CALLBACK_FUNCTION(Anna, giveMaxToConductor2);
+ ADD_CALLBACK_FUNCTION(Anna, goConcert);
+ ADD_CALLBACK_FUNCTION(Anna, concert);
+ ADD_CALLBACK_FUNCTION(Anna, leaveConcert);
+ ADD_CALLBACK_FUNCTION(Anna, leaveConcertCathInCompartment);
+ ADD_CALLBACK_FUNCTION(Anna, afterConcert);
+ ADD_CALLBACK_FUNCTION(Anna, giveMaxBack);
+ ADD_CALLBACK_FUNCTION(Anna, goBaggageCompartment);
ADD_CALLBACK_FUNCTION(Anna, function62);
- ADD_CALLBACK_FUNCTION(Anna, function63);
- ADD_CALLBACK_FUNCTION(Anna, baggage);
- ADD_CALLBACK_FUNCTION(Anna, function65);
+ ADD_CALLBACK_FUNCTION(Anna, deadBaggageCompartment);
+ ADD_CALLBACK_FUNCTION(Anna, baggageFight);
+ ADD_CALLBACK_FUNCTION(Anna, prepareVienna);
ADD_CALLBACK_FUNCTION(Anna, chapter4);
- ADD_CALLBACK_FUNCTION(Anna, chapter4Handler);
- ADD_CALLBACK_FUNCTION(Anna, function68);
- ADD_CALLBACK_FUNCTION(Anna, function69);
- ADD_CALLBACK_FUNCTION(Anna, function70);
- ADD_CALLBACK_FUNCTION(Anna, function71);
- ADD_CALLBACK_FUNCTION(Anna, function72);
- ADD_CALLBACK_FUNCTION(Anna, function73);
+ ADD_CALLBACK_FUNCTION(Anna, reading);
+ ADD_CALLBACK_FUNCTION(Anna, sulking);
+ ADD_CALLBACK_FUNCTION(Anna, goSalon4);
+ ADD_CALLBACK_FUNCTION(Anna, returnCompartment4);
+ ADD_CALLBACK_FUNCTION(Anna, enterCompartmentCathFollowsAnna);
+ ADD_CALLBACK_FUNCTION(Anna, doWalkCathFollowsAnna);
+ ADD_CALLBACK_FUNCTION(Anna, letDownHair);
ADD_CALLBACK_FUNCTION(Anna, chapter5);
- ADD_CALLBACK_FUNCTION(Anna, chapter5Handler);
+ ADD_CALLBACK_FUNCTION(Anna, tiedUp);
ADD_CALLBACK_FUNCTION(Anna, function76);
- ADD_CALLBACK_FUNCTION(Anna, function77);
- ADD_CALLBACK_FUNCTION(Anna, function78);
- ADD_CALLBACK_FUNCTION(Anna, function79);
- ADD_CALLBACK_FUNCTION(Anna, function80);
+ ADD_CALLBACK_FUNCTION(Anna, readyToScore);
+ ADD_CALLBACK_FUNCTION(Anna, kidnapped);
+ ADD_CALLBACK_FUNCTION(Anna, waiting);
ADD_CALLBACK_FUNCTION(Anna, finalSequence);
+ ADD_CALLBACK_FUNCTION(Anna, openFirebird);
}
//////////////////////////////////////////////////////////////////////////
@@ -188,7 +188,7 @@ IMPLEMENT_FUNCTION_I(11, Anna, updateFromTime, uint32)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(12, Anna, function12)
+IMPLEMENT_FUNCTION(12, Anna, practiceMusic)
switch (savepoint.action) {
default:
break;
@@ -411,7 +411,7 @@ IMPLEMENT_FUNCTION_I(14, Anna, updateFromTicks, uint32)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION_IS(15, Anna, function15, TimeValue)
+IMPLEMENT_FUNCTION_IS(15, Anna, compartmentLogic, TimeValue)
switch (savepoint.action) {
default:
break;
@@ -547,7 +547,7 @@ IMPLEMENT_FUNCTION(16, Anna, chapter1)
break;
case kActionNone:
- Entity::timeCheck(kTimeChapter1, params->param1, WRAP_SETUP_FUNCTION(Anna, setup_chapter1Handler));
+ Entity::timeCheck(kTimeChapter1, params->param1, WRAP_SETUP_FUNCTION(Anna, setup_fleeTyler));
break;
case kActionDefault:
@@ -567,7 +567,7 @@ IMPLEMENT_FUNCTION(16, Anna, chapter1)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION_II(17, Anna, function17, uint32, uint32)
+IMPLEMENT_FUNCTION_II(17, Anna, doWalkP1, uint32, uint32)
switch (savepoint.action) {
default:
break;
@@ -656,7 +656,7 @@ IMPLEMENT_FUNCTION_II(17, Anna, function17, uint32, uint32)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION_I(18, Anna, function18, TimeValue)
+IMPLEMENT_FUNCTION_I(18, Anna, diningLogic, TimeValue)
switch (savepoint.action) {
default:
break;
@@ -764,7 +764,7 @@ IMPLEMENT_FUNCTION_I(18, Anna, function18, TimeValue)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(19, Anna, chapter1Handler)
+IMPLEMENT_FUNCTION(19, Anna, fleeTyler)
switch (savepoint.action) {
default:
break;
@@ -797,7 +797,7 @@ IMPLEMENT_FUNCTION(19, Anna, chapter1Handler)
getData()->entityPosition = kPosition_4070;
getData()->location = kLocationInsideCompartment;
- setup_function20();
+ setup_waitDinner();
break;
}
break;
@@ -805,14 +805,14 @@ IMPLEMENT_FUNCTION(19, Anna, chapter1Handler)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(20, Anna, function20)
+IMPLEMENT_FUNCTION(20, Anna, waitDinner)
switch (savepoint.action) {
default:
break;
case kActionDefault:
setCallback(1);
- setup_function15(kTime1093500, "NONE");
+ setup_compartmentLogic(kTime1093500, "NONE");
break;
case kActionCallback:
@@ -828,7 +828,7 @@ IMPLEMENT_FUNCTION(20, Anna, function20)
case 2:
getData()->location = kLocationOutsideCompartment;
getSavePoints()->push(kEntityAnna, kEntityMax, kAction71277948);
- setup_function21();
+ setup_goDinner();
break;
}
break;
@@ -836,14 +836,14 @@ IMPLEMENT_FUNCTION(20, Anna, function20)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(21, Anna, function21)
+IMPLEMENT_FUNCTION(21, Anna, goDinner)
switch (savepoint.action) {
default:
break;
case kActionDefault:
setCallback(1);
- setup_function17(kCarRestaurant, kPosition_850);
+ setup_doWalkP1(kCarRestaurant, kPosition_850);
break;
case kActionCallback:
@@ -894,13 +894,13 @@ IMPLEMENT_FUNCTION(22, Anna, function22)
case kAction157370960:
getData()->location = kLocationInsideCompartment;
- setup_function23();
+ setup_waitingDinner();
break;
}
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(23, Anna, function23)
+IMPLEMENT_FUNCTION(23, Anna, waitingDinner)
switch (savepoint.action) {
default:
break;
@@ -911,7 +911,7 @@ IMPLEMENT_FUNCTION(23, Anna, function23)
getSavePoints()->push(kEntityAnna, kEntityTables0, kAction136455232);
setCallback(1);
- setup_function18(kTimeNone);
+ setup_diningLogic(kTimeNone);
break;
case kActionCallback:
@@ -932,7 +932,7 @@ IMPLEMENT_FUNCTION(23, Anna, function23)
case 3:
getSavePoints()->push(kEntityAnna, kEntityServers0, kAction203859488);
- setup_function24();
+ setup_waitingDinner2();
break;
}
break;
@@ -940,7 +940,7 @@ IMPLEMENT_FUNCTION(23, Anna, function23)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(24, Anna, function24)
+IMPLEMENT_FUNCTION(24, Anna, waitingDinner2)
switch (savepoint.action) {
default:
break;
@@ -949,7 +949,7 @@ IMPLEMENT_FUNCTION(24, Anna, function24)
getEntities()->drawSequenceLeft(kEntityAnna, "001G");
setCallback(1);
- setup_function18(kTimeNone);
+ setup_diningLogic(kTimeNone);
break;
case kActionCallback:
@@ -965,7 +965,7 @@ IMPLEMENT_FUNCTION(24, Anna, function24)
case 2:
getSavePoints()->push(kEntityAnna, kEntityServers0, kAction136702400);
- setup_function25();
+ setup_eatingDinner();
break;
}
break;
@@ -973,7 +973,7 @@ IMPLEMENT_FUNCTION(24, Anna, function24)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(25, Anna, function25)
+IMPLEMENT_FUNCTION(25, Anna, eatingDinner)
switch (savepoint.action) {
default:
break;
@@ -983,7 +983,7 @@ IMPLEMENT_FUNCTION(25, Anna, function25)
getProgress().field_28 = 1;
setCallback(1);
- setup_function18(kTimeNone);
+ setup_diningLogic(kTimeNone);
break;
case kActionCallback:
@@ -996,7 +996,7 @@ IMPLEMENT_FUNCTION(25, Anna, function25)
break;
case 3:
- setup_function26();
+ setup_leaveDinner();
break;
}
break;
@@ -1008,13 +1008,13 @@ IMPLEMENT_FUNCTION(25, Anna, function25)
case kAction201437056:
getEntities()->drawSequenceLeft(kEntityAnna, "001J");
setCallback(2);
- setup_function18(kTime1138500);
+ setup_diningLogic(kTime1138500);
break;
}
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(26, Anna, function26)
+IMPLEMENT_FUNCTION(26, Anna, leaveDinner)
switch (savepoint.action) {
default:
break;
@@ -1046,7 +1046,7 @@ IMPLEMENT_FUNCTION(26, Anna, function26)
case 2:
setCallback(3);
- setup_function17(kCarRedSleeping, kPosition_4070);
+ setup_doWalkP1(kCarRedSleeping, kPosition_4070);
break;
case 3:
@@ -1059,7 +1059,7 @@ IMPLEMENT_FUNCTION(26, Anna, function26)
getData()->entityPosition = kPosition_4070;
getData()->location = kLocationInsideCompartment;
- setup_function27();
+ setup_freshenUp();
break;
}
break;
@@ -1067,7 +1067,7 @@ IMPLEMENT_FUNCTION(26, Anna, function26)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(27, Anna, function27)
+IMPLEMENT_FUNCTION(27, Anna, freshenUp)
switch (savepoint.action) {
default:
break;
@@ -1075,7 +1075,7 @@ IMPLEMENT_FUNCTION(27, Anna, function27)
case kActionDefault:
getSavePoints()->push(kEntityAnna, kEntityMax, kAction101687594);
setCallback(1);
- setup_function15(kTime1156500, "NONE");
+ setup_compartmentLogic(kTime1156500, "NONE");
break;
case kActionCallback:
@@ -1088,7 +1088,7 @@ IMPLEMENT_FUNCTION(27, Anna, function27)
if (getProgress().field_14 == 29) {
params->param1 = (uint)(getState()->time + 900);
setCallback(2);
- setup_function15((TimeValue)params->param1, "NONE");
+ setup_compartmentLogic((TimeValue)params->param1, "NONE");
} else {
setCallback(3);
setup_enterExitCompartment("618Bf", kObjectCompartmentF);
@@ -1098,7 +1098,7 @@ IMPLEMENT_FUNCTION(27, Anna, function27)
case 3:
getData()->location = kLocationOutsideCompartment;
getSavePoints()->push(kEntityAnna, kEntityMax, kAction71277948);
- setup_function28();
+ setup_goSalon();
break;
}
break;
@@ -1106,14 +1106,14 @@ IMPLEMENT_FUNCTION(27, Anna, function27)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(28, Anna, function28)
+IMPLEMENT_FUNCTION(28, Anna, goSalon)
switch (savepoint.action) {
default:
break;
case kActionDefault:
setCallback(1);
- setup_function17(kCarRestaurant, kPosition_850);
+ setup_doWalkP1(kCarRestaurant, kPosition_850);
break;
case kActionCallback:
@@ -1137,7 +1137,7 @@ IMPLEMENT_FUNCTION(28, Anna, function28)
case 3:
getData()->location = kLocationInsideCompartment;
- setup_function29();
+ setup_waitAugust();
break;
}
break;
@@ -1145,7 +1145,7 @@ IMPLEMENT_FUNCTION(28, Anna, function28)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(29, Anna, function29)
+IMPLEMENT_FUNCTION(29, Anna, waitAugust)
switch (savepoint.action) {
default:
break;
@@ -1268,7 +1268,7 @@ IMPLEMENT_FUNCTION(30, Anna, function30)
if (getState()->time > kTime1192500) {
params->param4 = kTimeInvalid;
- setup_function30();
+ setup_leaveAugust();
break;
}
@@ -1277,7 +1277,7 @@ IMPLEMENT_FUNCTION(30, Anna, function30)
if (params->param4 < getState()->time) {
params->param4 = kTimeInvalid;
- setup_function30();
+ setup_leaveAugust();
break;
}
}
@@ -1308,7 +1308,7 @@ IMPLEMENT_FUNCTION(30, Anna, function30)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(31, Anna, function31)
+IMPLEMENT_FUNCTION(31, Anna, leaveAugust)
switch (savepoint.action) {
default:
break;
@@ -1343,7 +1343,7 @@ IMPLEMENT_FUNCTION(31, Anna, function31)
getInventory()->setLocationAndProcess(kItem3, kObjectLocation1);
getSavePoints()->push(kEntityAnna, kEntityAugust, kAction159332865);
- setup_function32();
+ setup_returnCompartment();
break;
}
break;
@@ -1351,14 +1351,14 @@ IMPLEMENT_FUNCTION(31, Anna, function31)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(32, Anna, function32)
+IMPLEMENT_FUNCTION(32, Anna, returnCompartment)
switch (savepoint.action) {
default:
break;
case kActionDefault:
setCallback(1);
- setup_function17(kCarRedSleeping, kPosition_4070);
+ setup_doWalkP1(kCarRedSleeping, kPosition_4070);
break;
case kActionCallback:
@@ -1377,7 +1377,7 @@ IMPLEMENT_FUNCTION(32, Anna, function32)
getData()->entityPosition = kPosition_4070;
getData()->location = kLocationInsideCompartment;
- setup_function33();
+ setup_readyForBed();
break;
}
break;
@@ -1385,7 +1385,7 @@ IMPLEMENT_FUNCTION(32, Anna, function32)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(33, Anna, function33)
+IMPLEMENT_FUNCTION(33, Anna, readyForBed)
switch (savepoint.action) {
default:
break;
@@ -1395,20 +1395,20 @@ IMPLEMENT_FUNCTION(33, Anna, function33)
params->param1 = (uint)(getState()->time + 4500);
setCallback(1);
- setup_function15((TimeValue)params->param1, "NONE");
+ setup_compartmentLogic((TimeValue)params->param1, "NONE");
break;
case kActionCallback:
if (getCallback() == 1) {
- getObjects()->updateLocation2(kObjectCompartmentF, kObjectLocation1);
- setup_function34();
+ getObjects()->updateModel(kObjectCompartmentF, kObjectModel1);
+ setup_asleep();
}
break;
}
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(34, Anna, function34)
+IMPLEMENT_FUNCTION(34, Anna, asleep)
switch (savepoint.action) {
default:
break;
@@ -1423,7 +1423,7 @@ IMPLEMENT_FUNCTION(34, Anna, function34)
}
label_callback_1:
- Entity::timeCheck(kTime1489500, params->param3, WRAP_SETUP_FUNCTION(Anna, setup_function35));
+ Entity::timeCheck(kTime1489500, params->param3, WRAP_SETUP_FUNCTION(Anna, setup_wakeNight));
break;
case kActionKnock:
@@ -1480,7 +1480,7 @@ label_callback_1:
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(35, Anna, function35)
+IMPLEMENT_FUNCTION(35, Anna, wakeNight)
switch (savepoint.action) {
default:
break;
@@ -1561,11 +1561,11 @@ IMPLEMENT_FUNCTION(35, Anna, function35)
getSavePoints()->push(kEntityAnna, kEntityCoudert, kAction339669520);
getSavePoints()->push(kEntityAnna, kEntityMax, kAction71277948);
- setup_function36();
+ setup_goVassili();
break;
case 2:
- setup_function36();
+ setup_goVassili();
break;
}
break;
@@ -1585,7 +1585,7 @@ IMPLEMENT_FUNCTION(35, Anna, function35)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(36, Anna, function36)
+IMPLEMENT_FUNCTION(36, Anna, goVassili)
switch (savepoint.action) {
default:
break;
@@ -1634,13 +1634,13 @@ IMPLEMENT_FUNCTION(37, Anna, function37)
break;
case kAction191477936:
- setup_function38();
+ setup_speakTatiana();
break;
}
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(38, Anna, function38)
+IMPLEMENT_FUNCTION(38, Anna, speakTatiana)
switch (savepoint.action) {
default:
break;
@@ -1655,14 +1655,14 @@ IMPLEMENT_FUNCTION(38, Anna, function38)
case kActionCallback:
if (getCallback() == 1) {
getSound()->playSound(kEntityPlayer, "MUS043");
- setup_function40();
+ setup_leaveTatiana();
}
break;
}
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION_II(39, Anna, function39, CarIndex, EntityPosition)
+IMPLEMENT_FUNCTION_II(39, Anna, doWalk1019, CarIndex, EntityPosition)
switch (savepoint.action) {
default:
break;
@@ -1708,7 +1708,7 @@ IMPLEMENT_FUNCTION_II(39, Anna, function39, CarIndex, EntityPosition)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(40, Anna, function40)
+IMPLEMENT_FUNCTION(40, Anna, leaveTatiana)
switch (savepoint.action) {
default:
break;
@@ -1727,7 +1727,7 @@ IMPLEMENT_FUNCTION(40, Anna, function40)
getData()->location = kLocationOutsideCompartment;
setCallback(2);
- setup_function39(kCarRedSleeping, kPosition_4070);
+ setup_doWalk1019(kCarRedSleeping, kPosition_4070);
break;
case 2:
@@ -1752,7 +1752,7 @@ IMPLEMENT_FUNCTION(40, Anna, function40)
getData()->location = kLocationOutsideCompartment;
setCallback(6);
- setup_function39(kCarRedSleeping, kPosition_7500);
+ setup_doWalk1019(kCarRedSleeping, kPosition_7500);
break;
case 6:
@@ -1777,7 +1777,7 @@ IMPLEMENT_FUNCTION(40, Anna, function40)
getData()->location = kLocationOutsideCompartment;
setCallback(10);
- setup_function39(kCarRedSleeping, kPosition_4070);
+ setup_doWalk1019(kCarRedSleeping, kPosition_4070);
break;
case 10:
@@ -1790,7 +1790,7 @@ IMPLEMENT_FUNCTION(40, Anna, function40)
getData()->location = kLocationInsideCompartment;
getData()->entityPosition = kPosition_4070;
- setup_function41();
+ setup_goBackToSleep();
break;
}
break;
@@ -1798,7 +1798,7 @@ IMPLEMENT_FUNCTION(40, Anna, function40)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(41, Anna, function41)
+IMPLEMENT_FUNCTION(41, Anna, goBackToSleep)
switch (savepoint.action) {
default:
break;
@@ -1875,7 +1875,7 @@ IMPLEMENT_FUNCTION(42, Anna, chapter2)
break;
case kActionNone:
- setup_chapter2Handler();
+ setup_inPart2();
break;
case kActionDefault:
@@ -1892,7 +1892,7 @@ IMPLEMENT_FUNCTION(42, Anna, chapter2)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(43, Anna, chapter2Handler)
+IMPLEMENT_FUNCTION(43, Anna, inPart2)
switch (savepoint.action) {
default:
break;
@@ -1901,7 +1901,7 @@ IMPLEMENT_FUNCTION(43, Anna, chapter2Handler)
getObjects()->update(kObjectOutsideAnnaCompartment, kEntityPlayer, kObjectLocationNone, kCursorKeepValue, kCursorKeepValue);
setCallback(1);
- setup_function12();
+ setup_practiceMusic();
break;
case kActionCallback:
@@ -1911,27 +1911,27 @@ IMPLEMENT_FUNCTION(43, Anna, chapter2Handler)
case 1:
setCallback(2);
- setup_function15(kTime1786500, "418C");
+ setup_compartmentLogic(kTime1786500, "418C");
break;
case 2:
setCallback(3);
- setup_function12();
+ setup_practiceMusic();
break;
case 3:
setCallback(4);
- setup_function15(kTime1818000, "418C");
+ setup_compartmentLogic(kTime1818000, "418C");
break;
case 4:
setCallback(5);
- setup_function12();
+ setup_practiceMusic();
break;
case 5:
setCallback(6);
- setup_function15(kTimeEnd, "418C");
+ setup_compartmentLogic(kTimeEnd, "418C");
break;
}
break;
@@ -1945,7 +1945,7 @@ IMPLEMENT_FUNCTION(44, Anna, chapter3)
break;
case kActionNone:
- setup_chapter3Handler();
+ setup_practicing();
break;
case kActionDefault:
@@ -1965,7 +1965,7 @@ IMPLEMENT_FUNCTION(44, Anna, chapter3)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION_I(45, Anna, function45, bool)
+IMPLEMENT_FUNCTION_I(45, Anna, exitCompartment, bool)
switch (savepoint.action) {
default:
break;
@@ -2004,7 +2004,7 @@ IMPLEMENT_FUNCTION_I(45, Anna, function45, bool)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(46, Anna, chapter3Handler)
+IMPLEMENT_FUNCTION(46, Anna, practicing)
switch (savepoint.action) {
default:
break;
@@ -2014,16 +2014,16 @@ IMPLEMENT_FUNCTION(46, Anna, chapter3Handler)
getScenes()->loadSceneFromPosition(kCarRedSleeping, 49);
setCallback(1);
- setup_function12();
+ setup_practiceMusic();
break;
case kActionCallback:
if (getCallback() == 1 || getCallback() == 2) {
if (ENTITY_PARAM(0, 1)) {
- setup_function47();
+ setup_goLunch();
} else {
setCallback(2);
- setup_function15((TimeValue)(getState()->time + 4500), "418C");
+ setup_compartmentLogic((TimeValue) (getState()->time + 4500), "418C");
}
}
break;
@@ -2031,7 +2031,7 @@ IMPLEMENT_FUNCTION(46, Anna, chapter3Handler)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(47, Anna, function47)
+IMPLEMENT_FUNCTION(47, Anna, goLunch)
switch (savepoint.action) {
default:
break;
@@ -2080,7 +2080,7 @@ IMPLEMENT_FUNCTION(47, Anna, function47)
case 5:
getEntities()->drawSequenceLeft(kEntityAugust, "BLANK");
- setup_function48();
+ setup_lunch();
break;
}
break;
@@ -2088,7 +2088,7 @@ IMPLEMENT_FUNCTION(47, Anna, function47)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(48, Anna, function48)
+IMPLEMENT_FUNCTION(48, Anna, lunch)
switch (savepoint.action) {
default:
break;
@@ -2121,7 +2121,7 @@ label_callback_4:
params->param4 = kTimeInvalid;
- setup_function50();
+ setup_leaveLunch();
}
}
break;
@@ -2213,7 +2213,7 @@ IMPLEMENT_FUNCTION(49, Anna, leaveTableWithAugust)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(50, Anna, function50)
+IMPLEMENT_FUNCTION(50, Anna, leaveLunch)
switch (savepoint.action) {
default:
break;
@@ -2240,7 +2240,7 @@ IMPLEMENT_FUNCTION(50, Anna, function50)
break;
case 3:
- setup_function51();
+ setup_afterLunch();
break;
}
break;
@@ -2248,7 +2248,7 @@ IMPLEMENT_FUNCTION(50, Anna, function50)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(51, Anna, function51)
+IMPLEMENT_FUNCTION(51, Anna, afterLunch)
switch (savepoint.action) {
default:
break;
@@ -2291,7 +2291,7 @@ IMPLEMENT_FUNCTION(51, Anna, function51)
case 2:
getSavePoints()->push(kEntityAnna, kEntityAugust, kAction122288808);
- setup_function52();
+ setup_returnCompartment3();
break;
case 3:
@@ -2348,7 +2348,7 @@ IMPLEMENT_FUNCTION(51, Anna, function51)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(52, Anna, function52)
+IMPLEMENT_FUNCTION(52, Anna, returnCompartment3)
switch (savepoint.action) {
default:
break;
@@ -2360,7 +2360,7 @@ IMPLEMENT_FUNCTION(52, Anna, function52)
getEntities()->clearSequences(kEntityAnna);
- setup_function53();
+ setup_dressing();
break;
case kActionDefault:
@@ -2385,7 +2385,7 @@ IMPLEMENT_FUNCTION(52, Anna, function52)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(53, Anna, function53)
+IMPLEMENT_FUNCTION(53, Anna, dressing)
switch (savepoint.action) {
default:
break;
@@ -2393,7 +2393,7 @@ IMPLEMENT_FUNCTION(53, Anna, function53)
case kActionNone:
if (getProgress().field_48 && params->param5 != kTimeInvalid) {
if (Entity::updateParameterTime(kTime2065500, !getEntities()->isPlayerInCar(kCarRedSleeping), params->param5, 150)) {
- setup_function54();
+ setup_giveMaxToConductor2();
break;
}
}
@@ -2537,14 +2537,14 @@ IMPLEMENT_FUNCTION(53, Anna, function53)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(54, Anna, function54)
+IMPLEMENT_FUNCTION(54, Anna, giveMaxToConductor2)
switch (savepoint.action) {
default:
break;
case kActionNone:
if (params->param3) {
- if (Entity::timeCheck(kTime2079000, params->param5, WRAP_SETUP_FUNCTION(Anna, setup_function55)))
+ if (Entity::timeCheck(kTime2079000, params->param5, WRAP_SETUP_FUNCTION(Anna, setup_goConcert)))
break;
if (Entity::updateParameter(params->param6, getState()->time, 9000)) {
@@ -2702,7 +2702,7 @@ IMPLEMENT_FUNCTION(54, Anna, function54)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(55, Anna, function55)
+IMPLEMENT_FUNCTION(55, Anna, goConcert)
switch (savepoint.action) {
default:
break;
@@ -2718,7 +2718,7 @@ IMPLEMENT_FUNCTION(55, Anna, function55)
getInventory()->setLocationAndProcess(kItemKey, kObjectLocation1);
setCallback(1);
- setup_function45(true);
+ setup_exitCompartment(true);
break;
case kActionCallback:
@@ -2733,7 +2733,7 @@ IMPLEMENT_FUNCTION(55, Anna, function55)
break;
case 2:
- setup_function56();
+ setup_concert();
break;
}
break;
@@ -2741,7 +2741,7 @@ IMPLEMENT_FUNCTION(55, Anna, function55)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(56, Anna, function56)
+IMPLEMENT_FUNCTION(56, Anna, concert)
switch (savepoint.action) {
default:
break;
@@ -2754,13 +2754,13 @@ IMPLEMENT_FUNCTION(56, Anna, function56)
break;
case kAction191668032:
- setup_function57();
+ setup_leaveConcert();
break;
}
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(57, Anna, function57)
+IMPLEMENT_FUNCTION(57, Anna, leaveConcert)
switch (savepoint.action) {
default:
break;
@@ -2820,7 +2820,7 @@ IMPLEMENT_FUNCTION(57, Anna, function57)
getEntities()->exitCompartment(kEntityAnna, kObjectCompartmentF, true);
getSavePoints()->push(kEntityAnna, kEntityAugust, kAction122288808);
- setup_function59();
+ setup_afterConcert();
break;
}
break;
@@ -2841,7 +2841,7 @@ IMPLEMENT_FUNCTION(57, Anna, function57)
if (getEntities()->isInsideCompartment(kEntityPlayer, kCarRedSleeping, kPosition_4070)
|| getEntities()->isInsideCompartment(kEntityPlayer, kCarRedSleeping, kPosition_4455)) {
getEntities()->exitCompartment(kEntityAnna, kObjectCompartmentF, true);
- setup_function58();
+ setup_leaveConcertCathInCompartment();
} else {
setCallback(3);
setup_enterExitCompartment("625Ff", kObjectCompartmentF);
@@ -2851,7 +2851,7 @@ IMPLEMENT_FUNCTION(57, Anna, function57)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(58, Anna, function58)
+IMPLEMENT_FUNCTION(58, Anna, leaveConcertCathInCompartment)
switch (savepoint.action) {
default:
break;
@@ -2868,14 +2868,14 @@ IMPLEMENT_FUNCTION(58, Anna, function58)
getScenes()->loadSceneFromPosition(kCarRedSleeping, 8);
getSound()->playSound(kEntityAnna, "lib015");
getSavePoints()->push(kEntityAnna, kEntityAugust, kAction122288808);
- setup_function59();
+ setup_afterConcert();
}
break;
}
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(59, Anna, function59)
+IMPLEMENT_FUNCTION(59, Anna, afterConcert)
switch (savepoint.action) {
default:
break;
@@ -2884,7 +2884,7 @@ IMPLEMENT_FUNCTION(59, Anna, function59)
if (getInventory()->hasItem(kItemKey) && params->param4 != kTimeInvalid && getState()->time > kTime2218500) {
if (getState()->time > kTime2248200) {
params->param4 = kTimeInvalid;
- setup_function61();
+ setup_goBaggageCompartment();
break;
}
@@ -2897,7 +2897,7 @@ IMPLEMENT_FUNCTION(59, Anna, function59)
if (params->param4 < getState()->time) {
params->param4 = kTimeInvalid;
- setup_function61();
+ setup_goBaggageCompartment();
break;
}
}
@@ -2996,7 +2996,7 @@ IMPLEMENT_FUNCTION(59, Anna, function59)
case kAction156622016:
if (params->param3) {
setCallback(8);
- setup_function60();
+ setup_giveMaxBack();
}
break;
@@ -3017,7 +3017,7 @@ IMPLEMENT_FUNCTION(59, Anna, function59)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(60, Anna, function60)
+IMPLEMENT_FUNCTION(60, Anna, giveMaxBack)
switch (savepoint.action) {
default:
break;
@@ -3063,7 +3063,7 @@ IMPLEMENT_FUNCTION(60, Anna, function60)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(61, Anna, function61)
+IMPLEMENT_FUNCTION(61, Anna, goBaggageCompartment)
switch (savepoint.action) {
default:
break;
@@ -3084,7 +3084,7 @@ IMPLEMENT_FUNCTION(61, Anna, function61)
getObjects()->update(kObject53, kEntityPlayer, kObjectLocation1, kCursorHandKnock, kCursorHand);
setCallback(2);
- setup_function45(false);
+ setup_exitCompartment(false);
break;
case 2:
@@ -3135,7 +3135,7 @@ IMPLEMENT_FUNCTION(62, Anna, function62)
if (getState()->time > kTime2259000 && !params->param2) {
params->param2 = 1;
getSavePoints()->push(kEntityAnna, kEntityVesna, kAction189299008);
- setup_function63();
+ setup_deadBaggageCompartment();
}
break;
@@ -3151,7 +3151,7 @@ IMPLEMENT_FUNCTION(62, Anna, function62)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(63, Anna, function63)
+IMPLEMENT_FUNCTION(63, Anna, deadBaggageCompartment)
switch (savepoint.action) {
default:
break;
@@ -3180,7 +3180,7 @@ IMPLEMENT_FUNCTION(63, Anna, function63)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(64, Anna, baggage)
+IMPLEMENT_FUNCTION(64, Anna, baggageFight)
switch (savepoint.action) {
default:
break;
@@ -3224,7 +3224,7 @@ IMPLEMENT_FUNCTION(64, Anna, baggage)
getProgress().field_54 = 0;
getState()->time = kTime2266200;
- setup_function65();
+ setup_prepareVienna();
break;
}
break;
@@ -3232,7 +3232,7 @@ IMPLEMENT_FUNCTION(64, Anna, baggage)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(65, Anna, function65)
+IMPLEMENT_FUNCTION(65, Anna, prepareVienna)
if (savepoint.action == kActionDefault) {
getData()->entityPosition = kPosition_4070;
getData()->location = kLocationInsideCompartment;
@@ -3243,7 +3243,7 @@ IMPLEMENT_FUNCTION(65, Anna, function65)
getObjects()->update(kObjectOutsideAnnaCompartment, kEntityPlayer, kObjectLocation1, kCursorKeepValue, kCursorKeepValue);
setCallback(1);
- setup_function15(kTimeEnd, "NONE");
+ setup_compartmentLogic(kTimeEnd, "NONE");
}
IMPLEMENT_FUNCTION_END
@@ -3254,7 +3254,7 @@ IMPLEMENT_FUNCTION(66, Anna, chapter4)
break;
case kActionNone:
- setup_chapter4Handler();
+ setup_reading();
break;
case kActionDefault:
@@ -3271,7 +3271,7 @@ IMPLEMENT_FUNCTION(66, Anna, chapter4)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(67, Anna, chapter4Handler)
+IMPLEMENT_FUNCTION(67, Anna, reading)
switch (savepoint.action) {
default:
break;
@@ -3344,7 +3344,7 @@ label_next:
getSound()->playSound(kEntityPlayer, "LIB015");
getScenes()->loadSceneFromPosition(kCarRedSleeping, 8);
- setup_function68();
+ setup_sulking();
break;
case 2:
@@ -3369,7 +3369,7 @@ label_next:
getObjects()->update(kObjectCompartmentF, kEntityPlayer, kObjectLocationNone, kCursorHandKnock, kCursorHand);
getData()->inventoryItem = kItemNone;
- setup_function69();
+ setup_goSalon4();
break;
case kAction219971920:
@@ -3379,7 +3379,7 @@ label_next:
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(68, Anna, function68)
+IMPLEMENT_FUNCTION(68, Anna, sulking)
switch (savepoint.action) {
default:
break;
@@ -3387,7 +3387,7 @@ IMPLEMENT_FUNCTION(68, Anna, function68)
case kActionNone:
if (!params->param1) {
setCallback(1);
- setup_function15(kTime2511900, "NONE");
+ setup_compartmentLogic(kTime2511900, "NONE");
}
break;
@@ -3402,7 +3402,7 @@ IMPLEMENT_FUNCTION(68, Anna, function68)
case kAction191001984:
getObjects()->update(kObjectCompartmentF, kEntityPlayer, kObjectLocationNone, kCursorHandKnock, kCursorHand);
- setup_function69();
+ setup_goSalon4();
break;
case kAction201431954:
@@ -3412,7 +3412,7 @@ IMPLEMENT_FUNCTION(68, Anna, function68)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(69, Anna, function69)
+IMPLEMENT_FUNCTION(69, Anna, goSalon4)
switch (savepoint.action) {
default:
break;
@@ -3426,7 +3426,7 @@ IMPLEMENT_FUNCTION(69, Anna, function69)
getData()->entityPosition = kPosition_9270;
getData()->location = kLocationOutsideCompartment;
- setup_function70();
+ setup_returnCompartment4();
break;
}
@@ -3448,7 +3448,7 @@ IMPLEMENT_FUNCTION(69, Anna, function69)
getData()->entityPosition = kPosition_8200;
getData()->location = kLocationOutsideCompartment;
- setup_function70();
+ setup_returnCompartment4();
}
break;
@@ -3484,7 +3484,7 @@ IMPLEMENT_FUNCTION(69, Anna, function69)
break;
case 5:
- setup_function70();
+ setup_returnCompartment4();
break;
}
break;
@@ -3506,14 +3506,14 @@ IMPLEMENT_FUNCTION(69, Anna, function69)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(70, Anna, function70)
+IMPLEMENT_FUNCTION(70, Anna, returnCompartment4)
switch (savepoint.action) {
default:
break;
case kActionDefault:
setCallback(1);
- setup_function72(kCarRedSleeping, kPosition_4070);
+ setup_doWalkCathFollowsAnna(kCarRedSleeping, kPosition_4070);
break;
case kActionCallback:
@@ -3523,13 +3523,13 @@ IMPLEMENT_FUNCTION(70, Anna, function70)
case 1:
setCallback(2);
- setup_function71();
+ setup_enterCompartmentCathFollowsAnna();
break;
case 2:
getData()->location = kLocationOutsideCompartment;
getEntities()->clearSequences(kEntityAnna);
- setup_function73();
+ setup_letDownHair();
break;
}
break;
@@ -3537,7 +3537,7 @@ IMPLEMENT_FUNCTION(70, Anna, function70)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(71, Anna, function71)
+IMPLEMENT_FUNCTION(71, Anna, enterCompartmentCathFollowsAnna)
switch (savepoint.action) {
default:
break;
@@ -3589,7 +3589,7 @@ IMPLEMENT_FUNCTION(71, Anna, function71)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION_II(72, Anna, function72, CarIndex, EntityPosition)
+IMPLEMENT_FUNCTION_II(72, Anna, doWalkCathFollowsAnna, CarIndex, EntityPosition)
switch (savepoint.action) {
default:
break;
@@ -3631,7 +3631,7 @@ IMPLEMENT_FUNCTION_II(72, Anna, function72, CarIndex, EntityPosition)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(73, Anna, function73)
+IMPLEMENT_FUNCTION(73, Anna, letDownHair)
switch (savepoint.action) {
default:
break;
@@ -3712,7 +3712,7 @@ IMPLEMENT_FUNCTION(74, Anna, chapter5)
break;
case kActionNone:
- setup_chapter5Handler();
+ setup_tiedUp();
break;
case kActionDefault:
@@ -3731,7 +3731,7 @@ IMPLEMENT_FUNCTION(74, Anna, chapter5)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(75, Anna, chapter5Handler)
+IMPLEMENT_FUNCTION(75, Anna, tiedUp)
switch (savepoint.action) {
default:
break;
@@ -3758,11 +3758,11 @@ IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
IMPLEMENT_FUNCTION(76, Anna, function76)
if (savepoint.action == kAction158480160)
- setup_function77();
+ setup_readyToScore();
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(77, Anna, function77)
+IMPLEMENT_FUNCTION(77, Anna, readyToScore)
switch (savepoint.action) {
default:
break;
@@ -3818,7 +3818,7 @@ IMPLEMENT_FUNCTION(77, Anna, function77)
break;
case 3:
- setup_function78();
+ setup_kidnapped();
break;
}
break;
@@ -3826,14 +3826,14 @@ IMPLEMENT_FUNCTION(77, Anna, function77)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(78, Anna, function78)
+IMPLEMENT_FUNCTION(78, Anna, kidnapped)
switch (savepoint.action) {
default:
break;
case kActionDrawScene:
if ((getEntities()->isInRestaurant(kEntityPlayer) || getEntities()->isInSalon(kEntityPlayer)) && getInventory()->hasItem(kItemFirebird)) {
- setup_function80();
+ setup_finalSequence();
break;
}
@@ -3857,7 +3857,7 @@ IMPLEMENT_FUNCTION(78, Anna, function78)
getAction()->playAnimation(kEventKronosHostageAnna);
getScenes()->loadSceneFromPosition(kCarRestaurant, 61);
getSound()->playSound(kEntityAnna, "Mus024", kFlagDefault);
- setup_function79();
+ setup_waiting();
break;
}
break;
@@ -3865,7 +3865,7 @@ IMPLEMENT_FUNCTION(78, Anna, function78)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(79, Anna, function79)
+IMPLEMENT_FUNCTION(79, Anna, waiting)
switch (savepoint.action) {
default:
break;
@@ -3878,7 +3878,7 @@ IMPLEMENT_FUNCTION(79, Anna, function79)
case kActionDrawScene:
if (getEntities()->isInRestaurant(kEntityPlayer) && getInventory()->hasItem(kItemFirebird)) {
- setup_function80();
+ setup_finalSequence();
break;
}
@@ -3918,7 +3918,7 @@ IMPLEMENT_FUNCTION(79, Anna, function79)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(80, Anna, function80)
+IMPLEMENT_FUNCTION(80, Anna, finalSequence)
switch (savepoint.action) {
default:
break;
@@ -3973,7 +3973,7 @@ IMPLEMENT_FUNCTION(80, Anna, function80)
getAction()->playAnimation(kEventKronosOpenFirebird);
getScenes()->loadSceneFromPosition(kCarRestaurant, 3);
- setup_finalSequence();
+ setup_openFirebird();
break;
}
break;
@@ -3988,7 +3988,7 @@ IMPLEMENT_FUNCTION(80, Anna, function80)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(81, Anna, finalSequence)
+IMPLEMENT_FUNCTION(81, Anna, openFirebird)
switch (savepoint.action) {
default:
break;
diff --git a/engines/lastexpress/entities/anna.h b/engines/lastexpress/entities/anna.h
index 205ff9d42c..de79ccb826 100644
--- a/engines/lastexpress/entities/anna.h
+++ b/engines/lastexpress/entities/anna.h
@@ -113,7 +113,7 @@ public:
*/
DECLARE_FUNCTION_1(updateFromTime, uint32 time)
- DECLARE_FUNCTION(function12)
+ DECLARE_FUNCTION(practiceMusic)
/**
* Draws the entity along with another one
@@ -131,43 +131,43 @@ public:
*/
DECLARE_FUNCTION_1(updateFromTicks, uint32 ticks)
- DECLARE_FUNCTION_2(function15, TimeValue timeValue, const char *sequence)
+ DECLARE_FUNCTION_2(compartmentLogic, TimeValue timeValue, const char *sequence)
/**
* Setup Chapter 1
*/
DECLARE_FUNCTION(chapter1)
- DECLARE_FUNCTION_2(function17, uint32, uint32)
+ DECLARE_FUNCTION_2(doWalkP1, uint32, uint32)
- DECLARE_FUNCTION_1(function18, TimeValue timeValue)
+ DECLARE_FUNCTION_1(diningLogic, TimeValue timeValue)
/**
* Handle Chapter 1 events
*/
- DECLARE_FUNCTION(chapter1Handler)
- DECLARE_FUNCTION(function20)
- DECLARE_FUNCTION(function21)
+ DECLARE_FUNCTION(fleeTyler)
+ DECLARE_FUNCTION(waitDinner)
+ DECLARE_FUNCTION(goDinner)
DECLARE_FUNCTION(function22)
- DECLARE_FUNCTION(function23)
- DECLARE_FUNCTION(function24)
- DECLARE_FUNCTION(function25)
- DECLARE_FUNCTION(function26)
- DECLARE_FUNCTION(function27)
- DECLARE_FUNCTION(function28)
- DECLARE_FUNCTION(function29)
+ DECLARE_FUNCTION(waitingDinner)
+ DECLARE_FUNCTION(waitingDinner2)
+ DECLARE_FUNCTION(eatingDinner)
+ DECLARE_FUNCTION(leaveDinner)
+ DECLARE_FUNCTION(freshenUp)
+ DECLARE_FUNCTION(goSalon)
+ DECLARE_FUNCTION(waitAugust)
DECLARE_FUNCTION(function30)
- DECLARE_FUNCTION(function31)
- DECLARE_FUNCTION(function32)
- DECLARE_FUNCTION(function33)
- DECLARE_FUNCTION(function34)
- DECLARE_FUNCTION(function35)
- DECLARE_FUNCTION(function36)
+ DECLARE_FUNCTION(leaveAugust)
+ DECLARE_FUNCTION(returnCompartment)
+ DECLARE_FUNCTION(readyForBed)
+ DECLARE_FUNCTION(asleep)
+ DECLARE_FUNCTION(wakeNight)
+ DECLARE_FUNCTION(goVassili)
DECLARE_FUNCTION(function37)
- DECLARE_FUNCTION(function38)
- DECLARE_FUNCTION_2(function39, CarIndex car, EntityPosition entityPosition)
- DECLARE_FUNCTION(function40)
- DECLARE_FUNCTION(function41)
+ DECLARE_FUNCTION(speakTatiana)
+ DECLARE_FUNCTION_2(doWalk1019, CarIndex car, EntityPosition entityPosition)
+ DECLARE_FUNCTION(leaveTatiana)
+ DECLARE_FUNCTION(goBackToSleep)
/**
* Setup Chapter 2
@@ -177,37 +177,37 @@ public:
/**
* Handle Chapter 2 events
*/
- DECLARE_FUNCTION(chapter2Handler)
+ DECLARE_FUNCTION(inPart2)
/**
* Setup Chapter 3
*/
DECLARE_FUNCTION(chapter3)
- DECLARE_FUNCTION_1(function45, bool useAction1)
/**
* Handle Chapter 3 events
*/
- DECLARE_FUNCTION(chapter3Handler)
- DECLARE_FUNCTION(function47)
- DECLARE_FUNCTION(function48)
+ DECLARE_FUNCTION_1(exitCompartment, bool useAction1)
+ DECLARE_FUNCTION(practicing)
+ DECLARE_FUNCTION(goLunch)
+ DECLARE_FUNCTION(lunch)
DECLARE_FUNCTION(leaveTableWithAugust)
- DECLARE_FUNCTION(function50)
- DECLARE_FUNCTION(function51)
- DECLARE_FUNCTION(function52)
- DECLARE_FUNCTION(function53)
- DECLARE_FUNCTION(function54)
- DECLARE_FUNCTION(function55)
- DECLARE_FUNCTION(function56)
- DECLARE_FUNCTION(function57)
- DECLARE_FUNCTION(function58)
- DECLARE_FUNCTION(function59)
- DECLARE_FUNCTION(function60)
- DECLARE_FUNCTION(function61)
+ DECLARE_FUNCTION(leaveLunch)
+ DECLARE_FUNCTION(afterLunch)
+ DECLARE_FUNCTION(returnCompartment3)
+ DECLARE_FUNCTION(dressing)
+ DECLARE_FUNCTION(giveMaxToConductor2)
+ DECLARE_FUNCTION(goConcert)
+ DECLARE_FUNCTION(concert)
+ DECLARE_FUNCTION(leaveConcert)
+ DECLARE_FUNCTION(leaveConcertCathInCompartment)
+ DECLARE_FUNCTION(afterConcert)
+ DECLARE_FUNCTION(giveMaxBack)
+ DECLARE_FUNCTION(goBaggageCompartment)
DECLARE_FUNCTION(function62)
- DECLARE_FUNCTION(function63)
- DECLARE_FUNCTION(baggage)
- DECLARE_FUNCTION(function65)
+ DECLARE_FUNCTION(deadBaggageCompartment)
+ DECLARE_FUNCTION(baggageFight)
+ DECLARE_FUNCTION(prepareVienna)
/**
* Setup Chapter 4
@@ -217,14 +217,13 @@ public:
/**
* Handle Chapter 4 events
*/
- DECLARE_FUNCTION(chapter4Handler)
-
- DECLARE_FUNCTION(function68)
- DECLARE_FUNCTION(function69)
- DECLARE_FUNCTION(function70)
- DECLARE_FUNCTION(function71)
- DECLARE_FUNCTION_2(function72, CarIndex car, EntityPosition entityPosition)
- DECLARE_FUNCTION(function73)
+ DECLARE_FUNCTION(reading)
+ DECLARE_FUNCTION(sulking)
+ DECLARE_FUNCTION(goSalon4)
+ DECLARE_FUNCTION(returnCompartment4)
+ DECLARE_FUNCTION(enterCompartmentCathFollowsAnna)
+ DECLARE_FUNCTION_2(doWalkCathFollowsAnna, CarIndex car, EntityPosition entityPosition)
+ DECLARE_FUNCTION(letDownHair)
/**
* Setup Chapter 5
@@ -234,13 +233,13 @@ public:
/**
* Handle Chapter 5 events
*/
- DECLARE_FUNCTION(chapter5Handler)
+ DECLARE_FUNCTION(tiedUp)
DECLARE_FUNCTION(function76)
- DECLARE_FUNCTION(function77)
- DECLARE_FUNCTION(function78)
- DECLARE_FUNCTION(function79)
- DECLARE_FUNCTION(function80)
+ DECLARE_FUNCTION(readyToScore)
+ DECLARE_FUNCTION(kidnapped)
+ DECLARE_FUNCTION(waiting)
DECLARE_FUNCTION(finalSequence)
+ DECLARE_FUNCTION(openFirebird)
};
} // End of namespace LastExpress
diff --git a/engines/lastexpress/entities/august.cpp b/engines/lastexpress/entities/august.cpp
index b0bc0732d4..11f72ecfe8 100644
--- a/engines/lastexpress/entities/august.cpp
+++ b/engines/lastexpress/entities/august.cpp
@@ -640,7 +640,7 @@ label_continue:
break;
case 6:
- getAction()->playAnimation(getObjects()->get(kObjectCompartment3).location2 == kObjectLocation1 ? kEventMeetAugustHisCompartmentBed : kEventMeetAugustHisCompartment);
+ getAction()->playAnimation(getObjects()->get(kObjectCompartment3).model == kObjectModel1 ? kEventMeetAugustHisCompartmentBed : kEventMeetAugustHisCompartment);
getProgress().eventMetAugust = true;
getObjects()->update(kObjectCompartment3, kEntityAugust, kObjectLocation1, kCursorNormal, kCursorNormal);
@@ -840,11 +840,11 @@ label_callback_9:
if (CURRENT_PARAM(1, 1) >= getState()->timeTicks)
break;
- if (getObjects()->get(kObjectCompartment1).location == kObjectLocation1) {
+ if (getObjects()->get(kObjectCompartment1).status == kObjectLocation1) {
if (!Entity::updateParameter(CURRENT_PARAM(1, 2), getState()->timeTicks, 75))
break;
- getObjects()->update(kObjectCompartment1, kEntityAugust, getObjects()->get(kObjectCompartment1).location, kCursorNormal, kCursorNormal);
+ getObjects()->update(kObjectCompartment1, kEntityAugust, getObjects()->get(kObjectCompartment1).status, kCursorNormal, kCursorNormal);
params->param6++;
@@ -866,7 +866,7 @@ label_callback_9:
params->param8++;
if (params->param8 >= 3) {
- getObjects()->update(kObjectCompartment1, kEntityPlayer, getObjects()->get(kObjectCompartment1).location, kCursorHandKnock, kCursorHand);
+ getObjects()->update(kObjectCompartment1, kEntityPlayer, getObjects()->get(kObjectCompartment1).status, kCursorHandKnock, kCursorHand);
callbackAction();
break;
}
@@ -874,12 +874,12 @@ label_callback_9:
params->param6 = 0;
}
- getObjects()->update(kObjectCompartment1, kEntityAugust, getObjects()->get(kObjectCompartment1).location, params->param4 ? kCursorNormal : kCursorTalk, kCursorHand);
+ getObjects()->update(kObjectCompartment1, kEntityAugust, getObjects()->get(kObjectCompartment1).status, params->param4 ? kCursorNormal : kCursorTalk, kCursorHand);
CURRENT_PARAM(1, 2) = 0;
} else {
if (getProgress().eventCorpseMovedFromFloor && getProgress().jacket != kJacketBlood) {
- params->param7 = (getObjects()->get(kObjectCompartment1).location2 == kObjectLocation1) ? 8 : 7;
+ params->param7 = (getObjects()->get(kObjectCompartment1).model == kObjectModel1) ? 8 : 7;
getObjects()->update(kObjectOutsideTylerCompartment, kEntityPlayer, kObjectLocationNone, kCursorKeepValue, kCursorKeepValue);
setCallback(4);
@@ -900,7 +900,7 @@ label_callback_9:
setCallback(15);
setup_playSound("LIB012");
} else if (!params->param4) {
- getObjects()->update(kObjectCompartment1, kEntityAugust, getObjects()->get(kObjectCompartment1).location, kCursorNormal, kCursorNormal);
+ getObjects()->update(kObjectCompartment1, kEntityAugust, getObjects()->get(kObjectCompartment1).status, kCursorNormal, kCursorNormal);
setCallback(17);
setup_playSound("AUG1002A");
@@ -912,9 +912,9 @@ label_callback_9:
if (params->param3) {
getData()->location = kLocationInsideCompartment;
- params->param7 = (getObjects()->get(kObjectCompartment1).location2 == kObjectLocation1) ? kEventMeetAugustHisCompartmentBed : kEventMeetAugustHisCompartment;
+ params->param7 = (getObjects()->get(kObjectCompartment1).model == kObjectModel1) ? kEventMeetAugustHisCompartmentBed : kEventMeetAugustHisCompartment;
} else {
- params->param7 = (getObjects()->get(kObjectCompartment1).location2 == kObjectLocation1) ? kEventMeetAugustTylerCompartmentBed : kEventMeetAugustTylerCompartment;
+ params->param7 = (getObjects()->get(kObjectCompartment1).model == kObjectModel1) ? kEventMeetAugustTylerCompartmentBed : kEventMeetAugustTylerCompartment;
}
setCallback(14);
@@ -931,14 +931,14 @@ label_callback_9:
if (getEntities()->isInsideCompartment(kEntityPlayer, kCarGreenSleeping, kPosition_8200)
|| getEntities()->isInsideCompartment(kEntityPlayer, kCarGreenSleeping, kPosition_7850)
|| getEntities()->isOutsideAlexeiWindow()) {
- getObjects()->update(kObjectCompartment1, kEntityAugust, getObjects()->get(kObjectCompartment1).location, kCursorNormal, kCursorNormal);
+ getObjects()->update(kObjectCompartment1, kEntityAugust, getObjects()->get(kObjectCompartment1).status, kCursorNormal, kCursorNormal);
if (getEntities()->isOutsideAlexeiWindow())
getScenes()->loadSceneFromPosition(kCarGreenSleeping, 49);
getSound()->playSound(kEntityPlayer, "LIB012");
- getObjects()->update(kObjectCompartment1, kEntityAugust, getObjects()->get(kObjectCompartment1).location, kCursorTalk, kCursorHand);
+ getObjects()->update(kObjectCompartment1, kEntityAugust, getObjects()->get(kObjectCompartment1).status, kCursorTalk, kCursorHand);
params->param2 = 1;
} else {
@@ -996,7 +996,7 @@ label_callback_9:
case 6:
case 7:
- getObjects()->update(kObjectCompartment1, kEntityAugust, getObjects()->get(kObjectCompartment1).location, params->param4 ? kCursorNormal : kCursorTalk, kCursorHand);
+ getObjects()->update(kObjectCompartment1, kEntityAugust, getObjects()->get(kObjectCompartment1).status, params->param4 ? kCursorNormal : kCursorTalk, kCursorHand);
ENTITY_PARAM(1, 2) = 0;
break;
@@ -1032,7 +1032,7 @@ label_callback_9:
break;
case 13:
- getSound()->playSound(kEntityPlayer, getObjects()->get(kObjectCompartment1).location == kObjectLocation1 ? "LIB032" : "LIB014");
+ getSound()->playSound(kEntityPlayer, getObjects()->get(kObjectCompartment1).status == kObjectLocation1 ? "LIB032" : "LIB014");
getAction()->playAnimation(kEventAugustFindCorpse);
if (getEvent(kEventDinerAugustOriginalJacket))
@@ -1045,7 +1045,7 @@ label_callback_9:
case 14:
if (!params->param2)
- getSound()->playSound(kEntityPlayer, getObjects()->get(kObjectCompartment1).location == kObjectLocation1 ? "LIB032" : "LIB014");
+ getSound()->playSound(kEntityPlayer, getObjects()->get(kObjectCompartment1).status == kObjectLocation1 ? "LIB032" : "LIB014");
getObjects()->update(kObjectCompartment1, kEntityPlayer, kObjectLocationNone, kCursorHandKnock, kCursorHand);
getObjects()->update(kObjectOutsideTylerCompartment, kEntityPlayer, kObjectLocationNone, kCursorKeepValue, kCursorKeepValue);
@@ -1070,7 +1070,7 @@ label_callback_9:
case 17:
params->param4 = 1;
- getObjects()->update(kObjectCompartment1, kEntityAugust, getObjects()->get(kObjectCompartment1).location, kCursorNormal, kCursorHand);
+ getObjects()->update(kObjectCompartment1, kEntityAugust, getObjects()->get(kObjectCompartment1).status, kCursorNormal, kCursorHand);
break;
}
break;
@@ -3249,7 +3249,7 @@ IMPLEMENT_FUNCTION(63, August, function63)
case kAction1:
if (getEntities()->isInSalon(kEntityAlexei)) {
- RESET_ENTITY_STATE(kEntityAlexei, Alexei, setup_function44);
+ RESET_ENTITY_STATE(kEntityAlexei, Alexei, setup_goToPlatform);
}
getData()->inventoryItem = kItemNone;
diff --git a/engines/lastexpress/entities/chapters.cpp b/engines/lastexpress/entities/chapters.cpp
index d373432710..6c8f7ca41c 100644
--- a/engines/lastexpress/entities/chapters.cpp
+++ b/engines/lastexpress/entities/chapters.cpp
@@ -221,7 +221,7 @@ IMPLEMENT_FUNCTION(6, Chapters, chapter1End)
RESET_ENTITY_STATE(kEntityKronos, Kronos, setup_function10);
RESET_ENTITY_STATE(kEntityKahina, Kahina, setup_function13);
- RESET_ENTITY_STATE(kEntityAnna, Anna, setup_function34);
+ RESET_ENTITY_STATE(kEntityAnna, Anna, setup_asleep);
RESET_ENTITY_STATE(kEntityAugust, August, setup_function34);
RESET_ENTITY_STATE(kEntityTatiana, Tatiana, setup_function24);
RESET_ENTITY_STATE(kEntityVassili, Vassili, setup_function7);
@@ -349,19 +349,19 @@ IMPLEMENT_FUNCTION(7, Chapters, chapter1Init)
getObjects()->update(kObjectOutsideTylerCompartment, kEntityPlayer, kObjectLocationNone, kCursorKeepValue, kCursorKeepValue);
for (uint i = kObjectCompartment1; i <= kObjectCompartment8; i++) {
- getObjects()->updateLocation2((ObjectIndex)i, kObjectLocation2);
+ getObjects()->updateModel((ObjectIndex) i, kObjectModel2);
}
for (uint i = kObjectCompartmentA; i <= kObjectCompartmentH; i++) {
- getObjects()->updateLocation2((ObjectIndex)i, kObjectLocation2);
+ getObjects()->updateModel((ObjectIndex) i, kObjectModel2);
}
params->param1 = 40;
- getObjects()->updateLocation2(kObject25, kObjectLocation1);
- getObjects()->updateLocation2(kObjectTrainTimeTable, kObjectLocation1);
- getObjects()->updateLocation2(kObject98, kObjectLocation1);
- getObjects()->updateLocation2(kObjectRestaurantCar, kObjectLocation1);
+ getObjects()->updateModel(kObject25, kObjectModel1);
+ getObjects()->updateModel(kObjectTrainTimeTable, kObjectModel1);
+ getObjects()->updateModel(kObject98, kObjectModel1);
+ getObjects()->updateModel(kObjectRestaurantCar, kObjectModel1);
getObjects()->update(kObject25, kEntityPlayer, kObjectLocationNone, kCursorNormal, kCursorForward);
getObjects()->update(kObjectTrainTimeTable, kEntityPlayer, kObjectLocationNone, kCursorNormal, kCursorForward);
@@ -792,11 +792,11 @@ IMPLEMENT_FUNCTION(11, Chapters, chapter2Init)
getInventory()->setLocationAndProcess(kItem3, kObjectLocation1);
for (uint i = 1; i < 9; i++) {
- getObjects()->updateLocation2((ObjectIndex)i, kObjectLocation2);
+ getObjects()->updateModel((ObjectIndex) i, kObjectModel2);
}
for (uint i = 33; i < 40; i++) {
- getObjects()->updateLocation2((ObjectIndex)i, kObjectLocation2);
+ getObjects()->updateModel((ObjectIndex) i, kObjectModel2);
}
params->param1 = 40;
@@ -893,7 +893,7 @@ IMPLEMENT_FUNCTION(14, Chapters, chapter3Init)
getObjects()->update(kObjectHandleOutsideRight, kEntityPlayer, kObjectLocation1, kCursorNormal, kCursorHand);
getInventory()->setLocationAndProcess(kItemBriefcase, kObjectLocation1);
getInventory()->setLocationAndProcess(kItem3, kObjectLocation1);
- getObjects()->updateLocation2(kObjectCompartment1, kObjectLocation2);
+ getObjects()->updateModel(kObjectCompartment1, kObjectModel2);
getObjects()->update(kObject107, kEntityPlayer, kObjectLocation3, kCursorKeepValue, kCursorKeepValue);
if (ENTITY_PARAM(0, 2) || ENTITY_PARAM(0, 3)) {
@@ -1204,7 +1204,7 @@ IMPLEMENT_FUNCTION(18, Chapters, chapter4Init)
if (getInventory()->get(kItemBeetle)->location == kObjectLocation3)
getScenes()->loadSceneFromItemPosition(kItemBeetle);
- getObjects()->updateLocation2(kObject25, kObjectLocation2);
+ getObjects()->updateModel(kObject25, kObjectModel2);
getObjects()->update(kObject107, kEntityPlayer, kObjectLocation3, kCursorKeepValue, kCursorKeepValue);
if (ENTITY_PARAM(0, 2) || ENTITY_PARAM(0, 3)) {
@@ -1265,7 +1265,7 @@ label_exitPozsony:
break;
label_enterGalanta:
- if (getObjects()->get(kObjectCompartment1).location2 == kObjectLocation1) {
+ if (getObjects()->get(kObjectCompartment1).model == kObjectModel1) {
if (getState()->time > kTime2403000 && !CURRENT_PARAM(1, 2)) {
CURRENT_PARAM(1, 2) = 1;
getProgress().field_18 = 2;
@@ -1440,7 +1440,7 @@ label_callback_4:
case 10:
getAction()->playAnimation(kEventDefuseBomb);
- RESET_ENTITY_STATE(kEntityAbbot, Abbot, setup_function48);
+ RESET_ENTITY_STATE(kEntityAbbot, Abbot, setup_afterBomb);
getSavePoints()->push(kEntityChapters, kEntityAnna, kAction191001984);
getSavePoints()->push(kEntityChapters, kEntityCoudert, kAction191001984);
getScenes()->loadSceneFromItemPosition(kItem2);
@@ -1514,7 +1514,7 @@ label_callback_4:
if (getInventory()->hasItem(kItemBomb)) {
RESET_ENTITY_STATE(kEntityAlexei, Alexei, setup_function47);
- RESET_ENTITY_STATE(kEntityAnna, Anna, setup_function68);
+ RESET_ENTITY_STATE(kEntityAnna, Anna, setup_sulking);
RESET_ENTITY_STATE(kEntityAugust, August, setup_function65);
RESET_ENTITY_STATE(kEntityMertens, Mertens, setup_function48);
RESET_ENTITY_STATE(kEntityCoudert, Coudert, setup_function53);
@@ -1675,8 +1675,8 @@ IMPLEMENT_FUNCTION(21, Chapters, chapter5Init)
getObjects()->update(kObject94, kEntityPlayer, kObjectLocationNone, kCursorKeepValue, kCursorKeepValue);
getObjects()->update(kObject101, kEntityPlayer, kObjectLocationNone, kCursorHandKnock, kCursorHand);
- getObjects()->updateLocation2(kObject98, kObjectLocation2);
- getObjects()->updateLocation2(kObjectRestaurantCar, kObjectLocation2);
+ getObjects()->updateModel(kObject98, kObjectModel2);
+ getObjects()->updateModel(kObjectRestaurantCar, kObjectModel2);
if (ENTITY_PARAM(0, 2) || ENTITY_PARAM(0, 3)) {
getSoundQueue()->removeFromQueue(kEntityChapters);
diff --git a/engines/lastexpress/entities/coudert.cpp b/engines/lastexpress/entities/coudert.cpp
index b604277903..ebe2a930a5 100644
--- a/engines/lastexpress/entities/coudert.cpp
+++ b/engines/lastexpress/entities/coudert.cpp
@@ -915,7 +915,7 @@ IMPLEMENT_FUNCTION_II(20, Coudert, function20, ObjectIndex, ObjectIndex)
if (!Entity::updateParameter(CURRENT_PARAM(1, 4), getState()->time, 900))
break;
- getObjects()->updateLocation2((ObjectIndex)params->param1, kObjectLocation1);
+ getObjects()->updateModel((ObjectIndex) params->param1, kObjectModel1);
if (params->param4 != kObjectLocation2)
getObjects()->update((ObjectIndex)params->param1, (EntityIndex)params->param3, (ObjectLocation)params->param4, (CursorStyle)params->param5, (CursorStyle)params->param6);
@@ -938,15 +938,15 @@ IMPLEMENT_FUNCTION_II(20, Coudert, function20, ObjectIndex, ObjectIndex)
case kActionDefault:
params->param3 = getObjects()->get((ObjectIndex)params->param1).entity;
- params->param4 = getObjects()->get((ObjectIndex)params->param1).location;
- params->param5 = getObjects()->get((ObjectIndex)params->param1).cursor;
- params->param6 = getObjects()->get((ObjectIndex)params->param1).cursor2;
+ params->param4 = getObjects()->get((ObjectIndex)params->param1).status;
+ params->param5 = getObjects()->get((ObjectIndex)params->param1).windowCursor;
+ params->param6 = getObjects()->get((ObjectIndex)params->param1).handleCursor;
if (params->param2) {
params->param7 = getObjects()->get((ObjectIndex)params->param2).entity;
- params->param8 = getObjects()->get((ObjectIndex)params->param2).location;
- CURRENT_PARAM(1, 1) = getObjects()->get((ObjectIndex)params->param2).cursor;
- CURRENT_PARAM(1, 2) = getObjects()->get((ObjectIndex)params->param2).cursor2;
+ params->param8 = getObjects()->get((ObjectIndex)params->param2).status;
+ CURRENT_PARAM(1, 1) = getObjects()->get((ObjectIndex)params->param2).windowCursor;
+ CURRENT_PARAM(1, 2) = getObjects()->get((ObjectIndex)params->param2).handleCursor;
getObjects()->update((ObjectIndex)params->param2, kEntityCoudert, kObjectLocation1, kCursorHandKnock, kCursorHand);
}
@@ -1580,7 +1580,7 @@ IMPLEMENT_FUNCTION_I(30, Coudert, function30, ObjectIndex)
case 2:
if (getEntities()->checkFields19(kEntityPlayer, kCarRedSleeping, (EntityPosition)parameters->param3)
|| ((parameters->param1 == kObjectCompartmentE || parameters->param1 == kObjectCompartmentF) && getEntities()->isOutsideAnnaWindow())) {
- getObjects()->update((ObjectIndex)parameters->param1, kEntityPlayer, getObjects()->get((ObjectIndex)parameters->param1).location, kCursorNormal, kCursorNormal);
+ getObjects()->update((ObjectIndex)parameters->param1, kEntityPlayer, getObjects()->get((ObjectIndex)parameters->param1).status, kCursorNormal, kCursorNormal);
parameters->param5 = true;
}
@@ -1598,7 +1598,7 @@ IMPLEMENT_FUNCTION_I(30, Coudert, function30, ObjectIndex)
case 4:
if (parameters->param5)
- getObjects()->update((ObjectIndex)parameters->param1, kEntityPlayer, getObjects()->get((ObjectIndex)parameters->param1).location, kCursorHandKnock, kCursorHand);
+ getObjects()->update((ObjectIndex)parameters->param1, kEntityPlayer, getObjects()->get((ObjectIndex)parameters->param1).status, kCursorHandKnock, kCursorHand);
getEntities()->exitCompartment(kEntityCoudert, (ObjectIndex)parameters->param1, true);
@@ -1991,7 +1991,7 @@ IMPLEMENT_FUNCTION(36, Coudert, chapter1)
getData()->location = kLocationOutsideCompartment;
getData()->car = kCarRedSleeping;
- getObjects()->updateLocation2(kObject111, kObjectLocation1);
+ getObjects()->updateModel(kObject111, kObjectModel1);
break;
case kActionCallback:
@@ -2294,9 +2294,9 @@ label_callback_10:
if (!ENTITY_PARAM(0, 2))
break;
- timeCheckObject(kTime1107000, params->param4, kObject111, kObjectLocation2);
- timeCheckObject(kTime1161000, params->param5, kObject111, kObjectLocation3);
- timeCheckObject(kTime1206000, params->param6, kObject111, kObjectLocation4);
+ timeCheckObject(kTime1107000, params->param4, kObject111, kObjectModel2);
+ timeCheckObject(kTime1161000, params->param5, kObject111, kObjectModel3);
+ timeCheckObject(kTime1206000, params->param6, kObject111, kObjectModel4);
break;
case kAction1:
@@ -2577,7 +2577,7 @@ IMPLEMENT_FUNCTION(42, Coudert, chapter2)
ENTITY_PARAM(2, 4) = 0;
- getObjects()->updateLocation2(kObject111, kObjectLocation5);
+ getObjects()->updateModel(kObject111, kObjectModel5);
break;
case kActionCallback:
@@ -2716,7 +2716,7 @@ IMPLEMENT_FUNCTION(44, Coudert, chapter3)
ENTITY_PARAM(2, 4) = 0;
ENTITY_PARAM(2, 5) = 0;
- getObjects()->updateLocation2(kObject111, kObjectLocation6);
+ getObjects()->updateModel(kObject111, kObjectModel6);
break;
case kActionCallback:
@@ -2850,9 +2850,9 @@ label_callback_18:
label_callback_19:
if (ENTITY_PARAM(0, 2)) {
- timeCheckObject(kTime2025000, params->param7, kObject111, kObjectLocation7);
- timeCheckObject(kTime2133000, params->param8, kObject111, kObjectLocation8);
- timeCheckObject(kTime2173500, CURRENT_PARAM(1, 1), kObject111, kObjectLocation9);
+ timeCheckObject(kTime2025000, params->param7, kObject111, kObjectModel7);
+ timeCheckObject(kTime2133000, params->param8, kObject111, kObjectModel8);
+ timeCheckObject(kTime2173500, CURRENT_PARAM(1, 1), kObject111, kObjectModel9);
}
break;
@@ -3498,7 +3498,7 @@ IMPLEMENT_FUNCTION(52, Coudert, chapter4)
ENTITY_PARAM(2, 3) = 0;
ENTITY_PARAM(2, 4) = 0;
- getObjects()->updateLocation2(kObject111, kObjectLocation10);
+ getObjects()->updateModel(kObject111, kObjectModel10);
break;
case kActionCallback:
@@ -3523,14 +3523,14 @@ IMPLEMENT_FUNCTION(53, Coudert, function53)
params->param1 = 1;
- getObjects()->updateLocation2(kObjectCompartmentA, kObjectLocation1);
- getObjects()->updateLocation2(kObjectCompartmentB, kObjectLocation1);
- getObjects()->updateLocation2(kObjectCompartmentC, kObjectLocation1);
- getObjects()->updateLocation2(kObjectCompartmentD, kObjectLocation1);
- getObjects()->updateLocation2(kObjectCompartmentE, kObjectLocation1);
- getObjects()->updateLocation2(kObjectCompartmentF, kObjectLocation1);
- getObjects()->updateLocation2(kObjectCompartmentG, kObjectLocation1);
- getObjects()->updateLocation2(kObjectCompartmentH, kObjectLocation1);
+ getObjects()->updateModel(kObjectCompartmentA, kObjectModel1);
+ getObjects()->updateModel(kObjectCompartmentB, kObjectModel1);
+ getObjects()->updateModel(kObjectCompartmentC, kObjectModel1);
+ getObjects()->updateModel(kObjectCompartmentD, kObjectModel1);
+ getObjects()->updateModel(kObjectCompartmentE, kObjectModel1);
+ getObjects()->updateModel(kObjectCompartmentF, kObjectModel1);
+ getObjects()->updateModel(kObjectCompartmentG, kObjectModel1);
+ getObjects()->updateModel(kObjectCompartmentH, kObjectModel1);
ENTITY_PARAM(2, 3) = 0;
diff --git a/engines/lastexpress/entities/entity.cpp b/engines/lastexpress/entities/entity.cpp
index dad5e67392..b2fc30829f 100644
--- a/engines/lastexpress/entities/entity.cpp
+++ b/engines/lastexpress/entities/entity.cpp
@@ -943,10 +943,10 @@ void Entity::timeCheckSavepoint(TimeValue timeValue, uint &parameter, EntityInde
}
}
-void Entity::timeCheckObject(TimeValue timeValue, uint &parameter, ObjectIndex object, ObjectLocation location) const {
+void Entity::timeCheckObject(TimeValue timeValue, uint &parameter, ObjectIndex object, ObjectModel model) const {
if (getState()->time > timeValue && !parameter) {
parameter = 1;
- getObjects()->updateLocation2(object, location);
+ getObjects()->updateModel(object, model);
}
}
diff --git a/engines/lastexpress/entities/entity.h b/engines/lastexpress/entities/entity.h
index f3b57e7464..634c854d05 100644
--- a/engines/lastexpress/entities/entity.h
+++ b/engines/lastexpress/entities/entity.h
@@ -1095,7 +1095,7 @@ protected:
bool timeCheckCallbackInventory(TimeValue timeValue, uint &parameter, byte callback, Common::Functor0<void> *function);
bool timeCheckCar(TimeValue timeValue, uint &parameter, byte callback, Common::Functor0<void> *function);
void timeCheckSavepoint(TimeValue timeValue, uint &parameter, EntityIndex entity1, EntityIndex entity2, ActionIndex action) const;
- void timeCheckObject(TimeValue timeValue, uint &parameter, ObjectIndex index, ObjectLocation location) const;
+ void timeCheckObject(TimeValue timeValue, uint &parameter, ObjectIndex index, ObjectModel model) const;
bool timeCheckCallbackAction(TimeValue timeValue, uint &parameter);
bool timeCheckPlaySoundUpdatePosition(TimeValue timeValue, uint &parameter, byte callback, const char* sound, EntityPosition position);
diff --git a/engines/lastexpress/entities/francois.cpp b/engines/lastexpress/entities/francois.cpp
index d2bbc9854c..12ce16a32b 100644
--- a/engines/lastexpress/entities/francois.cpp
+++ b/engines/lastexpress/entities/francois.cpp
@@ -44,22 +44,22 @@ Francois::Francois(LastExpressEngine *engine) : Entity(engine, kEntityFrancois)
ADD_CALLBACK_FUNCTION(Francois, enterExitCompartment2);
ADD_CALLBACK_FUNCTION(Francois, playSound);
ADD_CALLBACK_FUNCTION(Francois, savegame);
- ADD_CALLBACK_FUNCTION(Francois, updateEntity);
- ADD_CALLBACK_FUNCTION(Francois, function9);
- ADD_CALLBACK_FUNCTION(Francois, function10);
- ADD_CALLBACK_FUNCTION(Francois, function11);
- ADD_CALLBACK_FUNCTION(Francois, function12);
- ADD_CALLBACK_FUNCTION(Francois, function13);
- ADD_CALLBACK_FUNCTION(Francois, function14);
- ADD_CALLBACK_FUNCTION(Francois, function15);
- ADD_CALLBACK_FUNCTION(Francois, function16);
+ ADD_CALLBACK_FUNCTION(Francois, doWalk);
+ ADD_CALLBACK_FUNCTION(Francois, exitCompartment);
+ ADD_CALLBACK_FUNCTION(Francois, enterCompartment);
+ ADD_CALLBACK_FUNCTION(Francois, rampage);
+ ADD_CALLBACK_FUNCTION(Francois, takeWalk);
+ ADD_CALLBACK_FUNCTION(Francois, haremVisit);
+ ADD_CALLBACK_FUNCTION(Francois, chaseBeetle);
+ ADD_CALLBACK_FUNCTION(Francois, findCath);
+ ADD_CALLBACK_FUNCTION(Francois, letsGo);
ADD_CALLBACK_FUNCTION(Francois, chapter1);
ADD_CALLBACK_FUNCTION(Francois, chapter1Handler);
- ADD_CALLBACK_FUNCTION(Francois, function19);
+ ADD_CALLBACK_FUNCTION(Francois, inCompartment);
ADD_CALLBACK_FUNCTION(Francois, function20);
ADD_CALLBACK_FUNCTION(Francois, chapter2);
- ADD_CALLBACK_FUNCTION(Francois, chapter2Handler);
- ADD_CALLBACK_FUNCTION(Francois, function23);
+ ADD_CALLBACK_FUNCTION(Francois, atBreakfast);
+ ADD_CALLBACK_FUNCTION(Francois, withMama);
ADD_CALLBACK_FUNCTION(Francois, chapter3);
ADD_CALLBACK_FUNCTION(Francois, chapter3Handler);
ADD_CALLBACK_FUNCTION(Francois, chapter4);
@@ -106,7 +106,7 @@ IMPLEMENT_FUNCTION_II(7, Francois, savegame, SavegameType, uint32)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION_II(8, Francois, updateEntity, CarIndex, EntityPosition)
+IMPLEMENT_FUNCTION_II(8, Francois, doWalk, CarIndex, EntityPosition)
switch (savepoint.action) {
default:
break;
@@ -196,13 +196,13 @@ IMPLEMENT_FUNCTION_II(8, Francois, updateEntity, CarIndex, EntityPosition)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(9, Francois, function9)
+IMPLEMENT_FUNCTION(9, Francois, exitCompartment)
switch (savepoint.action) {
default:
break;
case kActionDefault:
- if (getObjects()->get(kObjectCompartmentD).location == kObjectLocation2) {
+ if (getObjects()->get(kObjectCompartmentD).status == kObjectLocation2) {
getObjects()->update(kObjectCompartmentD, kEntityPlayer, kObjectLocationNone, kCursorKeepValue, kCursorKeepValue);
getSavePoints()->push(kEntityFrancois, kEntityMmeBoutarel, kAction134289824);
setCallback(1);
@@ -232,13 +232,13 @@ IMPLEMENT_FUNCTION(9, Francois, function9)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(10, Francois, function10)
+IMPLEMENT_FUNCTION(10, Francois, enterCompartment)
switch (savepoint.action) {
default:
break;
case kActionDefault:
- if (getObjects()->get(kObjectCompartmentD).location == kObjectLocation2) {
+ if (getObjects()->get(kObjectCompartmentD).status == kObjectLocation2) {
getObjects()->update(kObjectCompartmentD, kEntityPlayer, kObjectLocationNone, kCursorKeepValue, kCursorKeepValue);
setCallback(1);
setup_enterExitCompartment2("605Bd", kObjectCompartmentD);
@@ -270,7 +270,7 @@ IMPLEMENT_FUNCTION(10, Francois, function10)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION_I(11, Francois, function11, TimeValue)
+IMPLEMENT_FUNCTION_I(11, Francois, rampage, TimeValue)
switch (savepoint.action) {
default:
break;
@@ -375,7 +375,7 @@ label_callback:
getSoundQueue()->processEntry(kEntityFrancois);
setCallback(4);
- setup_updateEntity(kCarRedSleeping, kPosition_5790);
+ setup_doWalk(kCarRedSleeping, kPosition_5790);
}
break;
@@ -400,7 +400,7 @@ label_callback:
case kActionDefault:
setCallback(1);
- setup_function9();
+ setup_exitCompartment();
break;
case kActionCallback:
@@ -437,7 +437,7 @@ label_callback:
case 4:
setCallback(5);
- setup_function10();
+ setup_enterCompartment();
break;
case 5:
@@ -477,14 +477,14 @@ label_callback:
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(12, Francois, function12)
+IMPLEMENT_FUNCTION(12, Francois, takeWalk)
switch (savepoint.action) {
default:
break;
case kActionDefault:
setCallback(1);
- setup_function9();
+ setup_exitCompartment();
break;
case kActionCallback:
@@ -494,7 +494,7 @@ IMPLEMENT_FUNCTION(12, Francois, function12)
case 1:
setCallback(2);
- setup_updateEntity(kCarRedSleeping, kPosition_9460);
+ setup_doWalk(kCarRedSleeping, kPosition_9460);
break;
case 2:
@@ -504,7 +504,7 @@ IMPLEMENT_FUNCTION(12, Francois, function12)
case 3:
setCallback(4);
- setup_updateEntity(kCarRedSleeping, kPosition_540);
+ setup_doWalk(kCarRedSleeping, kPosition_540);
break;
case 4:
@@ -514,12 +514,12 @@ IMPLEMENT_FUNCTION(12, Francois, function12)
case 5:
setCallback(6);
- setup_updateEntity(kCarRedSleeping, kPosition_5790);
+ setup_doWalk(kCarRedSleeping, kPosition_5790);
break;
case 6:
setCallback(7);
- setup_function10();
+ setup_enterCompartment();
break;
case 7:
@@ -531,14 +531,14 @@ IMPLEMENT_FUNCTION(12, Francois, function12)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(13, Francois, function13)
+IMPLEMENT_FUNCTION(13, Francois, haremVisit)
switch (savepoint.action) {
default:
break;
case kActionDefault:
setCallback(1);
- setup_function9();
+ setup_exitCompartment();
break;
case kActionCallback:
@@ -548,12 +548,12 @@ IMPLEMENT_FUNCTION(13, Francois, function13)
case 1:
setCallback(2);
- setup_updateEntity(kCarRedSleeping, kPosition_540);
+ setup_doWalk(kCarRedSleeping, kPosition_540);
break;
case 2:
setCallback(3);
- setup_updateEntity(kCarGreenSleeping, kPosition_4070);
+ setup_doWalk(kCarGreenSleeping, kPosition_4070);
break;
case 3:
@@ -577,13 +577,13 @@ IMPLEMENT_FUNCTION(13, Francois, function13)
getData()->location = kLocationOutsideCompartment;
setCallback(7);
- setup_updateEntity(kCarGreenSleeping, kPosition_4840);
+ setup_doWalk(kCarGreenSleeping, kPosition_4840);
break;
case 7:
if (getInventory()->hasItem(kItemWhistle) || getInventory()->get(kItemWhistle)->location == kObjectLocation3) {
setCallback(10);
- setup_updateEntity(kCarGreenSleeping, kPosition_5790);
+ setup_doWalk(kCarGreenSleeping, kPosition_5790);
break;
}
@@ -599,12 +599,12 @@ IMPLEMENT_FUNCTION(13, Francois, function13)
getEntities()->exitCompartment(kEntityFrancois, kObjectCompartmentE, true);
setCallback(10);
- setup_updateEntity(kCarGreenSleeping, kPosition_5790);
+ setup_doWalk(kCarGreenSleeping, kPosition_5790);
break;
case 10:
setCallback(11);
- setup_function10();
+ setup_enterCompartment();
break;
case 11:
@@ -621,7 +621,7 @@ IMPLEMENT_FUNCTION(13, Francois, function13)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION_IIS(14, Francois, function14, ObjectIndex, EntityPosition)
+IMPLEMENT_FUNCTION_IIS(14, Francois, chaseBeetle, ObjectIndex, EntityPosition)
// Expose parameters as IISS and ignore the default exposed parameters
EntityData::EntityParametersIISS *parameters = (EntityData::EntityParametersIISS*)_data->getCurrentParameters();
@@ -634,7 +634,7 @@ IMPLEMENT_FUNCTION_IIS(14, Francois, function14, ObjectIndex, EntityPosition)
strcat((char *)&parameters->seq2, (char *)&parameters->seq1);
setCallback(1);
- setup_function9();
+ setup_exitCompartment();
break;
case kActionCallback:
@@ -644,7 +644,7 @@ IMPLEMENT_FUNCTION_IIS(14, Francois, function14, ObjectIndex, EntityPosition)
case 1:
setCallback(2);
- setup_updateEntity(kCarRedSleeping, (EntityPosition)parameters->param2);
+ setup_doWalk(kCarRedSleeping, (EntityPosition)parameters->param2);
break;
case 2:
@@ -657,10 +657,10 @@ IMPLEMENT_FUNCTION_IIS(14, Francois, function14, ObjectIndex, EntityPosition)
} else {
if (parameters->param2 >= kPosition_5790) {
setCallback(10);
- setup_updateEntity(kCarRedSleeping, kPosition_9460);
+ setup_doWalk(kCarRedSleeping, kPosition_9460);
} else {
setCallback(9);
- setup_updateEntity(kCarRedSleeping, kPosition_540);
+ setup_doWalk(kCarRedSleeping, kPosition_540);
}
}
break;
@@ -688,7 +688,7 @@ IMPLEMENT_FUNCTION_IIS(14, Francois, function14, ObjectIndex, EntityPosition)
case 9:
setCallback(10);
- setup_updateEntity(kCarRedSleeping, kPosition_9460);
+ setup_doWalk(kCarRedSleeping, kPosition_9460);
break;
case 10:
@@ -698,12 +698,12 @@ IMPLEMENT_FUNCTION_IIS(14, Francois, function14, ObjectIndex, EntityPosition)
case 11:
setCallback(12);
- setup_updateEntity(kCarRedSleeping, kPosition_5790);
+ setup_doWalk(kCarRedSleeping, kPosition_5790);
break;
case 12:
setCallback(13);
- setup_function10();
+ setup_enterCompartment();
break;
case 13:
@@ -715,14 +715,14 @@ IMPLEMENT_FUNCTION_IIS(14, Francois, function14, ObjectIndex, EntityPosition)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(15, Francois, function15)
+IMPLEMENT_FUNCTION(15, Francois, findCath)
switch (savepoint.action) {
default:
break;
case kActionDefault:
setCallback(1);
- setup_function9();
+ setup_exitCompartment();
break;
case kActionCallback:
@@ -733,10 +733,10 @@ IMPLEMENT_FUNCTION(15, Francois, function15)
case 1:
if (getData()->entityPosition >= getEntityData(kEntityPlayer)->entityPosition) {
setCallback(3);
- setup_updateEntity(kCarRedSleeping, kPosition_540);
+ setup_doWalk(kCarRedSleeping, kPosition_540);
} else {
setCallback(2);
- setup_updateEntity(kCarRedSleeping, kPosition_9460);
+ setup_doWalk(kCarRedSleeping, kPosition_9460);
}
break;
@@ -748,12 +748,12 @@ IMPLEMENT_FUNCTION(15, Francois, function15)
case 4:
setCallback(5);
- setup_updateEntity(kCarRedSleeping, kPosition_5790);
+ setup_doWalk(kCarRedSleeping, kPosition_5790);
break;
case 5:
setCallback(6);
- setup_function10();
+ setup_enterCompartment();
break;
case 6:
@@ -780,7 +780,7 @@ IMPLEMENT_FUNCTION(15, Francois, function15)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(16, Francois, function16)
+IMPLEMENT_FUNCTION(16, Francois, letsGo)
switch (savepoint.action) {
default:
break;
@@ -809,7 +809,7 @@ IMPLEMENT_FUNCTION(16, Francois, function16)
getSavePoints()->push(kEntityFrancois, kEntityMmeBoutarel, kAction101107728);
setCallback(2);
- setup_updateEntity(kCarRestaurant, kPosition_850);
+ setup_doWalk(kCarRestaurant, kPosition_850);
break;
case 2:
@@ -836,7 +836,7 @@ IMPLEMENT_FUNCTION(16, Francois, function16)
case kAction100901266:
setCallback(3);
- setup_updateEntity(kCarRedSleeping, kPosition_5790);
+ setup_doWalk(kCarRedSleeping, kPosition_5790);
break;
}
IMPLEMENT_FUNCTION_END
@@ -871,24 +871,24 @@ IMPLEMENT_FUNCTION(18, Francois, chapter1Handler)
case kActionCallback:
if (getCallback() == 1)
- setup_function19();
+ setup_inCompartment();
break;
}
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(19, Francois, function19)
+IMPLEMENT_FUNCTION(19, Francois, inCompartment)
switch (savepoint.action) {
default:
break;
case kActionNone:
- Entity::timeCheckCallback(kTime1161000, params->param1, 2, WRAP_SETUP_FUNCTION(Francois, setup_function12));
+ Entity::timeCheckCallback(kTime1161000, params->param1, 2, WRAP_SETUP_FUNCTION(Francois, setup_takeWalk));
break;
case kAction101107728:
setCallback(1);
- setup_function16();
+ setup_letsGo();
break;
}
IMPLEMENT_FUNCTION_END
@@ -911,7 +911,7 @@ IMPLEMENT_FUNCTION(21, Francois, chapter2)
break;
case kActionNone:
- setup_chapter2Handler();
+ setup_atBreakfast();
break;
case kActionDefault:
@@ -927,7 +927,7 @@ IMPLEMENT_FUNCTION(21, Francois, chapter2)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(22, Francois, chapter2Handler)
+IMPLEMENT_FUNCTION(22, Francois, atBreakfast)
switch (savepoint.action) {
default:
break;
@@ -948,20 +948,20 @@ IMPLEMENT_FUNCTION(22, Francois, chapter2Handler)
getData()->entityPosition = kPosition_5790;
getData()->location = kLocationInsideCompartment;
getEntities()->clearSequences(kEntityFrancois);
- setup_function23();
+ setup_withMama();
break;
}
break;
case kAction100901266:
setCallback(1);
- setup_updateEntity(kCarRedSleeping, kPosition_5790);
+ setup_doWalk(kCarRedSleeping, kPosition_5790);
break;
}
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(23, Francois, function23)
+IMPLEMENT_FUNCTION(23, Francois, withMama)
switch (savepoint.action) {
default:
break;
@@ -973,7 +973,7 @@ IMPLEMENT_FUNCTION(23, Francois, function23)
if (ENTITY_PARAM(0, 1) && getEntities()->isPlayerInCar(kCarRedSleeping)) {
setCallback(1);
- setup_function15();
+ setup_findCath();
break;
}
@@ -982,7 +982,7 @@ label_callback_1:
break;
label_callback_2:
- if (Entity::timeCheckCallback(kTime1800000, params->param2, 3, WRAP_SETUP_FUNCTION(Francois, setup_function13)))
+ if (Entity::timeCheckCallback(kTime1800000, params->param2, 3, WRAP_SETUP_FUNCTION(Francois, setup_haremVisit)))
break;
label_callback_3:
@@ -1085,36 +1085,36 @@ IMPLEMENT_FUNCTION(25, Francois, chapter3Handler)
if (ENTITY_PARAM(0, 1) && getEntities()->isPlayerInCar(kCarRedSleeping)) {
setCallback(2);
- setup_function15();
+ setup_findCath();
break;
}
label_callback_2:
- if (Entity::timeCheckCallback(kTime2025000, params->param3, 3, WRAP_SETUP_FUNCTION(Francois, setup_function12)))
+ if (Entity::timeCheckCallback(kTime2025000, params->param3, 3, WRAP_SETUP_FUNCTION(Francois, setup_takeWalk)))
break;
label_callback_3:
- if (Entity::timeCheckCallback(kTime2052000, params->param4, 4, WRAP_SETUP_FUNCTION(Francois, setup_function12)))
+ if (Entity::timeCheckCallback(kTime2052000, params->param4, 4, WRAP_SETUP_FUNCTION(Francois, setup_takeWalk)))
break;
label_callback_4:
- if (Entity::timeCheckCallback(kTime2079000, params->param5, 5, WRAP_SETUP_FUNCTION(Francois, setup_function12)))
+ if (Entity::timeCheckCallback(kTime2079000, params->param5, 5, WRAP_SETUP_FUNCTION(Francois, setup_takeWalk)))
break;
label_callback_5:
- if (Entity::timeCheckCallback(kTime2092500, params->param6, 6, WRAP_SETUP_FUNCTION(Francois, setup_function12)))
+ if (Entity::timeCheckCallback(kTime2092500, params->param6, 6, WRAP_SETUP_FUNCTION(Francois, setup_takeWalk)))
break;
label_callback_6:
- if (Entity::timeCheckCallback(kTime2173500, params->param7, 7, WRAP_SETUP_FUNCTION(Francois, setup_function12)))
+ if (Entity::timeCheckCallback(kTime2173500, params->param7, 7, WRAP_SETUP_FUNCTION(Francois, setup_takeWalk)))
break;
label_callback_7:
- if (Entity::timeCheckCallback(kTime2182500, params->param8, 8, WRAP_SETUP_FUNCTION(Francois, setup_function12)))
+ if (Entity::timeCheckCallback(kTime2182500, params->param8, 8, WRAP_SETUP_FUNCTION(Francois, setup_takeWalk)))
break;
label_callback_8:
- if (Entity::timeCheckCallback(kTime2241000, CURRENT_PARAM(1, 1), 9, WRAP_SETUP_FUNCTION(Francois, setup_function12)))
+ if (Entity::timeCheckCallback(kTime2241000, CURRENT_PARAM(1, 1), 9, WRAP_SETUP_FUNCTION(Francois, setup_takeWalk)))
break;
label_callback_9:
@@ -1208,7 +1208,7 @@ label_callback_14:
case kAction101107728:
setCallback(1);
- setup_function16();
+ setup_letsGo();
break;
case kAction189872836:
@@ -1246,7 +1246,7 @@ IMPLEMENT_FUNCTION_END
IMPLEMENT_FUNCTION(27, Francois, chapter4Handler)
if (savepoint.action == kAction101107728) {
setCallback(1);
- setup_function16();
+ setup_letsGo();
}
IMPLEMENT_FUNCTION_END
@@ -1314,7 +1314,7 @@ bool Francois::timeCheckCallbackCompartment(TimeValue timeValue, uint &parameter
if (getState()->time > timeValue && !parameter) {
parameter = 1;
setCallback(callback);
- setup_function14(compartment, position, sequenceSuffix);
+ setup_chaseBeetle(compartment, position, sequenceSuffix);
return true;
}
@@ -1326,7 +1326,7 @@ bool Francois::timeCheckCallback(TimeValue timeValue, uint &parameter, byte call
if (getState()->time > timeValue && !parameter) {
parameter = 1;
setCallback(callback);
- setup_function11(timeValue2);
+ setup_rampage(timeValue2);
return true;
}
diff --git a/engines/lastexpress/entities/francois.h b/engines/lastexpress/entities/francois.h
index 51270fa4b6..3118faf867 100644
--- a/engines/lastexpress/entities/francois.h
+++ b/engines/lastexpress/entities/francois.h
@@ -85,21 +85,21 @@ public:
DECLARE_FUNCTION_2(savegame, SavegameType savegameType, uint32 param)
/**
- * Updates the entity
+ * Walk
*
* @param car The car
* @param entityPosition The entity position
*/
- DECLARE_FUNCTION_2(updateEntity, CarIndex car, EntityPosition entityPosition)
+ DECLARE_FUNCTION_2(doWalk, CarIndex car, EntityPosition entityPosition)
- DECLARE_FUNCTION(function9)
- DECLARE_FUNCTION(function10)
- DECLARE_FUNCTION_1(function11, TimeValue timeValue)
- DECLARE_FUNCTION(function12)
- DECLARE_FUNCTION(function13)
- DECLARE_FUNCTION_3(function14, ObjectIndex compartment, EntityPosition entityPosition, const char *str)
- DECLARE_FUNCTION(function15)
- DECLARE_FUNCTION(function16)
+ DECLARE_FUNCTION(exitCompartment)
+ DECLARE_FUNCTION(enterCompartment)
+ DECLARE_FUNCTION_1(rampage, TimeValue timeValue)
+ DECLARE_FUNCTION(takeWalk)
+ DECLARE_FUNCTION(haremVisit)
+ DECLARE_FUNCTION_3(chaseBeetle, ObjectIndex compartment, EntityPosition entityPosition, const char *str)
+ DECLARE_FUNCTION(findCath)
+ DECLARE_FUNCTION(letsGo)
/**
* Setup Chapter 1
@@ -110,8 +110,7 @@ public:
* Handle Chapter 1 events
*/
DECLARE_FUNCTION(chapter1Handler)
-
- DECLARE_FUNCTION(function19)
+ DECLARE_FUNCTION(inCompartment)
DECLARE_FUNCTION(function20)
/**
@@ -122,9 +121,8 @@ public:
/**
* Handle Chapter 2 events
*/
- DECLARE_FUNCTION(chapter2Handler)
-
- DECLARE_FUNCTION(function23)
+ DECLARE_FUNCTION(atBreakfast)
+ DECLARE_FUNCTION(withMama)
/**
* Setup Chapter 3
@@ -155,7 +153,6 @@ public:
* Handle Chapter 5 events
*/
DECLARE_FUNCTION(chapter5Handler)
-
DECLARE_FUNCTION(function30)
DECLARE_NULL_FUNCTION()
diff --git a/engines/lastexpress/entities/gendarmes.cpp b/engines/lastexpress/entities/gendarmes.cpp
index a912fa4ecb..2ff34ef4c9 100644
--- a/engines/lastexpress/entities/gendarmes.cpp
+++ b/engines/lastexpress/entities/gendarmes.cpp
@@ -250,7 +250,7 @@ IMPLEMENT_FUNCTION_III(10, Gendarmes, function10, CarIndex, EntityPosition, Obje
if (!params->param5)
params->param5 = getState()->timeTicks + 75;
- if (!getEntities()->isOutsideAlexeiWindow() && getObjects()->get((ObjectIndex)params->param3).location != kObjectLocation1) {
+ if (!getEntities()->isOutsideAlexeiWindow() && getObjects()->get((ObjectIndex)params->param3).status != kObjectLocation1) {
setCallback(2);
setup_savegame(kSavegameTypeEvent, kEventGendarmesArrestation);
break;
@@ -284,7 +284,7 @@ IMPLEMENT_FUNCTION_III(10, Gendarmes, function10, CarIndex, EntityPosition, Obje
break;
case kActionKnock:
- getObjects()->update((ObjectIndex)params->param3, kEntityGendarmes, getObjects()->get((ObjectIndex)params->param3).location, kCursorNormal, kCursorNormal);
+ getObjects()->update((ObjectIndex)params->param3, kEntityGendarmes, getObjects()->get((ObjectIndex)params->param3).status, kCursorNormal, kCursorNormal);
setCallback(5);
setup_arrestPlaysound16("POL1046B");
@@ -296,7 +296,7 @@ IMPLEMENT_FUNCTION_III(10, Gendarmes, function10, CarIndex, EntityPosition, Obje
break;
case kActionDefault:
- getObjects()->update((ObjectIndex)params->param3, kEntityGendarmes, getObjects()->get((ObjectIndex)params->param3).location, kCursorNormal, kCursorNormal);
+ getObjects()->update((ObjectIndex)params->param3, kEntityGendarmes, getObjects()->get((ObjectIndex)params->param3).status, kCursorNormal, kCursorNormal);
setCallback(1);
setup_arrestPlaysound16("POL1046");
@@ -308,7 +308,7 @@ IMPLEMENT_FUNCTION_III(10, Gendarmes, function10, CarIndex, EntityPosition, Obje
break;
case 1:
- getObjects()->update((ObjectIndex)params->param3, kEntityGendarmes, getObjects()->get((ObjectIndex)params->param3).location, kCursorTalk, kCursorNormal);
+ getObjects()->update((ObjectIndex)params->param3, kEntityGendarmes, getObjects()->get((ObjectIndex)params->param3).status, kCursorTalk, kCursorNormal);
break;
case 2:
@@ -334,7 +334,7 @@ IMPLEMENT_FUNCTION_III(10, Gendarmes, function10, CarIndex, EntityPosition, Obje
break;
case 5:
- getObjects()->update((ObjectIndex)params->param3, kEntityGendarmes, getObjects()->get((ObjectIndex)params->param3).location, kCursorNormal, kCursorHand);
+ getObjects()->update((ObjectIndex)params->param3, kEntityGendarmes, getObjects()->get((ObjectIndex)params->param3).status, kCursorNormal, kCursorHand);
break;
case 6:
diff --git a/engines/lastexpress/entities/kahina.cpp b/engines/lastexpress/entities/kahina.cpp
index 467c8d8b3c..29e9a90d41 100644
--- a/engines/lastexpress/entities/kahina.cpp
+++ b/engines/lastexpress/entities/kahina.cpp
@@ -503,16 +503,16 @@ IMPLEMENT_FUNCTION(15, Kahina, function15)
getData()->location = kLocationInsideCompartment;
getEntities()->clearSequences(kEntityKahina);
- getObjects()->update(kObjectCompartmentC, kEntityPlayer, getObjects()->get(kObjectCompartmentC).location, kCursorNormal, kCursorNormal);
- getObjects()->update(kObject50, kEntityPlayer, getObjects()->get(kObject50).location, kCursorNormal, kCursorNormal);
+ getObjects()->update(kObjectCompartmentC, kEntityPlayer, getObjects()->get(kObjectCompartmentC).status, kCursorNormal, kCursorNormal);
+ getObjects()->update(kObject50, kEntityPlayer, getObjects()->get(kObject50).status, kCursorNormal, kCursorNormal);
setCallback(13);
setup_updateFromTime(900);
break;
case 13:
- getObjects()->update(kObjectCompartmentC, kEntityPlayer, getObjects()->get(kObjectCompartmentC).location, kCursorHandKnock, kCursorHand);
- getObjects()->update(kObject50, kEntityPlayer, getObjects()->get(kObject50).location, kCursorHandKnock, kCursorHand);
+ getObjects()->update(kObjectCompartmentC, kEntityPlayer, getObjects()->get(kObjectCompartmentC).status, kCursorHandKnock, kCursorHand);
+ getObjects()->update(kObject50, kEntityPlayer, getObjects()->get(kObject50).status, kCursorHandKnock, kCursorHand);
setCallback(14);
setup_enterExitCompartment("616Bc", kObjectCompartmentC);
@@ -1088,16 +1088,16 @@ IMPLEMENT_FUNCTION(23, Kahina, function23)
getData()->location = kLocationInsideCompartment;
getEntities()->clearSequences(kEntityKahina);
- getObjects()->update(kObjectCompartmentF, kEntityPlayer, getObjects()->get(kObjectCompartmentF).location, kCursorNormal, kCursorNormal);
- getObjects()->update(kObject53, kEntityPlayer, getObjects()->get(kObject53).location, kCursorNormal, kCursorNormal);
+ getObjects()->update(kObjectCompartmentF, kEntityPlayer, getObjects()->get(kObjectCompartmentF).status, kCursorNormal, kCursorNormal);
+ getObjects()->update(kObject53, kEntityPlayer, getObjects()->get(kObject53).status, kCursorNormal, kCursorNormal);
setCallback(3);
setup_updateFromTime(900);
break;
case 3:
- getObjects()->update(kObjectCompartmentF, kEntityPlayer, getObjects()->get(kObjectCompartmentF).location, kCursorHandKnock, kCursorHand);
- getObjects()->update(kObject53, kEntityPlayer, getObjects()->get(kObject53).location, kCursorHandKnock, kCursorHand);
+ getObjects()->update(kObjectCompartmentF, kEntityPlayer, getObjects()->get(kObjectCompartmentF).status, kCursorHandKnock, kCursorHand);
+ getObjects()->update(kObject53, kEntityPlayer, getObjects()->get(kObject53).status, kCursorHandKnock, kCursorHand);
setCallback(4);
setup_enterExitCompartment("616Df", kObjectCompartmentF);
@@ -1436,16 +1436,16 @@ IMPLEMENT_FUNCTION(26, Kahina, function26)
getData()->location = kLocationInsideCompartment;
getEntities()->clearSequences(kEntityKahina);
- getObjects()->update(kObjectCompartmentA, kEntityPlayer, getObjects()->get(kObjectCompartmentA).location, kCursorNormal, kCursorNormal);
- getObjects()->update(kObject48, kEntityPlayer, getObjects()->get(kObject48).location, kCursorNormal, kCursorNormal);
+ getObjects()->update(kObjectCompartmentA, kEntityPlayer, getObjects()->get(kObjectCompartmentA).status, kCursorNormal, kCursorNormal);
+ getObjects()->update(kObject48, kEntityPlayer, getObjects()->get(kObject48).status, kCursorNormal, kCursorNormal);
setCallback(7);
setup_updateFromTime(900);
break;
case 7:
- getObjects()->update(kObjectCompartmentA, kEntityPlayer, getObjects()->get(kObjectCompartmentA).location, kCursorHandKnock, kCursorHand);
- getObjects()->update(kObject48, kEntityPlayer, getObjects()->get(kObject48).location, kCursorHandKnock, kCursorHand);
+ getObjects()->update(kObjectCompartmentA, kEntityPlayer, getObjects()->get(kObjectCompartmentA).status, kCursorHandKnock, kCursorHand);
+ getObjects()->update(kObject48, kEntityPlayer, getObjects()->get(kObject48).status, kCursorHandKnock, kCursorHand);
if (getInventory()->get(kItemFirebird)->location == kObjectLocation1 || getInventory()->get(kItemFirebird)->location == kObjectLocation2) {
getScenes()->loadSceneFromItemPosition(kItemFirebird);
diff --git a/engines/lastexpress/entities/kronos.cpp b/engines/lastexpress/entities/kronos.cpp
index 26ce3ca424..38a685ec19 100644
--- a/engines/lastexpress/entities/kronos.cpp
+++ b/engines/lastexpress/entities/kronos.cpp
@@ -399,7 +399,7 @@ IMPLEMENT_FUNCTION(18, Kronos, function18)
case kActionNone:
if (getState()->time > kTime2079000 && !params->param2) {
- getObjects()->updateLocation2(kObjectCompartmentKronos, kObjectLocation3);
+ getObjects()->updateModel(kObjectCompartmentKronos, kObjectModel3);
getObjects()->update(kObjectCompartmentKronos, kEntityPlayer, kObjectLocation3, kCursorHandKnock, kCursorHand);
params->param1 = 1;
params->param2 = 1;
@@ -462,7 +462,7 @@ IMPLEMENT_FUNCTION(19, Kronos, function19)
RESET_ENTITY_STATE(kEntityRebecca, Rebecca, setup_function39);
RESET_ENTITY_STATE(kEntitySophie, Sophie, setup_chaptersHandler);
RESET_ENTITY_STATE(kEntityAugust, August, setup_function50);
- RESET_ENTITY_STATE(kEntityAnna, Anna, setup_function56);
+ RESET_ENTITY_STATE(kEntityAnna, Anna, setup_concert);
RESET_ENTITY_STATE(kEntityTatiana, Tatiana, setup_function35);
setup_function20();
diff --git a/engines/lastexpress/entities/mertens.cpp b/engines/lastexpress/entities/mertens.cpp
index 97dd293793..f484d00a2c 100644
--- a/engines/lastexpress/entities/mertens.cpp
+++ b/engines/lastexpress/entities/mertens.cpp
@@ -1067,7 +1067,7 @@ IMPLEMENT_FUNCTION_II(21, Mertens, function21, ObjectIndex, ObjectIndex)
break;
// Update objects
- getObjects()->updateLocation2((ObjectIndex)params->param1, kObjectLocation1);
+ getObjects()->updateModel((ObjectIndex)params->param1, kObjectModel1);
if (params->param5 != kObjectLocation2)
getObjects()->update((ObjectIndex)params->param1, (EntityIndex)params->param4, (ObjectLocation)params->param5, (CursorStyle)params->param6, (CursorStyle)params->param7);
@@ -1090,15 +1090,15 @@ IMPLEMENT_FUNCTION_II(21, Mertens, function21, ObjectIndex, ObjectIndex)
case kActionDefault:
params->param3 = 1;
params->param4 = getObjects()->get((ObjectIndex)params->param1).entity;
- params->param5 = getObjects()->get((ObjectIndex)params->param1).location;
- params->param6 = getObjects()->get((ObjectIndex)params->param1).cursor;
- params->param7 = getObjects()->get((ObjectIndex)params->param1).cursor2;
+ params->param5 = getObjects()->get((ObjectIndex)params->param1).status;
+ params->param6 = getObjects()->get((ObjectIndex)params->param1).windowCursor;
+ params->param7 = getObjects()->get((ObjectIndex)params->param1).handleCursor;
if (params->param2) {
- params->param8 = getObjects()->get((ObjectIndex)params->param2).entity;
- CURRENT_PARAM(1, 1) = getObjects()->get((ObjectIndex)params->param2).location;
- CURRENT_PARAM(1, 2) = getObjects()->get((ObjectIndex)params->param2).cursor;
- CURRENT_PARAM(1, 3) = getObjects()->get((ObjectIndex)params->param2).cursor2;
+ params->param8 = getObjects()->get((ObjectIndex)params->param2).entity;
+ CURRENT_PARAM(1, 1) = getObjects()->get((ObjectIndex)params->param2).status;
+ CURRENT_PARAM(1, 2) = getObjects()->get((ObjectIndex)params->param2).windowCursor;
+ CURRENT_PARAM(1, 3) = getObjects()->get((ObjectIndex)params->param2).handleCursor;
getObjects()->update((ObjectIndex)params->param2, kEntityMertens, kObjectLocation1, kCursorHandKnock, kCursorHand);
}
@@ -1506,7 +1506,7 @@ IMPLEMENT_FUNCTION_I(26, Mertens, function26, bool)
getData()->location = kLocationInsideCompartment;
getEntities()->clearSequences(kEntityMertens);
- getObjects()->update(kObjectCompartment1, kEntityPlayer, getObjects()->get(kObjectCompartment1).location, kCursorNormal, kCursorNormal);
+ getObjects()->update(kObjectCompartment1, kEntityPlayer, getObjects()->get(kObjectCompartment1).status, kCursorNormal, kCursorNormal);
setCallback(3);
setup_playSound16("ZNU1001");
@@ -1522,14 +1522,14 @@ IMPLEMENT_FUNCTION_I(26, Mertens, function26, bool)
break;
case 1:
- getObjects()->update(kObjectCompartment1, kEntityPlayer, getObjects()->get(kObjectCompartment1).location, kCursorNormal, kCursorNormal);
+ getObjects()->update(kObjectCompartment1, kEntityPlayer, getObjects()->get(kObjectCompartment1).status, kCursorNormal, kCursorNormal);
setCallback(2);
setup_playSound16("CON1062");
break;
case 2:
- getObjects()->update(kObjectCompartment1, kEntityPlayer, getObjects()->get(kObjectCompartment1).location, kCursorHandKnock, kCursorHand);
+ getObjects()->update(kObjectCompartment1, kEntityPlayer, getObjects()->get(kObjectCompartment1).status, kCursorHandKnock, kCursorHand);
callbackAction();
break;
@@ -1617,7 +1617,7 @@ IMPLEMENT_FUNCTION_I(27, Mertens, tylerCompartment, MertensActionType)
}
if (Entity::updateParameter(params->param2, getState()->timeTicks, 150)) {
- getObjects()->update(kObjectCompartment1, kEntityPlayer, getObjects()->get(kObjectCompartment1).location, kCursorNormal, kCursorNormal);
+ getObjects()->update(kObjectCompartment1, kEntityPlayer, getObjects()->get(kObjectCompartment1).status, kCursorNormal, kCursorNormal);
setCallback(10);
setup_playSound16("CON1018A");
@@ -1683,7 +1683,7 @@ label_callback11:
} else {
params->param3 = kTimeInvalid;
- if (getObjects()->get(kObjectCompartment1).location == kObjectLocation1) {
+ if (getObjects()->get(kObjectCompartment1).status == kObjectLocation1) {
getObjects()->update(kObjectCompartment1, kEntityPlayer, kObjectLocation1, kCursorNormal, kCursorNormal);
setCallback(11);
@@ -1742,11 +1742,11 @@ label_callback11:
case kActionKnock:
if (params->param1) {
- getObjects()->update(kObjectCompartment1, kEntityMertens, getObjects()->get(kObjectCompartment1).location, kCursorNormal, kCursorNormal);
+ getObjects()->update(kObjectCompartment1, kEntityMertens, getObjects()->get(kObjectCompartment1).status, kCursorNormal, kCursorNormal);
switch (params->param1) {
default:
- getObjects()->update(kObjectCompartment1, kEntityPlayer, getObjects()->get(kObjectCompartment1).location, kCursorHandKnock, kCursorHand);
+ getObjects()->update(kObjectCompartment1, kEntityPlayer, getObjects()->get(kObjectCompartment1).status, kCursorHandKnock, kCursorHand);
callbackAction();
break;
@@ -1774,7 +1774,7 @@ label_callback11:
break;
case kActionOpenDoor:
- getSound()->playSound(kEntityPlayer, getObjects()->get(kObjectCompartment1).location == kObjectLocation1 ? "LIB012" : "LIB014");
+ getSound()->playSound(kEntityPlayer, getObjects()->get(kObjectCompartment1).status == kObjectLocation1 ? "LIB012" : "LIB014");
if (getProgress().eventCorpseMovedFromFloor) {
@@ -1828,7 +1828,7 @@ label_callback11:
if (getEntities()->isInsideCompartment(kEntityPlayer, kCarGreenSleeping, kPosition_8200)
|| getEntities()->isInsideCompartment(kEntityPlayer, kCarGreenSleeping, kPosition_7850)
|| getEntities()->isOutsideAlexeiWindow()) {
- getObjects()->update(kObjectCompartment1, kEntityPlayer, getObjects()->get(kObjectCompartment1).location, kCursorNormal, kCursorNormal);
+ getObjects()->update(kObjectCompartment1, kEntityPlayer, getObjects()->get(kObjectCompartment1).status, kCursorNormal, kCursorNormal);
if (getEntities()->isOutsideAlexeiWindow())
getScenes()->loadSceneFromPosition(kCarGreenSleeping, 49);
@@ -1920,15 +1920,15 @@ label_callback11:
case 8:
case 9:
- getObjects()->update(kObjectCompartment1, kEntityMertens, getObjects()->get(kObjectCompartment1).location, kCursorTalk, kCursorHand);
+ getObjects()->update(kObjectCompartment1, kEntityMertens, getObjects()->get(kObjectCompartment1).status, kCursorTalk, kCursorHand);
break;
case 10:
- getObjects()->update(kObjectCompartment1, kEntityMertens, getObjects()->get(kObjectCompartment1).location, kCursorTalk, kCursorHand);
+ getObjects()->update(kObjectCompartment1, kEntityMertens, getObjects()->get(kObjectCompartment1).status, kCursorTalk, kCursorHand);
goto label_callback10;
case 11:
- getObjects()->update(kObjectCompartment1, kEntityMertens, getObjects()->get(kObjectCompartment1).location, kCursorTalk, kCursorHand);
+ getObjects()->update(kObjectCompartment1, kEntityMertens, getObjects()->get(kObjectCompartment1).status, kCursorTalk, kCursorHand);
goto label_callback11;
case 13:
@@ -1971,20 +1971,20 @@ label_callback11:
case 23:
getProgress().eventMertensAugustWaiting = true;
- getObjects()->update(kObjectCompartment1, kEntityPlayer, getObjects()->get(kObjectCompartment1).location, kCursorHandKnock, kCursorHand);
+ getObjects()->update(kObjectCompartment1, kEntityPlayer, getObjects()->get(kObjectCompartment1).status, kCursorHandKnock, kCursorHand);
callbackAction();
break;
case 24:
getProgress().eventMertensKronosInvitation = true;
- getObjects()->update(kObjectCompartment1, kEntityPlayer, getObjects()->get(kObjectCompartment1).location, kCursorHandKnock, kCursorHand);
+ getObjects()->update(kObjectCompartment1, kEntityPlayer, getObjects()->get(kObjectCompartment1).status, kCursorHandKnock, kCursorHand);
callbackAction();
break;
case 25:
- getObjects()->update(kObjectCompartment1, kEntityPlayer, getObjects()->get(kObjectCompartment1).location, kCursorHandKnock, kCursorHand);
+ getObjects()->update(kObjectCompartment1, kEntityPlayer, getObjects()->get(kObjectCompartment1).status, kCursorHandKnock, kCursorHand);
callbackAction();
break;
@@ -2182,7 +2182,7 @@ IMPLEMENT_FUNCTION_I(30, Mertens, function30, MertensActionType)
case 2:
if (getEntities()->isInsideCompartment(kEntityPlayer, kCarGreenSleeping, kPosition_7500)) {
- getObjects()->update(kObjectCompartment2, kEntityPlayer, getObjects()->get(kObjectCompartment2).location, kCursorNormal, kCursorNormal);
+ getObjects()->update(kObjectCompartment2, kEntityPlayer, getObjects()->get(kObjectCompartment2).status, kCursorNormal, kCursorNormal);
params->param3 = 1;
}
@@ -2192,7 +2192,7 @@ IMPLEMENT_FUNCTION_I(30, Mertens, function30, MertensActionType)
case 3:
if (getEntities()->isInsideCompartment(kEntityPlayer, kCarGreenSleeping, kPosition_6470)) {
- getObjects()->update(kObjectCompartment3, kEntityPlayer, getObjects()->get(kObjectCompartment3).location, kCursorNormal, kCursorNormal);
+ getObjects()->update(kObjectCompartment3, kEntityPlayer, getObjects()->get(kObjectCompartment3).status, kCursorNormal, kCursorNormal);
params->param3 = 1;
}
@@ -2220,7 +2220,7 @@ IMPLEMENT_FUNCTION_I(30, Mertens, function30, MertensActionType)
case 5:
if (params->param3)
- getObjects()->update(kObjectCompartment2, kEntityPlayer, getObjects()->get(kObjectCompartment2).location, kCursorHandKnock, kCursorHand);
+ getObjects()->update(kObjectCompartment2, kEntityPlayer, getObjects()->get(kObjectCompartment2).status, kCursorHandKnock, kCursorHand);
getEntities()->exitCompartment(kEntityMertens, kObjectCompartment2);
@@ -2241,7 +2241,7 @@ IMPLEMENT_FUNCTION_I(30, Mertens, function30, MertensActionType)
case 7:
if (params->param3)
- getObjects()->update(kObjectCompartment3, kEntityPlayer, getObjects()->get(kObjectCompartment3).location, kCursorHandKnock, kCursorHand);
+ getObjects()->update(kObjectCompartment3, kEntityPlayer, getObjects()->get(kObjectCompartment3).status, kCursorHandKnock, kCursorHand);
getEntities()->exitCompartment(kEntityMertens, kObjectCompartment3);
@@ -3688,9 +3688,9 @@ IMPLEMENT_FUNCTION(48, Mertens, function48)
if (ENTITY_PARAM(2, 3)) {
params->param1 = 1;
- getObjects()->updateLocation2(kObjectCompartment2, kObjectLocation1);
- getObjects()->updateLocation2(kObjectCompartment3, kObjectLocation1);
- getObjects()->updateLocation2(kObjectCompartment4, kObjectLocation1);
+ getObjects()->updateModel(kObjectCompartment2, kObjectModel1);
+ getObjects()->updateModel(kObjectCompartment3, kObjectModel1);
+ getObjects()->updateModel(kObjectCompartment4, kObjectModel1);
ENTITY_PARAM(1, 4) = 0;
ENTITY_PARAM(1, 5) = 0;
diff --git a/engines/lastexpress/entities/milos.cpp b/engines/lastexpress/entities/milos.cpp
index 519a613497..76dc0aa0a0 100644
--- a/engines/lastexpress/entities/milos.cpp
+++ b/engines/lastexpress/entities/milos.cpp
@@ -433,16 +433,16 @@ IMPLEMENT_FUNCTION(14, Milos, function14)
if (CURRENT_PARAM(1, 1) < getState()->timeTicks) {
- if (getObjects()->get(kObjectCompartment1).location == kObjectLocation1) {
+ if (getObjects()->get(kObjectCompartment1).status == kObjectLocation1) {
if (!Entity::updateParameter(CURRENT_PARAM(1, 2), getState()->timeTicks, 75))
break;
- getObjects()->update(kObjectCompartment1, kEntityMilos, getObjects()->get(kObjectCompartment1).location, kCursorNormal, kCursorNormal);
+ getObjects()->update(kObjectCompartment1, kEntityMilos, getObjects()->get(kObjectCompartment1).status, kCursorNormal, kCursorNormal);
++params->param5;
switch (params->param5) {
default:
- getObjects()->update(kObjectCompartment1, kEntityMilos, getObjects()->get(kObjectCompartment1).location, params->param3 < 1 ? kCursorTalk : kCursorNormal, kCursorHand);
+ getObjects()->update(kObjectCompartment1, kEntityMilos, getObjects()->get(kObjectCompartment1).status, params->param3 < 1 ? kCursorTalk : kCursorNormal, kCursorHand);
CURRENT_PARAM(1, 2) = 0;
break;
@@ -466,19 +466,19 @@ IMPLEMENT_FUNCTION(14, Milos, function14)
if (params->param7 < 3) {
params->param5 = 1;
- getObjects()->update(kObjectCompartment1, kEntityMilos, getObjects()->get(kObjectCompartment1).location, params->param3 < 1 ? kCursorTalk : kCursorNormal, kCursorHand);
+ getObjects()->update(kObjectCompartment1, kEntityMilos, getObjects()->get(kObjectCompartment1).status, params->param3 < 1 ? kCursorTalk : kCursorNormal, kCursorHand);
CURRENT_PARAM(1, 2) = 0;
break;
}
- getObjects()->update(kObjectCompartment1, kEntityPlayer, getObjects()->get(kObjectCompartment1).location, kCursorHandKnock, kCursorHand);
+ getObjects()->update(kObjectCompartment1, kEntityPlayer, getObjects()->get(kObjectCompartment1).status, kCursorHandKnock, kCursorHand);
callbackAction();
break;
}
} else {
if (getProgress().eventCorpseMovedFromFloor && getProgress().jacket != kJacketBlood) {
- params->param6 = (getObjects()->get(kObjectCompartment1).location2 == kObjectLocation1) ? kEventMilosTylerCompartmentBedVisit : kEventMilosTylerCompartmentVisit;
+ params->param6 = (getObjects()->get(kObjectCompartment1).model == kObjectModel1) ? kEventMilosTylerCompartmentBedVisit : kEventMilosTylerCompartmentVisit;
setCallback(3);
setup_savegame(kSavegameTypeEvent, kEventMilosTylerCompartmentVisit);
@@ -538,7 +538,7 @@ label_callback_12:
setCallback(20);
setup_playSound("LIB012");
} else if (!params->param3) {
- getObjects()->update(kObjectCompartment1, kEntityMilos, getObjects()->get(kObjectCompartment1).location, kCursorNormal, kCursorNormal);
+ getObjects()->update(kObjectCompartment1, kEntityMilos, getObjects()->get(kObjectCompartment1).status, kCursorNormal, kCursorNormal);
setCallback(22);
setup_playSound16("MIL1032");
@@ -549,9 +549,9 @@ label_callback_12:
if (getProgress().eventCorpseMovedFromFloor && getProgress().jacket != kJacketBlood) {
if (params->param2) {
getEntityData(kEntityPlayer)->location = kLocationInsideCompartment;
- params->param6 = (getObjects()->get(kObjectCompartment1).location2 == kObjectLocation1) ? kEventMilosTylerCompartmentBed : kEventMilosTylerCompartment;
+ params->param6 = (getObjects()->get(kObjectCompartment1).model == kObjectModel1) ? kEventMilosTylerCompartmentBed : kEventMilosTylerCompartment;
} else {
- params->param6 = (getObjects()->get(kObjectCompartment1).location2 == kObjectLocation1) ? kEventMilosTylerCompartmentBedVisit : kEventMilosTylerCompartmentVisit;
+ params->param6 = (getObjects()->get(kObjectCompartment1).model == kObjectModel1) ? kEventMilosTylerCompartmentBedVisit : kEventMilosTylerCompartmentVisit;
}
setCallback(17);
@@ -568,14 +568,14 @@ label_callback_12:
if (getEntities()->isInsideCompartment(kEntityPlayer, kCarGreenSleeping, kPosition_8200)
|| getEntities()->isInsideCompartment(kEntityPlayer, kCarGreenSleeping, kPosition_7850)
|| getEntities()->isOutsideAlexeiWindow()) {
- getObjects()->update(kObjectCompartment1, kEntityMilos, getObjects()->get(kObjectCompartment1).location, kCursorNormal, kCursorNormal);
+ getObjects()->update(kObjectCompartment1, kEntityMilos, getObjects()->get(kObjectCompartment1).status, kCursorNormal, kCursorNormal);
if (getEntities()->isOutsideAlexeiWindow())
getScenes()->loadSceneFromPosition(kCarGreenSleeping, 49);
getSound()->playSound(kEntityPlayer, "LIB012");
- getObjects()->update(kObjectCompartment1, kEntityMilos, getObjects()->get(kObjectCompartment1).location, kCursorTalk, kCursorHand);
+ getObjects()->update(kObjectCompartment1, kEntityMilos, getObjects()->get(kObjectCompartment1).status, kCursorTalk, kCursorHand);
params->param1 = 1;
} else {
@@ -644,7 +644,7 @@ label_callback_12:
case 7:
case 9:
case 11:
- getObjects()->update(kObjectCompartment1, kEntityMilos, getObjects()->get(kObjectCompartment1).location, params->param3 < 1 ? kCursorTalk : kCursorNormal, kCursorHand);
+ getObjects()->update(kObjectCompartment1, kEntityMilos, getObjects()->get(kObjectCompartment1).status, params->param3 < 1 ? kCursorTalk : kCursorNormal, kCursorHand);
CURRENT_PARAM(1, 2) = 0;
break;
@@ -682,13 +682,13 @@ label_callback_12:
break;
case 16:
- getSound()->playSound(kEntityPlayer, getObjects()->get(kObjectCompartment1).location == kObjectLocation1 ? "LIB032" : "LIB014");
+ getSound()->playSound(kEntityPlayer, getObjects()->get(kObjectCompartment1).status == kObjectLocation1 ? "LIB032" : "LIB014");
getAction()->playAnimation(kEventMilosCorpseFloor);
getLogic()->gameOver(kSavegameTypeIndex, 1, getProgress().eventCorpseMovedFromFloor ? kSceneGameOverBloodJacket : kSceneGameOverPolice1, true);
break;
case 17:
- getSound()->playSound(kEntityPlayer, getObjects()->get(kObjectCompartment1).location == kObjectLocation1 ? "LIB032" : "LIB014");
+ getSound()->playSound(kEntityPlayer, getObjects()->get(kObjectCompartment1).status == kObjectLocation1 ? "LIB032" : "LIB014");
getObjects()->update(kObjectCompartment1, kEntityPlayer, kObjectLocationNone, kCursorHandKnock, kCursorHand);
getObjects()->update(kObjectOutsideTylerCompartment, kEntityPlayer, kObjectLocationNone, kCursorKeepValue, kCursorKeepValue);
getAction()->playAnimation((EventIndex)params->param6);
@@ -708,7 +708,7 @@ label_callback_12:
case 22:
params->param3 = 1;
- getObjects()->update(kObjectCompartment1, kEntityMilos, getObjects()->get(kObjectCompartment1).location, kCursorNormal, kCursorHand);
+ getObjects()->update(kObjectCompartment1, kEntityMilos, getObjects()->get(kObjectCompartment1).status, kCursorNormal, kCursorHand);
break;
}
break;
diff --git a/engines/lastexpress/entities/rebecca.cpp b/engines/lastexpress/entities/rebecca.cpp
index 5bcb6aef85..8c779baeba 100644
--- a/engines/lastexpress/entities/rebecca.cpp
+++ b/engines/lastexpress/entities/rebecca.cpp
@@ -665,7 +665,7 @@ IMPLEMENT_FUNCTION(21, Rebecca, chapter1)
getObjects()->update(kObject52, kEntityPlayer, kObjectLocationNone, kCursorHandKnock, kCursorHand);
getObjects()->update(kObjectOutsideBetweenCompartments, kEntityPlayer, kObjectLocationNone, kCursorKeepValue, kCursorKeepValue);
- getObjects()->updateLocation2(kObject110, kObjectLocation1);
+ getObjects()->updateModel(kObject110, kObjectModel1);
getData()->entityPosition = kPosition_2830;
getData()->location = kLocationInsideCompartment;
@@ -1051,7 +1051,7 @@ IMPLEMENT_FUNCTION(28, Rebecca, chapter2)
getObjects()->update(kObjectCompartmentE, kEntityPlayer, kObjectLocation1, kCursorHandKnock, kCursorHand);
getObjects()->update(kObject52, kEntityPlayer, kObjectLocation1, kCursorHandKnock, kCursorHand);
- getObjects()->updateLocation2(kObject110, kObjectLocation2);
+ getObjects()->updateModel(kObject110, kObjectModel2);
ENTITY_PARAM(0, 2) = 1;
break;
@@ -1574,7 +1574,7 @@ IMPLEMENT_FUNCTION(42, Rebecca, chapter4)
getData()->clothes = kClothesDefault;
getData()->inventoryItem = kItemNone;
- getObjects()->updateLocation2(kObject110, kObjectLocation3);
+ getObjects()->updateModel(kObject110, kObjectModel3);
ENTITY_PARAM(0, 1) = 0;
ENTITY_PARAM(0, 2) = 1;
@@ -1750,7 +1750,7 @@ IMPLEMENT_FUNCTION(46, Rebecca, chapter5)
getData()->car = kCarRestaurant;
getData()->inventoryItem = kItemNone;
- getObjects()->updateLocation2(kObject110, kObjectLocation4);
+ getObjects()->updateModel(kObject110, kObjectModel4);
break;
}
IMPLEMENT_FUNCTION_END
diff --git a/engines/lastexpress/entities/tatiana.cpp b/engines/lastexpress/entities/tatiana.cpp
index 432def6253..d6bf4479e9 100644
--- a/engines/lastexpress/entities/tatiana.cpp
+++ b/engines/lastexpress/entities/tatiana.cpp
@@ -835,7 +835,7 @@ IMPLEMENT_FUNCTION(27, Tatiana, function27)
break;
case 1:
- RESET_ENTITY_STATE(kEntityAlexei, Alexei, setup_function30);
+ RESET_ENTITY_STATE(kEntityAlexei, Alexei, setup_atBreakfast);
getAction()->playAnimation(kEventTatianaBreakfastAlexei);
getInventory()->addItem(kItemParchemin);
getInventory()->setLocationAndProcess(kItem11, kObjectLocation1);
@@ -843,7 +843,7 @@ IMPLEMENT_FUNCTION(27, Tatiana, function27)
break;
case 2:
- RESET_ENTITY_STATE(kEntityAlexei, Alexei, setup_function30);
+ RESET_ENTITY_STATE(kEntityAlexei, Alexei, setup_atBreakfast);
getAction()->playAnimation(kEventTatianaBreakfast);
if (getInventory()->hasItem(kItemParchemin)) {
getAction()->playAnimation(kEventTatianaBreakfastGivePoem);
@@ -1917,7 +1917,7 @@ IMPLEMENT_FUNCTION(47, Tatiana, function47)
case 3:
case 4:
- if (ENTITY_PARAM(0, 1) && getObjects()->get(kObjectCompartment1).location2 == kObjectLocation1) {
+ if (ENTITY_PARAM(0, 1) && getObjects()->get(kObjectCompartment1).model == kObjectModel1) {
setup_function48();
} else {
setCallback(4);
@@ -1940,7 +1940,7 @@ IMPLEMENT_FUNCTION(48, Tatiana, function48)
if (!getEvent(kEventTatianaTylerCompartment) && getEntities()->isInsideCompartment(kEntityPlayer, kCarGreenSleeping, kPosition_8200)) {
params->param1 = 1;
getProgress().field_E4 = 1;
- getObjects()->update(kObjectCompartment1, kEntityTatiana, getObjects()->get(kObjectCompartment1).location, kCursorNormal, kCursorHand);
+ getObjects()->update(kObjectCompartment1, kEntityTatiana, getObjects()->get(kObjectCompartment1).status, kCursorNormal, kCursorHand);
}
if (!params->param1)
@@ -1948,7 +1948,7 @@ IMPLEMENT_FUNCTION(48, Tatiana, function48)
}
if (!getEntities()->checkFields19(kEntityPlayer, kCarGreenSleeping, kPosition_7850)) {
- getObjects()->update(kObjectCompartment1, kEntityPlayer, getObjects()->get(kObjectCompartment1).location, kCursorHandKnock, kCursorHand);
+ getObjects()->update(kObjectCompartment1, kEntityPlayer, getObjects()->get(kObjectCompartment1).status, kCursorHandKnock, kCursorHand);
params->param1 = 0;
}
@@ -1964,7 +1964,7 @@ IMPLEMENT_FUNCTION(48, Tatiana, function48)
label_end:
if (getEvent(kEventTatianaTylerCompartment) || getState()->time > kTime2475000) {
if (params->param1)
- getObjects()->update(kObjectCompartment1, kEntityPlayer, getObjects()->get(kObjectCompartment1).location, kCursorHandKnock, kCursorHand);
+ getObjects()->update(kObjectCompartment1, kEntityPlayer, getObjects()->get(kObjectCompartment1).status, kCursorHandKnock, kCursorHand);
getProgress().field_E4 = 0;
getEntities()->exitCompartment(kEntityTatiana, kObjectCompartment2, true);
@@ -2040,7 +2040,7 @@ label_end:
case kAction238790488:
params->param1 = 0;
- getObjects()->update(kObjectCompartment1, kEntityPlayer, getObjects()->get(kObjectCompartment1).location, kCursorHandKnock, kCursorHand);
+ getObjects()->update(kObjectCompartment1, kEntityPlayer, getObjects()->get(kObjectCompartment1).status, kCursorHandKnock, kCursorHand);
getEntities()->exitCompartment(kEntityTatiana, kObjectCompartment2, true);
getEntities()->clearSequences(kEntityTatiana);
diff --git a/engines/lastexpress/entities/vassili.cpp b/engines/lastexpress/entities/vassili.cpp
index 4695f8831f..67135c426f 100644
--- a/engines/lastexpress/entities/vassili.cpp
+++ b/engines/lastexpress/entities/vassili.cpp
@@ -112,7 +112,7 @@ IMPLEMENT_FUNCTION(5, Vassili, chapter1Handler)
break;
}
- if (!params->param2 && getObjects()->get(kObjectCompartmentA).location == kObjectLocation1) {
+ if (!params->param2 && getObjects()->get(kObjectCompartmentA).status == kObjectLocation1) {
params->param2 = 1;
getEntities()->drawSequenceLeft(kEntityVassili, "303A");
getObjects()->update(kObjectCompartmentA, kEntityPlayer, kObjectLocationNone, kCursorHandKnock, kCursorHand);
@@ -289,7 +289,7 @@ IMPLEMENT_FUNCTION(9, Vassili, function9)
case kActionDefault:
case kActionDrawScene:
- if ((getObjects()->get(kObjectCompartmentA).location == kObjectLocation2 && getEntities()->isPlayerPosition(kCarRedSleeping, 17))
+ if ((getObjects()->get(kObjectCompartmentA).status == kObjectLocation2 && getEntities()->isPlayerPosition(kCarRedSleeping, 17))
|| getEntities()->isPlayerPosition(kCarRedSleeping, 18)
|| getEntities()->isPlayerPosition(kCarRedSleeping, 37)
|| getEntities()->isPlayerPosition(kCarRedSleeping, 38)
@@ -388,7 +388,7 @@ IMPLEMENT_FUNCTION(12, Vassili, chapter2)
getData()->inventoryItem = kItemNone;
getObjects()->update(kObjectCompartmentA, kEntityPlayer, kObjectLocationNone, kCursorHandKnock, kCursorHand);
- getObjects()->updateLocation2(kObjectCompartmentA, kObjectLocation1);
+ getObjects()->updateModel(kObjectCompartmentA, kObjectModel1);
break;
}
IMPLEMENT_FUNCTION_END
@@ -532,7 +532,7 @@ IMPLEMENT_FUNCTION(16, Vassili, chapter4)
getData()->inventoryItem = kItemNone;
getObjects()->update(kObjectCompartmentA, kEntityPlayer, kObjectLocationNone, kCursorHandKnock, kCursorHand);
- getObjects()->updateLocation2(kObjectCompartmentA, kObjectLocation1);
+ getObjects()->updateModel(kObjectCompartmentA, kObjectModel1);
break;
}
IMPLEMENT_FUNCTION_END
diff --git a/engines/lastexpress/entities/verges.cpp b/engines/lastexpress/entities/verges.cpp
index 68c0813013..f1e980842e 100644
--- a/engines/lastexpress/entities/verges.cpp
+++ b/engines/lastexpress/entities/verges.cpp
@@ -1816,7 +1816,7 @@ IMPLEMENT_FUNCTION(41, Verges, askPassengersToStayInCompartments)
break;
case kActionDefault:
- getObjects()->updateLocation2(kObjectRestaurantCar, kObjectLocation3);
+ getObjects()->updateModel(kObjectRestaurantCar, kObjectModel3);
getData()->car = kCarRedSleeping;
getData()->entityPosition = kPosition_9460;
getData()->location = kLocationInsideCompartment;
diff --git a/engines/lastexpress/entities/yasmin.cpp b/engines/lastexpress/entities/yasmin.cpp
index 1d280f51e0..67963e50f6 100644
--- a/engines/lastexpress/entities/yasmin.cpp
+++ b/engines/lastexpress/entities/yasmin.cpp
@@ -39,22 +39,22 @@ Yasmin::Yasmin(LastExpressEngine *engine) : Entity(engine, kEntityYasmin) {
ADD_CALLBACK_FUNCTION(Yasmin, playSound);
ADD_CALLBACK_FUNCTION(Yasmin, updateFromTime);
ADD_CALLBACK_FUNCTION(Yasmin, updateEntity);
- ADD_CALLBACK_FUNCTION(Yasmin, function6);
- ADD_CALLBACK_FUNCTION(Yasmin, function7);
+ ADD_CALLBACK_FUNCTION(Yasmin, goEtoG);
+ ADD_CALLBACK_FUNCTION(Yasmin, goGtoE);
ADD_CALLBACK_FUNCTION(Yasmin, chapter1);
- ADD_CALLBACK_FUNCTION(Yasmin, chapter1Handler);
+ ADD_CALLBACK_FUNCTION(Yasmin, part1);
ADD_CALLBACK_FUNCTION(Yasmin, function10);
ADD_CALLBACK_FUNCTION(Yasmin, chapter2);
- ADD_CALLBACK_FUNCTION(Yasmin, chapter2Handler);
+ ADD_CALLBACK_FUNCTION(Yasmin, part2);
ADD_CALLBACK_FUNCTION(Yasmin, chapter3);
- ADD_CALLBACK_FUNCTION(Yasmin, chapter3Handler);
+ ADD_CALLBACK_FUNCTION(Yasmin, part3);
ADD_CALLBACK_FUNCTION(Yasmin, chapter4);
- ADD_CALLBACK_FUNCTION(Yasmin, chapter4Handler);
+ ADD_CALLBACK_FUNCTION(Yasmin, part4);
ADD_CALLBACK_FUNCTION(Yasmin, function17);
ADD_CALLBACK_FUNCTION(Yasmin, chapter5);
- ADD_CALLBACK_FUNCTION(Yasmin, chapter5Handler);
+ ADD_CALLBACK_FUNCTION(Yasmin, part5);
ADD_CALLBACK_FUNCTION(Yasmin, function20);
- ADD_CALLBACK_FUNCTION(Yasmin, function21);
+ ADD_CALLBACK_FUNCTION(Yasmin, hiding);
ADD_NULL_FUNCTION();
}
@@ -98,7 +98,7 @@ IMPLEMENT_FUNCTION_II(5, Yasmin, updateEntity, CarIndex, EntityPosition)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(6, Yasmin, function6)
+IMPLEMENT_FUNCTION(6, Yasmin, goEtoG)
switch (savepoint.action) {
default:
break;
@@ -138,7 +138,7 @@ IMPLEMENT_FUNCTION(6, Yasmin, function6)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(7, Yasmin, function7)
+IMPLEMENT_FUNCTION(7, Yasmin, goGtoE)
switch (savepoint.action) {
default:
break;
@@ -184,7 +184,7 @@ IMPLEMENT_FUNCTION(8, Yasmin, chapter1)
break;
case kActionNone:
- Entity::timeCheck(kTimeChapter1, params->param1, WRAP_SETUP_FUNCTION(Yasmin, setup_chapter1Handler));
+ Entity::timeCheck(kTimeChapter1, params->param1, WRAP_SETUP_FUNCTION(Yasmin, setup_part1));
break;
case kActionDefault:
@@ -196,16 +196,16 @@ IMPLEMENT_FUNCTION(8, Yasmin, chapter1)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(9, Yasmin, chapter1Handler)
+IMPLEMENT_FUNCTION(9, Yasmin, part1)
switch (savepoint.action) {
default:
break;
case kActionNone:
- if (Entity::timeCheckCallback(kTime1093500, params->param1, 1, WRAP_SETUP_FUNCTION(Yasmin, setup_function6)))
+ if (Entity::timeCheckCallback(kTime1093500, params->param1, 1, WRAP_SETUP_FUNCTION(Yasmin, setup_goEtoG)))
break;
- if (Entity::timeCheckCallback(kTime1161000, params->param2, 3, WRAP_SETUP_FUNCTION(Yasmin, setup_function7)))
+ if (Entity::timeCheckCallback(kTime1161000, params->param2, 3, WRAP_SETUP_FUNCTION(Yasmin, setup_goGtoE)))
break;
if (Entity::timeCheckPlaySoundUpdatePosition(kTime1162800, params->param3, 4, "Har1102", kPosition_4070))
@@ -217,7 +217,7 @@ IMPLEMENT_FUNCTION(9, Yasmin, chapter1Handler)
if (Entity::timeCheckCallback(kTime1174500, params->param5, 6, "Har1106", WRAP_SETUP_FUNCTION_S(Yasmin, setup_playSound)))
break;
- Entity::timeCheckCallback(kTime1183500, params->param6, 7, WRAP_SETUP_FUNCTION(Yasmin, setup_function6));
+ Entity::timeCheckCallback(kTime1183500, params->param6, 7, WRAP_SETUP_FUNCTION(Yasmin, setup_goEtoG));
break;
case kActionCallback:
@@ -232,7 +232,7 @@ IMPLEMENT_FUNCTION(9, Yasmin, chapter1Handler)
break;
case 2:
- if (Entity::timeCheckCallback(kTime1161000, params->param2, 3, WRAP_SETUP_FUNCTION(Yasmin, setup_function7)))
+ if (Entity::timeCheckCallback(kTime1161000, params->param2, 3, WRAP_SETUP_FUNCTION(Yasmin, setup_goGtoE)))
break;
// Fallback to case 3
@@ -252,7 +252,7 @@ IMPLEMENT_FUNCTION(9, Yasmin, chapter1Handler)
// Fallback to case 6
case 6:
- Entity::timeCheckCallback(kTime1183500, params->param6, 7, WRAP_SETUP_FUNCTION(Yasmin, setup_function6));
+ Entity::timeCheckCallback(kTime1183500, params->param6, 7, WRAP_SETUP_FUNCTION(Yasmin, setup_goEtoG));
break;
}
break;
@@ -282,18 +282,18 @@ IMPLEMENT_FUNCTION(11, Yasmin, chapter2)
getData()->clothes = kClothesDefault;
getData()->inventoryItem = kItemNone;
- setup_chapter2Handler();
+ setup_part2();
}
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(12, Yasmin, chapter2Handler)
+IMPLEMENT_FUNCTION(12, Yasmin, part2)
switch (savepoint.action) {
default:
break;
case kActionNone:
- if (Entity::timeCheckCallback(kTime1759500, params->param1, 1, WRAP_SETUP_FUNCTION(Yasmin, setup_function7)))
+ if (Entity::timeCheckCallback(kTime1759500, params->param1, 1, WRAP_SETUP_FUNCTION(Yasmin, setup_goGtoE)))
break;
if (getState()->time > kTime1800000 && !params->param2) {
@@ -327,7 +327,7 @@ IMPLEMENT_FUNCTION(13, Yasmin, chapter3)
break;
case kActionNone:
- setup_chapter3Handler();
+ setup_part3();
break;
case kActionDefault:
@@ -341,19 +341,19 @@ IMPLEMENT_FUNCTION(13, Yasmin, chapter3)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(14, Yasmin, chapter3Handler)
+IMPLEMENT_FUNCTION(14, Yasmin, part3)
switch (savepoint.action) {
default:
break;
case kActionNone:
- if (Entity::timeCheckCallback(kTime2062800, params->param1, 1, WRAP_SETUP_FUNCTION(Yasmin, setup_function6)))
+ if (Entity::timeCheckCallback(kTime2062800, params->param1, 1, WRAP_SETUP_FUNCTION(Yasmin, setup_goEtoG)))
break;
- if (Entity::timeCheckCallback(kTime2106000, params->param2, 2, WRAP_SETUP_FUNCTION(Yasmin, setup_function7)))
+ if (Entity::timeCheckCallback(kTime2106000, params->param2, 2, WRAP_SETUP_FUNCTION(Yasmin, setup_goGtoE)))
break;
- Entity::timeCheckCallback(kTime2160000, params->param3, 3, WRAP_SETUP_FUNCTION(Yasmin, setup_function6));
+ Entity::timeCheckCallback(kTime2160000, params->param3, 3, WRAP_SETUP_FUNCTION(Yasmin, setup_goEtoG));
break;
case kActionCallback:
@@ -362,12 +362,12 @@ IMPLEMENT_FUNCTION(14, Yasmin, chapter3Handler)
break;
case 1:
- if (Entity::timeCheckCallback(kTime2106000, params->param2, 2, WRAP_SETUP_FUNCTION(Yasmin, setup_function7)))
+ if (Entity::timeCheckCallback(kTime2106000, params->param2, 2, WRAP_SETUP_FUNCTION(Yasmin, setup_goGtoE)))
break;
// Fallback to case 2
case 2:
- Entity::timeCheckCallback(kTime2160000, params->param3, 3, WRAP_SETUP_FUNCTION(Yasmin, setup_function6));
+ Entity::timeCheckCallback(kTime2160000, params->param3, 3, WRAP_SETUP_FUNCTION(Yasmin, setup_goEtoG));
break;
}
break;
@@ -381,7 +381,7 @@ IMPLEMENT_FUNCTION(15, Yasmin, chapter4)
break;
case kActionNone:
- setup_chapter4Handler();
+ setup_part4();
break;
case kActionDefault:
@@ -393,16 +393,16 @@ IMPLEMENT_FUNCTION(15, Yasmin, chapter4)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(16, Yasmin, chapter4Handler)
+IMPLEMENT_FUNCTION(16, Yasmin, part4)
switch (savepoint.action) {
default:
break;
case kActionNone:
- if (Entity::timeCheckCallback(kTime2457000, params->param1, 1, WRAP_SETUP_FUNCTION(Yasmin, setup_function7)))
+ if (Entity::timeCheckCallback(kTime2457000, params->param1, 1, WRAP_SETUP_FUNCTION(Yasmin, setup_goGtoE)))
break;
- Entity::timeCheckCallback(kTime2479500, params->param2, 3, WRAP_SETUP_FUNCTION(Yasmin, setup_function6));
+ Entity::timeCheckCallback(kTime2479500, params->param2, 3, WRAP_SETUP_FUNCTION(Yasmin, setup_goEtoG));
break;
case kActionCallback:
@@ -417,7 +417,7 @@ IMPLEMENT_FUNCTION(16, Yasmin, chapter4Handler)
break;
case 2:
- Entity::timeCheckCallback(kTime2479500, params->param2, 3, WRAP_SETUP_FUNCTION(Yasmin, setup_function6));
+ Entity::timeCheckCallback(kTime2479500, params->param2, 3, WRAP_SETUP_FUNCTION(Yasmin, setup_goEtoG));
break;
}
break;
@@ -437,7 +437,7 @@ IMPLEMENT_FUNCTION(18, Yasmin, chapter5)
break;
case kActionNone:
- setup_chapter5Handler();
+ setup_part5();
break;
case kActionDefault:
@@ -453,7 +453,7 @@ IMPLEMENT_FUNCTION(18, Yasmin, chapter5)
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(19, Yasmin, chapter5Handler)
+IMPLEMENT_FUNCTION(19, Yasmin, part5)
if (savepoint.action == kActionProceedChapter5)
setup_function20();
IMPLEMENT_FUNCTION_END
@@ -468,7 +468,7 @@ IMPLEMENT_FUNCTION(20, Yasmin, function20)
if (!Entity::updateParameter(params->param1, getState()->time, 2700))
break;
- setup_function21();
+ setup_hiding();
break;
case kActionDefault:
@@ -479,14 +479,14 @@ IMPLEMENT_FUNCTION(20, Yasmin, function20)
case kActionDrawScene:
if (getEntities()->isInsideTrainCar(kEntityPlayer, kCarGreenSleeping)) {
- setup_function21();
+ setup_hiding();
}
break;
}
IMPLEMENT_FUNCTION_END
//////////////////////////////////////////////////////////////////////////
-IMPLEMENT_FUNCTION(21, Yasmin, function21)
+IMPLEMENT_FUNCTION(21, Yasmin, hiding)
switch (savepoint.action) {
default:
break;
diff --git a/engines/lastexpress/entities/yasmin.h b/engines/lastexpress/entities/yasmin.h
index b1413f5c2f..8fa8c10bb1 100644
--- a/engines/lastexpress/entities/yasmin.h
+++ b/engines/lastexpress/entities/yasmin.h
@@ -70,8 +70,8 @@ public:
*/
DECLARE_FUNCTION_2(updateEntity, CarIndex car, EntityPosition entityPosition)
- DECLARE_FUNCTION(function6)
- DECLARE_FUNCTION(function7)
+ DECLARE_FUNCTION(goEtoG)
+ DECLARE_FUNCTION(goGtoE)
/**
* Setup Chapter 1
@@ -81,7 +81,7 @@ public:
/**
* Handle Chapter 1 events
*/
- DECLARE_FUNCTION(chapter1Handler)
+ DECLARE_FUNCTION(part1)
DECLARE_FUNCTION(function10)
@@ -93,7 +93,7 @@ public:
/**
* Handle Chapter 2 events
*/
- DECLARE_FUNCTION(chapter2Handler)
+ DECLARE_FUNCTION(part2)
/**
* Setup Chapter 3
@@ -103,7 +103,7 @@ public:
/**
* Handle Chapter 3 events
*/
- DECLARE_FUNCTION(chapter3Handler)
+ DECLARE_FUNCTION(part3)
/**
* Setup Chapter 4
@@ -113,7 +113,7 @@ public:
/**
* Handle Chapter 4 events
*/
- DECLARE_FUNCTION(chapter4Handler)
+ DECLARE_FUNCTION(part4)
DECLARE_FUNCTION(function17)
@@ -125,10 +125,10 @@ public:
/**
* Handle Chapter 5 events
*/
- DECLARE_FUNCTION(chapter5Handler)
+ DECLARE_FUNCTION(part5)
DECLARE_FUNCTION(function20)
- DECLARE_FUNCTION(function21)
+ DECLARE_FUNCTION(hiding)
DECLARE_NULL_FUNCTION()
};
diff --git a/engines/lastexpress/fight/fight.cpp b/engines/lastexpress/fight/fight.cpp
index 49a9b85657..944b1cb4ac 100644
--- a/engines/lastexpress/fight/fight.cpp
+++ b/engines/lastexpress/fight/fight.cpp
@@ -222,7 +222,7 @@ Fight::FightEndType Fight::setup(FightType type) {
break;
case kFightMilos:
- sceneIndex = (getObjects()->get(kObjectCompartment1).location2 < kObjectLocation3) ? kSceneFightMilos : kSceneFightMilosBedOpened;
+ sceneIndex = (getObjects()->get(kObjectCompartment1).model < kObjectModel3) ? kSceneFightMilos : kSceneFightMilosBedOpened;
break;
case kFightAnna:
diff --git a/engines/lastexpress/game/action.cpp b/engines/lastexpress/game/action.cpp
index 796abf2ce7..c6ea6f6c8a 100644
--- a/engines/lastexpress/game/action.cpp
+++ b/engines/lastexpress/game/action.cpp
@@ -351,42 +351,42 @@ Action::Action(LastExpressEngine *engine) : _engine(engine) {
ADD_ACTION(savePoint);
ADD_ACTION(playSound);
ADD_ACTION(playMusic);
- ADD_ACTION(knock);
+ ADD_ACTION(knock); // 5
ADD_ACTION(compartment);
ADD_ACTION(playSounds);
ADD_ACTION(playAnimation);
ADD_ACTION(openCloseObject);
- ADD_ACTION(updateObjetLocation2);
- ADD_ACTION(setItemLocation);
- ADD_ACTION(knockNoSound);
+ ADD_ACTION(setModel); // 10
+ ADD_ACTION(setItem);
+ ADD_ACTION(knockInside);
ADD_ACTION(pickItem);
ADD_ACTION(dropItem);
- ADD_ACTION(dummy);
+ ADD_ACTION(dummy); // 15
ADD_ACTION(enterCompartment);
ADD_ACTION(dummy);
- ADD_ACTION(getOutsideTrain);
- ADD_ACTION(slip);
- ADD_ACTION(getInsideTrain);
- ADD_ACTION(climbUpTrain);
+ ADD_ACTION(leanOutWindow);
+ ADD_ACTION(almostFall);
+ ADD_ACTION(climbInWindow); // 20
+ ADD_ACTION(climbLadder);
ADD_ACTION(climbDownTrain);
- ADD_ACTION(jumpUpDownTrain);
- ADD_ACTION(unbound);
- ADD_ACTION(25);
- ADD_ACTION(26);
+ ADD_ACTION(kronosSanctum);
+ ADD_ACTION(escapeBaggage);
+ ADD_ACTION(enterBaggage); // 25
+ ADD_ACTION(bombPuzzle);
ADD_ACTION(27);
- ADD_ACTION(concertSitCough);
+ ADD_ACTION(kronosConcert);
ADD_ACTION(29);
- ADD_ACTION(catchBeetle);
+ ADD_ACTION(catchBeetle); // 30
ADD_ACTION(exitCompartment);
- ADD_ACTION(32);
- ADD_ACTION(useWhistle);
+ ADD_ACTION(outsideTrain);
+ ADD_ACTION(firebirdPuzzle);
ADD_ACTION(openMatchBox);
- ADD_ACTION(openBed);
+ ADD_ACTION(openBed); // 35
ADD_ACTION(dummy);
ADD_ACTION(dialog);
ADD_ACTION(eggBox);
ADD_ACTION(39);
- ADD_ACTION(bed);
+ ADD_ACTION(bed); // 40
ADD_ACTION(playMusicChapter);
ADD_ACTION(playMusicChapterSetupTrain);
ADD_ACTION(switchChapter);
@@ -521,7 +521,7 @@ IMPLEMENT_ACTION(compartment)
return kSceneNone;
}
- ObjectLocation location = getObjects()->get(compartment).location;
+ ObjectLocation location = getObjects()->get(compartment).status;
if (location == kObjectLocation1 || location == kObjectLocation3 || getEntities()->checkFields2(compartment)) {
if (location != kObjectLocation1 || getEntities()->checkFields2(compartment)
@@ -625,14 +625,14 @@ IMPLEMENT_ACTION(openCloseObject)
//////////////////////////////////////////////////////////////////////////
// Action 10
-IMPLEMENT_ACTION(updateObjetLocation2)
+IMPLEMENT_ACTION(setModel)
ObjectIndex object = (ObjectIndex)hotspot.param1;
- ObjectLocation location = (ObjectLocation)hotspot.param2;
+ ObjectModel model = (ObjectModel)hotspot.param2;
if (object >= kObjectMax)
return kSceneInvalid;
- getObjects()->updateLocation2(object, location);
+ getObjects()->updateModel(object, model);
if (object != kObject112 || getSoundQueue()->isBuffered("LIB096")) {
if (object == 1)
@@ -646,13 +646,13 @@ IMPLEMENT_ACTION(updateObjetLocation2)
//////////////////////////////////////////////////////////////////////////
// Action 11
-IMPLEMENT_ACTION(setItemLocation)
+IMPLEMENT_ACTION(setItem)
InventoryItem item = (InventoryItem)hotspot.param1;
if (item >= kPortraitOriginal)
return kSceneInvalid;
Inventory::InventoryEntry *entry = getInventory()->get(item);
- if (entry->isPresent)
+ if (entry->inPocket)
return kSceneInvalid;
entry->location = (ObjectLocation)hotspot.param2;
@@ -667,7 +667,7 @@ IMPLEMENT_ACTION(setItemLocation)
//////////////////////////////////////////////////////////////////////////
// Action 12
-IMPLEMENT_ACTION(knockNoSound)
+IMPLEMENT_ACTION(knockInside)
ObjectIndex object = (ObjectIndex)hotspot.param1;
if (object >= kObjectMax)
return kSceneInvalid;
@@ -726,7 +726,7 @@ IMPLEMENT_ACTION(pickItem)
break;
case kItemBomb:
- RESET_ENTITY_STATE(kEntityAbbot, Abbot, setup_pickBomb);
+ RESET_ENTITY_STATE(kEntityAbbot, Abbot, setup_catchCath);
break;
case kItemBriefcase:
@@ -808,7 +808,7 @@ IMPLEMENT_ACTION(dropItem)
//////////////////////////////////////////////////////////////////////////
// Action 16
IMPLEMENT_ACTION(enterCompartment)
- if (getObjects()->get(kObjectCompartment1).location == kObjectLocation1 || getObjects()->get(kObjectCompartment1).location == kObjectLocation3 || getInventory()->getSelectedItem() == kItemKey)
+ if (getObjects()->get(kObjectCompartment1).status == kObjectLocation1 || getObjects()->get(kObjectCompartment1).status == kObjectLocation3 || getInventory()->getSelectedItem() == kItemKey)
return action_compartment(hotspot);
if (getProgress().eventCorpseFound) {
@@ -842,12 +842,12 @@ IMPLEMENT_ACTION(enterCompartment)
//////////////////////////////////////////////////////////////////////////
// Action 18
-IMPLEMENT_ACTION(getOutsideTrain)
+IMPLEMENT_ACTION(leanOutWindow)
ObjectIndex object = (ObjectIndex)hotspot.param1;
- if ((getEvent(kEventCathLookOutsideWindowDay) || getEvent(kEventCathLookOutsideWindowNight) || getObjects()->get(kObjectCompartment1).location2 == kObjectLocation1)
+ if ((getEvent(kEventCathLookOutsideWindowDay) || getEvent(kEventCathLookOutsideWindowNight) || getObjects()->get(kObjectCompartment1).model == kObjectModel1)
&& getProgress().isTrainRunning
- && (object != kObjectOutsideAnnaCompartment || (!getEntities()->isInsideCompartment(kEntityRebecca, kCarRedSleeping, kPosition_4840) && getObjects()->get(kObjectOutsideBetweenCompartments).location == kObjectLocation2))
+ && (object != kObjectOutsideAnnaCompartment || (!getEntities()->isInsideCompartment(kEntityRebecca, kCarRedSleeping, kPosition_4840) && getObjects()->get(kObjectOutsideBetweenCompartments).status == kObjectLocation2))
&& getInventory()->getSelectedItem() != kItemFirebird
&& getInventory()->getSelectedItem() != kItemBriefcase) {
@@ -887,7 +887,7 @@ IMPLEMENT_ACTION(getOutsideTrain)
//////////////////////////////////////////////////////////////////////////
// Action 19
-IMPLEMENT_ACTION(slip)
+IMPLEMENT_ACTION(almostFall)
switch((ObjectIndex)hotspot.param1) {
default:
return kSceneInvalid;
@@ -911,7 +911,7 @@ IMPLEMENT_ACTION(slip)
//////////////////////////////////////////////////////////////////////////
// Action 20
-IMPLEMENT_ACTION(getInsideTrain)
+IMPLEMENT_ACTION(climbInWindow)
switch ((ObjectIndex)hotspot.param1) {
default:
return kSceneInvalid;
@@ -937,7 +937,7 @@ IMPLEMENT_ACTION(getInsideTrain)
//////////////////////////////////////////////////////////////////////////
// Action 21
-IMPLEMENT_ACTION(climbUpTrain)
+IMPLEMENT_ACTION(climbLadder)
byte action = hotspot.param1;
if (action != 1 && action != 2)
@@ -999,7 +999,7 @@ IMPLEMENT_ACTION(climbDownTrain)
//////////////////////////////////////////////////////////////////////////
// Action 23
-IMPLEMENT_ACTION(jumpUpDownTrain)
+IMPLEMENT_ACTION(kronosSanctum)
switch (hotspot.param1) {
default:
break;
@@ -1038,7 +1038,7 @@ IMPLEMENT_ACTION(jumpUpDownTrain)
//////////////////////////////////////////////////////////////////////////
// Action 24
-IMPLEMENT_ACTION(unbound)
+IMPLEMENT_ACTION(escapeBaggage)
byte action = hotspot.param1;
switch (action) {
@@ -1086,7 +1086,7 @@ IMPLEMENT_ACTION(unbound)
//////////////////////////////////////////////////////////////////////////
// Action 25
-IMPLEMENT_ACTION(25)
+IMPLEMENT_ACTION(enterBaggage)
switch(hotspot.param1) {
default:
break;
@@ -1103,7 +1103,7 @@ IMPLEMENT_ACTION(25)
case 3:
getSound()->playSoundEvent(kEntityPlayer, 43);
if (!getInventory()->hasItem(kItemKey) && !getEvent(kEventAnnaBaggageArgument)) {
- RESET_ENTITY_STATE(kEntityAnna, Anna, setup_baggage);
+ RESET_ENTITY_STATE(kEntityAnna, Anna, setup_baggageFight);
return kSceneNone;
}
break;
@@ -1114,7 +1114,7 @@ IMPLEMENT_ACTION(25)
//////////////////////////////////////////////////////////////////////////
// Action 26
-IMPLEMENT_ACTION(26)
+IMPLEMENT_ACTION(bombPuzzle)
switch(hotspot.param1) {
default:
return kSceneInvalid;
@@ -1168,7 +1168,7 @@ IMPLEMENT_ACTION(27)
//////////////////////////////////////////////////////////////////////////
// Action 28
-IMPLEMENT_ACTION(concertSitCough)
+IMPLEMENT_ACTION(kronosConcert)
switch(hotspot.param1) {
default:
return kSceneInvalid;
@@ -1224,7 +1224,7 @@ IMPLEMENT_ACTION(exitCompartment)
getProgress().field_30 = 1;
}
- getObjects()->updateLocation2(kObjectCompartment1, (ObjectLocation)hotspot.param2);
+ getObjects()->updateModel(kObjectCompartment1, (ObjectModel)hotspot.param2);
// fall to case enterCompartment action
return action_enterCompartment(hotspot);
@@ -1232,7 +1232,7 @@ IMPLEMENT_ACTION(exitCompartment)
//////////////////////////////////////////////////////////////////////////
// Action 32
-IMPLEMENT_ACTION(32)
+IMPLEMENT_ACTION(outsideTrain)
switch(hotspot.param1) {
default:
break;
@@ -1273,7 +1273,7 @@ IMPLEMENT_ACTION(32)
//////////////////////////////////////////////////////////////////////////
// Action 33
-IMPLEMENT_ACTION(useWhistle)
+IMPLEMENT_ACTION(firebirdPuzzle)
EventIndex evt = kEventNone;
SceneIndex sceneIndex = kSceneInvalid;
@@ -1335,7 +1335,7 @@ IMPLEMENT_ACTION(useWhistle)
IMPLEMENT_ACTION(openMatchBox)
// If the match is already in the inventory, do nothing
if (!getInventory()->get(kItemMatch)->location
- || getInventory()->get(kItemMatch)->isPresent)
+ || getInventory()->get(kItemMatch)->inPocket)
return kSceneInvalid;
getInventory()->addItem(kItemMatch);
@@ -1392,7 +1392,7 @@ IMPLEMENT_ACTION(39)
IMPLEMENT_ACTION(bed)
getSound()->playSoundEvent(kEntityPlayer, 85);
// falls to case knockNoSound
- return action_knockNoSound(hotspot);
+ return action_knockInside(hotspot);
}
//////////////////////////////////////////////////////////////////////////
@@ -1724,7 +1724,7 @@ bool Action::handleOtherCompartment(ObjectIndex object, bool doPlaySound, bool d
}
void Action::playCompartmentSoundEvents(ObjectIndex object) const {
- if (getObjects()->get(object).location == kObjectLocation1 || getObjects()->get(object).location == kObjectLocation3 || getEntities()->checkFields2(object)) {
+ if (getObjects()->get(object).status == kObjectLocation1 || getObjects()->get(object).status == kObjectLocation3 || getEntities()->checkFields2(object)) {
getSound()->playSoundEvent(kEntityPlayer, 13);
} else {
getSound()->playSoundEvent(kEntityPlayer, 14);
@@ -1757,7 +1757,7 @@ CursorStyle Action::getCursor(const SceneHotspot &hotspot) const {
if (object >= kObjectMax)
return kCursorNormal;
else
- return (CursorStyle)getObjects()->get(object).cursor;
+ return (CursorStyle)getObjects()->get(object).windowCursor;
case SceneHotspot::kAction12:
debugC(2, kLastExpressDebugScenes, "================================= OBJECT %03d =================================", object);
@@ -1765,7 +1765,7 @@ CursorStyle Action::getCursor(const SceneHotspot &hotspot) const {
return kCursorNormal;
if (getObjects()->get(object).entity)
- return (CursorStyle)getObjects()->get(object).cursor;
+ return (CursorStyle)getObjects()->get(object).windowCursor;
else
return kCursorNormal;
@@ -1774,7 +1774,7 @@ CursorStyle Action::getCursor(const SceneHotspot &hotspot) const {
if (object >= kObjectCompartmentA)
return kCursorNormal;
- if ((!getInventory()->getSelectedItem() || getInventory()->getSelectedEntry()->manualSelect)
+ if ((!getInventory()->getSelectedItem() || getInventory()->getSelectedEntry()->floating)
&& (object != kObject21 || getProgress().eventCorpseMovedFromFloor))
return kCursorHand;
else
@@ -1806,8 +1806,8 @@ CursorStyle Action::getCursor(const SceneHotspot &hotspot) const {
return kCursorNormal;
case SceneHotspot::kActionEnterCompartment:
- if ((getInventory()->getSelectedItem() != kItemKey || getObjects()->get(kObjectCompartment1).location)
- && (getObjects()->get(kObjectCompartment1).location != 1 || !getInventory()->hasItem(kItemKey)
+ if ((getInventory()->getSelectedItem() != kItemKey || getObjects()->get(kObjectCompartment1).status)
+ && (getObjects()->get(kObjectCompartment1).status != 1 || !getInventory()->hasItem(kItemKey)
|| (getInventory()->getSelectedItem() != kItemFirebird && getInventory()->getSelectedItem() != kItemBriefcase)))
goto LABEL_KEY;
@@ -1817,13 +1817,13 @@ CursorStyle Action::getCursor(const SceneHotspot &hotspot) const {
if (getProgress().jacket != kJacketGreen)
return kCursorNormal;
- if ((getEvent(kEventCathLookOutsideWindowDay) || getEvent(kEventCathLookOutsideWindowNight) || getObjects()->get(kObjectCompartment1).location2 == kObjectLocation1)
+ if ((getEvent(kEventCathLookOutsideWindowDay) || getEvent(kEventCathLookOutsideWindowNight) || getObjects()->get(kObjectCompartment1).model == kObjectModel1)
&& getProgress().isTrainRunning
- && (object != kObjectOutsideAnnaCompartment || (getEntities()->isInsideCompartment(kEntityRebecca, kCarRedSleeping, kPosition_4840) && getObjects()->get(kObjectOutsideBetweenCompartments).location == 2))
+ && (object != kObjectOutsideAnnaCompartment || (getEntities()->isInsideCompartment(kEntityRebecca, kCarRedSleeping, kPosition_4840) && getObjects()->get(kObjectOutsideBetweenCompartments).status == 2))
&& getInventory()->getSelectedItem() != kItemBriefcase && getInventory()->getSelectedItem() != kItemFirebird)
return kCursorForward;
- return (getObjects()->get(kObjectCompartment1).location2 < kObjectLocation2) ? kCursorNormal : kCursorMagnifier;
+ return (getObjects()->get(kObjectCompartment1).model < kObjectModel2) ? kCursorNormal : kCursorMagnifier;
case SceneHotspot::kActionSlip:
return (getProgress().field_C8 < 1) ? kCursorNormal : kCursorLeft;
@@ -1841,7 +1841,7 @@ CursorStyle Action::getCursor(const SceneHotspot &hotspot) const {
if (object != kObjectCompartment1)
return kCursorNormal;
- return (getObjects()->get(kObjectCeiling).location < kObjectLocation1) ? kCursorHand : kCursorNormal;
+ return (getObjects()->get(kObjectCeiling).status < kObjectLocation1) ? kCursorHand : kCursorNormal;
case SceneHotspot::kActionUnbound:
if (hotspot.param2 != 2)
@@ -1904,11 +1904,11 @@ LABEL_KEY:
if (getInventory()->getSelectedItem() != kItemKey
|| getObjects()->get(object).entity
- || getObjects()->get(object).location != 1
- || !getObjects()->get(object).cursor2
+ || getObjects()->get(object).status != 1
+ || !getObjects()->get(object).handleCursor
|| getEntities()->isInsideCompartments(kEntityPlayer)
|| getEntities()->checkFields2(object))
- return (CursorStyle)getObjects()->get(object).cursor2;
+ return (CursorStyle)getObjects()->get(object).handleCursor;
else
return (CursorStyle)getInventory()->get(kItemKey)->cursor;
}
diff --git a/engines/lastexpress/game/action.h b/engines/lastexpress/game/action.h
index e1a4a53224..3dad51d0d3 100644
--- a/engines/lastexpress/game/action.h
+++ b/engines/lastexpress/game/action.h
@@ -82,28 +82,28 @@ private:
DECLARE_ACTION(playSounds);
DECLARE_ACTION(playAnimation);
DECLARE_ACTION(openCloseObject);
- DECLARE_ACTION(updateObjetLocation2);
- DECLARE_ACTION(setItemLocation);
- DECLARE_ACTION(knockNoSound);
+ DECLARE_ACTION(setModel);
+ DECLARE_ACTION(setItem);
+ DECLARE_ACTION(knockInside);
DECLARE_ACTION(pickItem);
DECLARE_ACTION(dropItem);
DECLARE_ACTION(enterCompartment);
- DECLARE_ACTION(getOutsideTrain);
- DECLARE_ACTION(slip);
- DECLARE_ACTION(getInsideTrain);
- DECLARE_ACTION(climbUpTrain);
+ DECLARE_ACTION(leanOutWindow);
+ DECLARE_ACTION(almostFall);
+ DECLARE_ACTION(climbInWindow);
+ DECLARE_ACTION(climbLadder);
DECLARE_ACTION(climbDownTrain);
- DECLARE_ACTION(jumpUpDownTrain);
- DECLARE_ACTION(unbound);
- DECLARE_ACTION(25);
- DECLARE_ACTION(26);
+ DECLARE_ACTION(kronosSanctum);
+ DECLARE_ACTION(escapeBaggage);
+ DECLARE_ACTION(enterBaggage);
+ DECLARE_ACTION(bombPuzzle);
DECLARE_ACTION(27);
- DECLARE_ACTION(concertSitCough);
+ DECLARE_ACTION(kronosConcert);
DECLARE_ACTION(29);
DECLARE_ACTION(catchBeetle);
DECLARE_ACTION(exitCompartment);
- DECLARE_ACTION(32);
- DECLARE_ACTION(useWhistle);
+ DECLARE_ACTION(outsideTrain);
+ DECLARE_ACTION(firebirdPuzzle);
DECLARE_ACTION(openMatchBox);
DECLARE_ACTION(openBed);
DECLARE_ACTION(dialog);
diff --git a/engines/lastexpress/game/inventory.cpp b/engines/lastexpress/game/inventory.cpp
index 2f1b0a8e76..11a76a77f0 100644
--- a/engines/lastexpress/game/inventory.cpp
+++ b/engines/lastexpress/game/inventory.cpp
@@ -97,19 +97,19 @@ void Inventory::init() {
_entries[kItemPassengerList].isSelectable = true;
// Auto selection
- _entries[kItem2].manualSelect = false;
- _entries[kItem3].manualSelect = false;
- _entries[kItem5].manualSelect = false;
- _entries[kItem7].manualSelect = false;
- _entries[kItem9].manualSelect = false;
- _entries[kItem11].manualSelect = false;
- _entries[kItemBeetle].manualSelect = false;
- _entries[kItem17].manualSelect = false;
- _entries[kItemFirebird].manualSelect = false;
- _entries[kItemBriefcase].manualSelect = false;
- _entries[kItemCorpse].manualSelect = false;
- _entries[kItemGreenJacket].manualSelect = false;
- _entries[kItem22].manualSelect = false;
+ _entries[kItem2].floating = false;
+ _entries[kItem3].floating = false;
+ _entries[kItem5].floating = false;
+ _entries[kItem7].floating = false;
+ _entries[kItem9].floating = false;
+ _entries[kItem11].floating = false;
+ _entries[kItemBeetle].floating = false;
+ _entries[kItem17].floating = false;
+ _entries[kItemFirebird].floating = false;
+ _entries[kItemBriefcase].floating = false;
+ _entries[kItemCorpse].floating = false;
+ _entries[kItemGreenJacket].floating = false;
+ _entries[kItem22].floating = false;
// Scene
_entries[kItemMatchBox].scene = kSceneMatchbox;
@@ -123,8 +123,8 @@ void Inventory::init() {
_entries[kItemBriefcase].scene = kSceneBriefcase;
// Has item
- _entries[kItemTelegram].isPresent = true;
- _entries[kItemArticle].isPresent = true;
+ _entries[kItemTelegram].inPocket = true;
+ _entries[kItemArticle].inPocket = true;
_selectedItem = kItemNone;
}
@@ -298,7 +298,7 @@ void Inventory::handleMouseEvent(const Common::Event &ev) {
getScenes()->loadScene(entry.scene);
}
- if (entry.field_2)
+ if (entry.usable)
selectItem((InventoryItem)index);
else
drawSelectedItem();
@@ -346,7 +346,7 @@ void Inventory::handleMouseEvent(const Common::Event &ev) {
if (!getProgress().field_84
&& getEntityData(kEntityPlayer)->location != kLocationOutsideTrain
&& getProgress().field_18 != 4
- && (_selectedItem == kItemNone || get(_selectedItem)->manualSelect || getState()->sceneUseBackup)) {
+ && (_selectedItem == kItemNone || get(_selectedItem)->floating || getState()->sceneUseBackup)) {
// Draw inventory contents when clicking on portrait
if (ev.type == Common::EVENT_LBUTTONDOWN) {
@@ -363,7 +363,7 @@ void Inventory::handleMouseEvent(const Common::Event &ev) {
close();
// Select item
- if (_selectedItem == kItemNone || get(_selectedItem)->manualSelect) {
+ if (_selectedItem == kItemNone || get(_selectedItem)->floating) {
_selectedItem = getFirstExaminableItem();
if (_selectedItem != kItemNone)
@@ -447,11 +447,11 @@ void Inventory::addItem(InventoryItem item) {
if (item >= kPortraitOriginal)
return;
- get(item)->isPresent = true;
+ get(item)->inPocket = true;
get(item)->location = kObjectLocationNone;
// Auto-select item if necessary
- if (get(item)->cursor && !get(item)->manualSelect) {
+ if (get(item)->cursor && !get(item)->floating) {
_selectedItem = item;
drawItem(get(_selectedItem)->cursor, 44, 0);
askForRedraw();
@@ -462,7 +462,7 @@ void Inventory::removeItem(InventoryItem item, ObjectLocation newLocation) {
if (item >= kPortraitOriginal)
return;
- get(item)->isPresent = false;
+ get(item)->inPocket = false;
get(item)->location = newLocation;
if (get(item)->cursor == get(_selectedItem)->cursor) {
@@ -473,7 +473,7 @@ void Inventory::removeItem(InventoryItem item, ObjectLocation newLocation) {
}
bool Inventory::hasItem(InventoryItem item) {
- if (get(item)->isPresent && item < kPortraitOriginal)
+ if (get(item)->inPocket && item < kPortraitOriginal)
return true;
return false;
@@ -537,7 +537,7 @@ InventoryItem Inventory::getFirstExaminableItem() const {
int index = 0;
InventoryEntry entry = _entries[index];
- while (!entry.isPresent || !entry.cursor || entry.manualSelect) {
+ while (!entry.inPocket || !entry.cursor || entry.floating) {
index++;
entry = _entries[index];
@@ -676,7 +676,7 @@ void Inventory::drawItem(CursorStyle id, uint16 x, uint16 y, int16 brightnessInd
void Inventory::drawSelectedItem() {
// Draw the selected item if any
- if (!_selectedItem || get(_selectedItem)->manualSelect) {
+ if (!_selectedItem || get(_selectedItem)->floating) {
_selectedItem = getFirstExaminableItem();
if (_selectedItem) {
@@ -703,10 +703,10 @@ void Inventory::open() {
// Draw at most 11 items in the inventory
_itemsShown = 0;
for (int i = 1; i < ARRAYSIZE(_entries); i++) {
- if (!_entries[i].isPresent)
+ if (!_entries[i].inPocket)
continue;
- if (!_entries[i].manualSelect)
+ if (!_entries[i].floating)
continue;
if (_itemsShown < 11) {
@@ -747,10 +747,10 @@ uint32 Inventory::getItemIndex(uint32 currentIndex) const {
uint32 count = 0;
for (uint32 i = 1; i < ARRAYSIZE(_entries); i++) {
- if (!_entries[i].isPresent)
+ if (!_entries[i].inPocket)
continue;
- if (!_entries[i].manualSelect)
+ if (!_entries[i].floating)
continue;
if (count < 11) {
diff --git a/engines/lastexpress/game/inventory.h b/engines/lastexpress/game/inventory.h
index b1019a43c6..242dfc30cc 100644
--- a/engines/lastexpress/game/inventory.h
+++ b/engines/lastexpress/game/inventory.h
@@ -56,33 +56,33 @@ public:
struct InventoryEntry : Common::Serializable {
CursorStyle cursor;
SceneIndex scene;
- byte field_2;
+ byte usable;
bool isSelectable;
- bool isPresent;
- bool manualSelect;
+ bool inPocket;
+ bool floating;
ObjectLocation location;
InventoryEntry() {
cursor = kCursorNormal;
scene = kSceneNone;
- field_2 = 0;
+ usable = 0;
isSelectable = false;
- isPresent = false;
- manualSelect = true;
+ inPocket = false;
+ floating = true;
location = kObjectLocationNone;
}
Common::String toString() {
- return Common::String::format("{ %d - %d - %d - %d - %d - %d - %d }", cursor, scene, field_2, isSelectable, isPresent, manualSelect, location);
+ return Common::String::format("{ %d - %d - %d - %d - %d - %d - %d }", cursor, scene, usable, isSelectable, inPocket, floating, location);
}
void saveLoadWithSerializer(Common::Serializer &s) {
s.syncAsByte(cursor);
s.syncAsByte(scene);
- s.syncAsByte(field_2);
+ s.syncAsByte(usable);
s.syncAsByte(isSelectable);
- s.syncAsByte(isPresent);
- s.syncAsByte(manualSelect);
+ s.syncAsByte(inPocket);
+ s.syncAsByte(floating);
s.syncAsByte(location);
}
};
diff --git a/engines/lastexpress/game/logic.cpp b/engines/lastexpress/game/logic.cpp
index d24fb9b598..1a9c6b4123 100644
--- a/engines/lastexpress/game/logic.cpp
+++ b/engines/lastexpress/game/logic.cpp
@@ -468,7 +468,7 @@ void Logic::switchChapter() const {
case kChapter3:
getInventory()->get(kItemFirebird)->location = kObjectLocation4;
- getInventory()->get(kItemFirebird)->isPresent = false;
+ getInventory()->get(kItemFirebird)->inPocket = false;
getInventory()->get(kItem11)->location = kObjectLocation1;
getInventory()->addItem(kItemWhistle);
getInventory()->addItem(kItemKey);
diff --git a/engines/lastexpress/game/object.cpp b/engines/lastexpress/game/object.cpp
index 2fcdde12b9..ad13a65199 100644
--- a/engines/lastexpress/game/object.cpp
+++ b/engines/lastexpress/game/object.cpp
@@ -32,7 +32,7 @@
namespace LastExpress {
Common::String Objects::Object::toString() {
- return Common::String::format("{ %s - %d - %d - %d - %d }", ENTITY_NAME(entity), location, cursor, cursor2, location2);
+ return Common::String::format("{ %s - %d - %d - %d - %d }", ENTITY_NAME(entity), status, windowCursor, handleCursor, model);
}
Objects::Objects(LastExpressEngine *engine) : _engine(engine) {}
@@ -44,24 +44,24 @@ const Objects::Object Objects::get(ObjectIndex index) const {
return _objects[index];
}
-void Objects::update(ObjectIndex index, EntityIndex entity, ObjectLocation location, CursorStyle cursor, CursorStyle cursor2) {
+void Objects::update(ObjectIndex index, EntityIndex entity, ObjectLocation status, CursorStyle windowCursor, CursorStyle handleCursor) {
if (index >= kObjectMax)
return;
Object *object = &_objects[index];
// Store original location
- ObjectLocation original_location = object->location;
+ ObjectLocation original_status = object->status;
// Update entity
object->entity = entity;
- object->location = location;
+ object->status = status;
- if (cursor != kCursorKeepValue || cursor2 != kCursorKeepValue) {
- if (cursor != kCursorKeepValue)
- object->cursor = cursor;
- if (cursor2 != kCursorKeepValue)
- object->cursor2 = cursor2;
+ if (windowCursor != kCursorKeepValue || handleCursor != kCursorKeepValue) {
+ if (windowCursor != kCursorKeepValue)
+ object->windowCursor = windowCursor;
+ if (handleCursor != kCursorKeepValue)
+ object->handleCursor = handleCursor;
getLogic()->updateCursor();
}
@@ -69,7 +69,7 @@ void Objects::update(ObjectIndex index, EntityIndex entity, ObjectLocation locat
getFlags()->flag_3 = true;
// Compartments
- if (original_location != location && (original_location == kObjectLocation2 || location == kObjectLocation2)) {
+ if (original_status != status && (original_status == kObjectLocation2 || status == kObjectLocation2)) {
if ((index >= kObjectCompartment1 && index <= kObjectCompartment8)
|| (index >= kObjectCompartmentA && index <= kObjectCompartmentF)) {
getScenes()->updateDoorsAndClock();
@@ -77,11 +77,11 @@ void Objects::update(ObjectIndex index, EntityIndex entity, ObjectLocation locat
}
}
-void Objects::updateLocation2(ObjectIndex index, ObjectLocation location2) {
+void Objects::updateModel(ObjectIndex index, ObjectModel model) {
if (index >= kObjectMax)
return;
- _objects[index].location2 = location2;
+ _objects[index].model = model;
}
//////////////////////////////////////////////////////////////////////////
diff --git a/engines/lastexpress/game/object.h b/engines/lastexpress/game/object.h
index 87c9d7d407..be9d63d6c5 100644
--- a/engines/lastexpress/game/object.h
+++ b/engines/lastexpress/game/object.h
@@ -37,17 +37,17 @@ public:
struct Object : Common::Serializable { // All fields should be saved as bytes
EntityIndex entity;
- ObjectLocation location;
- CursorStyle cursor;
- CursorStyle cursor2;
- ObjectLocation location2;
+ ObjectLocation status;
+ CursorStyle windowCursor;
+ CursorStyle handleCursor;
+ ObjectModel model;
Object() {
entity = kEntityPlayer;
- location = kObjectLocationNone;
- cursor = kCursorHandKnock;
- cursor2 = kCursorHandKnock;
- location2 = kObjectLocationNone;
+ status = kObjectLocationNone;
+ windowCursor = kCursorHandKnock;
+ handleCursor = kCursorHandKnock;
+ model = kObjectModelNone;
}
Common::String toString();
@@ -55,18 +55,18 @@ public:
// Serializable
void saveLoadWithSerializer(Common::Serializer &s) {
s.syncAsByte(entity);
- s.syncAsByte(location);
- s.syncAsByte(cursor);
- s.syncAsByte(cursor2);
- s.syncAsByte(location2);
+ s.syncAsByte(status);
+ s.syncAsByte(windowCursor);
+ s.syncAsByte(handleCursor);
+ s.syncAsByte(model);
}
};
Objects(LastExpressEngine *engine);
const Object get(ObjectIndex index) const;
- void update(ObjectIndex index, EntityIndex entity, ObjectLocation location, CursorStyle cursor, CursorStyle cursor2);
- void updateLocation2(ObjectIndex index, ObjectLocation location2);
+ void update(ObjectIndex index, EntityIndex entity, ObjectLocation status, CursorStyle cursor, CursorStyle cursor2);
+ void updateModel(ObjectIndex index, ObjectModel model);
// Serializable
void saveLoadWithSerializer(Common::Serializer &s);
diff --git a/engines/lastexpress/game/savegame.h b/engines/lastexpress/game/savegame.h
index 257c005e4a..7e8095fde1 100644
--- a/engines/lastexpress/game/savegame.h
+++ b/engines/lastexpress/game/savegame.h
@@ -40,32 +40,32 @@
Game data Format
-----------------
- uint32 {4} - entity
- uint32 {4} - current time
- uint32 {4} - time delta (how much a tick is in "real" time)
- uint32 {4} - time ticks
- uint32 {4} - scene Index max: 2500
- byte {1} - use backup scene
- uint32 {4} - backup Scene Index 1 max: 2500
- uint32 {4} - backup Scene Index 2 max: 2500
- uint32 {4} - selected inventory item max: 32
- uint32 {4*100*10} - positions (by car)
- uint32 {4*16} - compartments
- uint32 {4*16} - compartments ??
- uint32 {4*128} - game progress
- byte {512} - game events
- byte {7*32} - inventory
- byte {5*128} - objects
- byte {1262*40} - entities (characters and train entities)
-
- uint32 {4} - sound queue state
- uint32 {4} - ??
- uint32 {4} - number of sound entries
- byte {count*68} - sound entries
-
- byte {16*128} - save point data
- uint32 {4} - number of save points (max: 128)
- byte {count*16} - save points
+ uint32 {4} - entity
+ uint32 {4} - current time
+ uint32 {4} - time delta (how much a tick is in "real" time)
+ uint32 {4} - time ticks
+ uint32 {4} - scene Index max: 2500
+ byte {1} - use backup scene
+ uint32 {4} - backup Scene Index 1 max: 2500
+ uint32 {4} - backup Scene Index 2 max: 2500
+ uint32 {4} - selected inventory item max: 32
+ uint32 {4*100*10} - positions by car(BlockedView)
+ uint32 {4*16} - compartments (BlockedX)
+ uint32 {4*16} - compartments? (SoftBlockedX)
+ uint32 {4*128} - game progress
+ byte {512} - game events
+ byte {7*32} - inventory
+ byte {5*128} - objects
+ byte {1262*40} - entities (characters and train entities)
+
+ uint32 {4} - sound queue state
+ uint32 {4} - ??
+ uint32 {4} - number of sound entries
+ byte {count*68} - sound entries
+
+ byte {16*128} - save point data
+ uint32 {4} - number of save points (max: 128)
+ byte {count*16} - save points
... more unknown stuff
diff --git a/engines/lastexpress/game/scenes.cpp b/engines/lastexpress/game/scenes.cpp
index 82688fff2e..0d8f51af6e 100644
--- a/engines/lastexpress/game/scenes.cpp
+++ b/engines/lastexpress/game/scenes.cpp
@@ -579,7 +579,7 @@ void SceneManager::updateDoorsAndClock() {
for (ObjectIndex index = firstIndex; index < (ObjectIndex)(firstIndex + 8); index = (ObjectIndex)(index + 1)) {
// Doors is not open, nothing to do
- if (getObjects()->get(index).location != kObjectLocation2)
+ if (getObjects()->get(index).status != kObjectLocation2)
continue;
// Load door sequence
@@ -842,11 +842,11 @@ void SceneManager::preProcessScene(SceneIndex *index) {
if (object >= kObjectMax)
break;
- if (getObjects()->get(object).location == kObjectLocationNone)
+ if (getObjects()->get(object).status == kObjectLocationNone)
break;
for (Common::Array<SceneHotspot *>::iterator it = scene->getHotspots()->begin(); it != scene->getHotspots()->end(); ++it) {
- if (getObjects()->get(object).location != (*it)->location)
+ if (getObjects()->get(object).status != (*it)->location)
continue;
PROCESS_HOTSPOT_SCENE(*it, index);
@@ -920,7 +920,7 @@ void SceneManager::preProcessScene(SceneIndex *index) {
int location = kObjectLocationNone;
- if (getObjects()->get(object).location == kObjectLocation2)
+ if (getObjects()->get(object).status == kObjectLocation2)
location = kObjectLocation1;
if (getInventory()->get(item)->location != kObjectLocationNone)
@@ -933,7 +933,7 @@ void SceneManager::preProcessScene(SceneIndex *index) {
if (location != (*it)->location)
continue;
- if (getObjects()->get(object).location != (*it)->param1)
+ if (getObjects()->get(object).status != (*it)->param1)
continue;
if (getInventory()->get(item)->location != (*it)->param2)
@@ -994,7 +994,7 @@ void SceneManager::preProcessScene(SceneIndex *index) {
bool found = false;
for (Common::Array<SceneHotspot *>::iterator it = scene->getHotspots()->begin(); it != scene->getHotspots()->end(); ++it) {
- if (getObjects()->get(object).location2 != (*it)->location)
+ if (getObjects()->get(object).model != (*it)->location)
continue;
PROCESS_HOTSPOT_SCENE(*it, index);
diff --git a/engines/lastexpress/shared.h b/engines/lastexpress/shared.h
index 56cf730e24..dae7928043 100644
--- a/engines/lastexpress/shared.h
+++ b/engines/lastexpress/shared.h
@@ -755,7 +755,7 @@ enum ClothesIndex {
};
//////////////////////////////////////////////////////////////////////////
-// Location of objects
+// Objects (doors)
//////////////////////////////////////////////////////////////////////////
enum ObjectLocation {
kObjectLocationNone = 0,
@@ -763,13 +763,27 @@ enum ObjectLocation {
kObjectLocation2 = 2, // Bed ?
kObjectLocation3 = 3,
kObjectLocation4 = 4, // Window ?
- kObjectLocation5 = 5,
- kObjectLocation6 = 6,
- kObjectLocation7 = 7,
- kObjectLocation8 = 8,
- kObjectLocation9 = 9,
- kObjectLocation10 = 10,
- kObjectLocation18 = 18
+ kObjectLocation5 = 5,
+ kObjectLocation6 = 6,
+ kObjectLocation7 = 7,
+ kObjectLocation8 = 8,
+ kObjectLocation9 = 9,
+ kObjectLocation10 = 10,
+ kObjectLocation18 = 18
+};
+
+enum ObjectModel {
+ kObjectModelNone = 0,
+ kObjectModel1 = 1,
+ kObjectModel2 = 2,
+ kObjectModel3 = 3,
+ kObjectModel4 = 4,
+ kObjectModel5 = 5,
+ kObjectModel6 = 6,
+ kObjectModel7 = 7,
+ kObjectModel8 = 8,
+ kObjectModel9 = 9,
+ kObjectModel10 = 10
};
//////////////////////////////////////////////////////////////////////////
diff --git a/engines/lastexpress/sound/sound.cpp b/engines/lastexpress/sound/sound.cpp
index 319f7cd4f4..ad61c2e0d9 100644
--- a/engines/lastexpress/sound/sound.cpp
+++ b/engines/lastexpress/sound/sound.cpp
@@ -1323,7 +1323,7 @@ void SoundManager::playLoopingSound(int param) {
break;
if (getEntities()->isInsideCompartment(kEntityPlayer, getEntityData(kEntityPlayer)->car, positions[pos])) {
numLoops[0] = 1;
- partNumber = (getObjects()->get((ObjectIndex)objNum).location - 2) < 1 ? 6 : 1;
+ partNumber = (getObjects()->get((ObjectIndex)objNum).status - 2) < 1 ? 6 : 1;
}
objNum++;
}
diff --git a/engines/pegasus/neighborhood/mars/mars.cpp b/engines/pegasus/neighborhood/mars/mars.cpp
index 775221589a..435bcd4c9e 100644
--- a/engines/pegasus/neighborhood/mars/mars.cpp
+++ b/engines/pegasus/neighborhood/mars/mars.cpp
@@ -2011,7 +2011,7 @@ void Mars::dropItemIntoRoom(Item *item, Hotspot *dropSpot) {
void Mars::robotTiredOfWaiting() {
if (GameState.getCurrentRoomAndView() == MakeRoomView(kMars48, kEast)) {
- if (_attackingItem) {
+ if (!_attackingItem) {
startExtraSequence(kMars48RobotKillsPlayer, kExtraCompletedFlag, kFilterNoInput);
loadLoopSound2("");
} else {
diff --git a/engines/sci/detection_tables.h b/engines/sci/detection_tables.h
index 05af2ff78c..bdba75dfa5 100644
--- a/engines/sci/detection_tables.h
+++ b/engines/sci/detection_tables.h
@@ -4005,6 +4005,18 @@ static const struct ADGameDescription SciGameDescriptions[] = {
{"ressci.000", 0, "118f9bec04bfe17c4f87bbb5ddb43c18", 56126981},
AD_LISTEND},
Common::FR_FRA, Common::kPlatformWindows, ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) },
+
+ // Torin's Passage - English Macintosh
+ {"torin", "", {
+ {"Data1", 0, "63887e33cc282c92dc1f916f54aea8eb", 700786},
+ {"Data2", 0, "da2f13be2819a7333fee372d38b8d1a2", 122485},
+ {"Data3", 0, "e9fda4f1714ddb443545ba8a2d58ef18", 7299126},
+ {"Data4", 0, "59b432ec35b24a216432a556e25087ef", 7209309},
+ {"Data5", 0, "189e809f24aee83c707dea03a543c7c4", 6615563},
+ {"Data6", 0, "b639487c83d1dae0e001e700f3631566", 7594881},
+ {"Data7", 0, "2afd9b5434102b89610916b904c3f73a", 7627374},
+ AD_LISTEND},
+ Common::EN_ANY, Common::kPlatformMacintosh, ADGF_MACRESFORK | ADGF_UNSTABLE, GUIO4(GUIO_NOASPECT, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI) },
#endif // ENABLE_SCI32
// SCI Fanmade Games
diff --git a/engines/sci/engine/kgraphics.cpp b/engines/sci/engine/kgraphics.cpp
index e4b3028bcd..79ab2d138b 100644
--- a/engines/sci/engine/kgraphics.cpp
+++ b/engines/sci/engine/kgraphics.cpp
@@ -185,7 +185,8 @@ static reg_t kSetCursorSci11(EngineState *s, int argc, reg_t *argv) {
hotspot = new Common::Point(argv[3].toSint16(), argv[4].toSint16());
// Fallthrough
case 3:
- if (g_sci->getPlatform() == Common::kPlatformMacintosh) {
+ if (g_sci->getPlatform() == Common::kPlatformMacintosh && g_sci->getGameId() != GID_TORIN) {
+ // Torin Mac seems to be the only game that uses view cursors
delete hotspot; // Mac cursors have their own hotspot, so ignore any we get here
g_sci->_gfxCursor->kernelSetMacCursor(argv[0].toUint16(), argv[1].toUint16(), argv[2].toUint16());
} else {
diff --git a/engines/sci/graphics/portrait.cpp b/engines/sci/graphics/portrait.cpp
index d5227126e2..7217af51f7 100644
--- a/engines/sci/graphics/portrait.cpp
+++ b/engines/sci/graphics/portrait.cpp
@@ -21,6 +21,7 @@
*/
#include "common/archive.h"
+#include "common/file.h" // for DumpFile
#include "common/system.h"
#include "sci/sci.h"
@@ -39,6 +40,7 @@ Portrait::Portrait(ResourceManager *resMan, EventManager *event, GfxScreen *scre
}
Portrait::~Portrait() {
+ delete[] _lipSyncDataOffsetTable;
delete[] _bitmaps;
delete[] _fileData;
}
@@ -51,7 +53,7 @@ void Portrait::init() {
// 2 bytes main height (should be the same as first bitmap header height)
// 2 bytes animation count
// 2 bytes unknown
- // 2 bytes unknown
+ // 2 bytes lip sync ID count
// 4 bytes paletteSize (base 1)
// -> 17 bytes
// paletteSize bytes paletteData
@@ -81,6 +83,8 @@ void Portrait::init() {
_width = READ_LE_UINT16(_fileData + 3);
_height = READ_LE_UINT16(_fileData + 5);
_bitmapCount = READ_LE_UINT16(_fileData + 7);
+ _lipSyncIDCount = READ_LE_UINT16(_fileData + 11);
+
_bitmaps = new PortraitBitmap[_bitmapCount];
uint16 portraitPaletteSize = READ_LE_UINT16(_fileData + 13);
@@ -128,7 +132,48 @@ void Portrait::init() {
}
data += offsetTableSize;
- // raw lip-sync data follows
+ // raw lip-sync ID table follows
+ uint32 lipSyncIDTableSize;
+
+ lipSyncIDTableSize = READ_LE_UINT32(data);
+ data += 4;
+ assert( lipSyncIDTableSize == (_lipSyncIDCount * 4) );
+ _lipSyncIDTable = data;
+ data += lipSyncIDTableSize;
+
+ // raw lip-sync frame table follows
+ uint32 lipSyncDataTableSize;
+ uint32 lipSyncDataTableLastOffset;
+ byte lipSyncData;
+ uint16 lipSyncDataNr;
+ uint16 lipSyncCurOffset;
+
+ lipSyncDataTableSize = READ_LE_UINT32(data);
+ data += 4;
+ assert( lipSyncDataTableSize == 0x220 ); // always this size, just a safety-check
+
+ _lipSyncData = data;
+ lipSyncDataTableLastOffset = lipSyncDataTableSize - 1;
+ _lipSyncDataOffsetTable = new uint16[ _lipSyncIDCount ];
+
+ lipSyncDataNr = 0;
+ lipSyncCurOffset = 0;
+ while ( (lipSyncCurOffset < lipSyncDataTableSize) && (lipSyncDataNr < _lipSyncIDCount) ) {
+ // We are currently at the start of ID-frame data
+ _lipSyncDataOffsetTable[lipSyncDataNr] = lipSyncCurOffset;
+
+ // Look for end of ID-frame data
+ lipSyncData = *data++; lipSyncCurOffset++;
+ while ( (lipSyncData != 0xFF) && (lipSyncCurOffset < lipSyncDataTableLastOffset) ) {
+ // Either terminator (0xFF) or frame-data (1 byte tick count and 1 byte bitmap ID)
+ data++;
+ lipSyncData = *data++;
+ lipSyncCurOffset += 2;
+ }
+ lipSyncDataNr++;
+ }
+ _lipSyncDataOffsetTableEnd = data;
+ // last 4 bytes seem to be garbage
}
void Portrait::doit(Common::Point position, uint16 resourceId, uint16 noun, uint16 verb, uint16 cond, uint16 seq) {
@@ -136,9 +181,40 @@ void Portrait::doit(Common::Point position, uint16 resourceId, uint16 noun, uint
// Now init audio and sync resource
uint32 audioNumber = ((noun & 0xff) << 24) | ((verb & 0xff) << 16) | ((cond & 0xff) << 8) | (seq & 0xff);
- ResourceId syncResourceId = ResourceId(kResourceTypeSync36, resourceId, noun, verb, cond, seq);
- Resource *syncResource = _resMan->findResource(syncResourceId, true);
+ //ResourceId syncResourceId = ResourceId(kResourceTypeSync36, resourceId, noun, verb, cond, seq);
+ //Resource *syncResource = _resMan->findResource(syncResourceId, true);
+ ResourceId raveResourceId = ResourceId(kResourceTypeRave, resourceId, noun, verb, cond, seq);
+ Resource *raveResource = _resMan->findResource(raveResourceId, true);
+
+#if 0
uint syncOffset = 0;
+#endif
+
+ // TODO: play through the game if this is 100% accurate
+ // TODO: maybe try to create the missing sync resources for low-res KQ6 out of the rave resources
+
+ uint raveOffset = 0;
+
+#if 0
+ // Dump the sync resources to disk
+ Common::DumpFile *outFile = new Common::DumpFile();
+ Common::String outName = syncResourceId.toPatchNameBase36() + ".sync36";
+ outFile->open(outName);
+ syncResource->writeToStream(outFile);
+ outFile->finalize();
+ outFile->close();
+
+ ResourceId raveResourceId = ResourceId(kResourceTypeRave, resourceId, noun, verb, cond, seq);
+ Resource *raveResource = _resMan->findResource(raveResourceId, true);
+ outName = raveResourceId.toPatchNameBase36() + ".rave";
+ outFile->open(outName);
+ raveResource->writeToStream(outFile);
+ outFile->finalize();
+ outFile->close();
+ _resMan->unlockResource(raveResource);
+
+ delete outFile;
+#endif
// Set the portrait palette
_palette->set(&_portraitPalette, false, true);
@@ -150,7 +226,92 @@ void Portrait::doit(Common::Point position, uint16 resourceId, uint16 noun, uint
// Start playing audio...
_audio->stopAudio();
_audio->startAudio(resourceId, audioNumber);
+
+ if (!raveResource) {
+ warning("kPortrait: no rave resource %d %X", resourceId, audioNumber);
+ return;
+ }
+
+ // Do animation depending on rave resource till audio is done playing
+ int16 raveTicks;
+ uint16 raveID;
+ byte *raveLipSyncData;
+ byte raveLipSyncTicks;
+ byte raveLipSyncBitmapNr;
+ int timerPosition = 0;
+ int timerPositionWithin = 0;
+ int curPosition;
+ SciEvent curEvent;
+ bool userAbort = false;
+
+ while ((raveOffset < raveResource->size) && (!userAbort)) {
+ // rave string starts with tick count, followed by lipSyncID, tick count and so on
+ raveTicks = raveGetTicks(raveResource, &raveOffset);
+ if (raveTicks < 0)
+ break;
+
+ // get lipSyncID
+ raveID = raveGetID(raveResource, &raveOffset);
+ if (raveID) {
+ raveLipSyncData = raveGetLipSyncData(raveID);
+ } else {
+ raveLipSyncData = NULL;
+ }
+
+ timerPosition += raveTicks;
+
+ // Wait till syncTime passed, then show specific animation bitmap
+ if (timerPosition > 0) {
+ do {
+ g_sci->getEngineState()->wait(1);
+ curEvent = _event->getSciEvent(SCI_EVENT_ANY);
+ if (curEvent.type == SCI_EVENT_MOUSE_PRESS ||
+ (curEvent.type == SCI_EVENT_KEYBOARD && curEvent.data == SCI_KEY_ESC) ||
+ g_sci->getEngineState()->abortScriptProcessing == kAbortQuitGame)
+ userAbort = true;
+ curPosition = _audio->getAudioPosition();
+ } while ((curPosition != -1) && (curPosition < timerPosition) && (!userAbort));
+ }
+
+ if (raveLipSyncData) {
+ // lip sync data is
+ // Tick:Byte, Bitmap-Nr:BYTE
+ // Tick = 0xFF is the terminator for the data
+ timerPositionWithin = timerPosition;
+ raveLipSyncTicks = *raveLipSyncData++;
+ while ( (raveLipSyncData < _lipSyncDataOffsetTableEnd) && (raveLipSyncTicks != 0xFF) ) {
+ timerPositionWithin += raveLipSyncTicks;
+ do {
+ g_sci->getEngineState()->wait(1);
+ curEvent = _event->getSciEvent(SCI_EVENT_ANY);
+ if (curEvent.type == SCI_EVENT_MOUSE_PRESS ||
+ (curEvent.type == SCI_EVENT_KEYBOARD && curEvent.data == SCI_KEY_ESC) ||
+ g_sci->getEngineState()->abortScriptProcessing == kAbortQuitGame)
+ userAbort = true;
+ curPosition = _audio->getAudioPosition();
+ } while ((curPosition != -1) && (curPosition < timerPositionWithin) && (!userAbort));
+
+ raveLipSyncBitmapNr = *raveLipSyncData++;
+
+ // bitmap nr within sync data is base 1, we need base 0
+ raveLipSyncBitmapNr--;
+
+ if (raveLipSyncBitmapNr < _bitmapCount) {
+ drawBitmap(0);
+ drawBitmap(raveLipSyncBitmapNr);
+ bitsShow();
+ } else {
+ warning("kPortrait: rave lip sync data tried to draw non-existent bitmap %d", raveLipSyncBitmapNr);
+ }
+
+ raveLipSyncTicks = *raveLipSyncData++;
+ }
+ }
+ }
+
+// old sync resource code
+#if 0
if (!syncResource) {
// Getting the book in the book shop calls kPortrait where no sync exists
// TODO: find out what to do then
@@ -197,6 +358,7 @@ void Portrait::doit(Common::Point position, uint16 resourceId, uint16 noun, uint
}
}
}
+#endif
if (userAbort) {
// Reset the portrait bitmap to "closed mouth" state, when skipping dialogs
@@ -205,7 +367,81 @@ void Portrait::doit(Common::Point position, uint16 resourceId, uint16 noun, uint
_audio->stopAudio();
}
+ _resMan->unlockResource(raveResource);
+
+#if 0
_resMan->unlockResource(syncResource);
+#endif
+}
+
+// returns ASCII ticks from lip sync string as uint16
+int16 Portrait::raveGetTicks(Resource *resource, uint *offset) {
+ uint curOffset = *offset;
+ byte *curData = resource->data + curOffset;
+ byte curByte;
+ uint16 curValue = 0;
+
+ if (curOffset >= resource->size)
+ return -1;
+
+ while (curOffset < resource->size) {
+ curByte = *curData++; curOffset++;
+ if ( curByte == ' ' )
+ break;
+ if ( (curByte >= '0') && (curByte <= '9') ) {
+ curValue = curValue * 10 + ( curByte - '0' );
+ } else {
+ // no number -> assume there is an ID at current offset
+ return 0;
+ }
+ }
+ *offset = curOffset;
+ return curValue;
+}
+
+// returns ASCII ID from lip sync string as uint16
+uint16 Portrait::raveGetID(Resource *resource, uint *offset) {
+ uint curOffset = *offset;
+ byte *curData = resource->data + curOffset;
+ byte curByte = 0;
+ uint16 curValue = 0;
+
+ while (curOffset < resource->size) {
+ curByte = *curData++; curOffset++;
+ if ( curByte == ' ' )
+ break;
+ if (!curValue) {
+ curValue = curByte << 8;
+ } else {
+ curValue |= curByte;
+ }
+ }
+
+ *offset = curOffset;
+ return curValue;
+}
+
+// Searches for a specific lip sync ID and returns pointer to lip sync data or NULL in case ID was not found
+byte *Portrait::raveGetLipSyncData(uint16 raveID) {
+ uint lipSyncIDNr = 0;
+ byte *lipSyncIDPtr = _lipSyncIDTable;
+ byte lipSyncIDByte1, lipSyncIDByte2;
+ uint16 lipSyncID;
+
+ lipSyncIDPtr++; // skip over first byte
+ while (lipSyncIDNr < _lipSyncIDCount) {
+ lipSyncIDByte1 = *lipSyncIDPtr++;
+ lipSyncIDByte2 = *lipSyncIDPtr++;
+ lipSyncID = ( lipSyncIDByte1 << 8 ) | lipSyncIDByte2;
+
+ if ( lipSyncID == raveID ) {
+ return _lipSyncData + _lipSyncDataOffsetTable[lipSyncIDNr];
+ }
+
+ lipSyncIDNr++;
+ lipSyncIDPtr += 2; // ID is every 4 bytes
+ }
+ return NULL;
}
void Portrait::drawBitmap(uint16 bitmapNr) {
diff --git a/engines/sci/graphics/portrait.h b/engines/sci/graphics/portrait.h
index 75baa9a56b..de0dbffb3f 100644
--- a/engines/sci/graphics/portrait.h
+++ b/engines/sci/graphics/portrait.h
@@ -52,6 +52,10 @@ private:
void drawBitmap(uint16 bitmapNr);
void bitsShow();
+ int16 raveGetTicks(Resource *resource, uint *offset);
+ uint16 raveGetID(Resource *resource, uint *offset);
+ byte *raveGetLipSyncData(uint16 raveID);
+
ResourceManager *_resMan;
EventManager *_event;
GfxPalette *_palette;
@@ -68,6 +72,13 @@ private:
Common::String _resourceName;
byte *_fileData;
+
+ uint32 _lipSyncIDCount;
+ byte *_lipSyncIDTable;
+
+ byte *_lipSyncData;
+ uint16 *_lipSyncDataOffsetTable;
+ byte *_lipSyncDataOffsetTableEnd;
Common::Point _position;
};
diff --git a/engines/sci/resource.cpp b/engines/sci/resource.cpp
index d14c965ebb..52155cd09a 100644
--- a/engines/sci/resource.cpp
+++ b/engines/sci/resource.cpp
@@ -112,11 +112,12 @@ static const char *const s_resourceTypeNames[] = {
"audio", "sync", "message", "map", "heap",
"audio36", "sync36", "xlate", "robot", "vmd",
"chunk", "animation", "etc", "duck", "clut",
- "tga", "zzz", "macibin", "macibis", "macpict"
+ "tga", "zzz", "macibin", "macibis", "macpict",
+ "rave"
};
// Resource type suffixes. Note that the
-// suffic of SCI3 scripts has been changed from
+// suffix of SCI3 scripts has been changed from
// scr to csc
static const char *const s_resourceTypeSuffixes[] = {
"v56", "p56", "scr", "tex", "snd",
@@ -125,7 +126,7 @@ static const char *const s_resourceTypeSuffixes[] = {
"msg", "map", "hep", "", "",
"trn", "rbt", "vmd", "chk", "",
"etc", "duk", "clu", "tga", "zzz",
- "", "", ""
+ "", "", "", ""
};
const char *getResourceTypeName(ResourceType restype) {
@@ -141,7 +142,7 @@ static const ResourceType s_resTypeMapSci0[] = {
kResourceTypeCursor, kResourceTypePatch, kResourceTypeBitmap, kResourceTypePalette, // 0x08-0x0B
kResourceTypeCdAudio, kResourceTypeAudio, kResourceTypeSync, kResourceTypeMessage, // 0x0C-0x0F
kResourceTypeMap, kResourceTypeHeap, kResourceTypeAudio36, kResourceTypeSync36, // 0x10-0x13
- kResourceTypeTranslation // 0x14
+ kResourceTypeTranslation, kResourceTypeRave // 0x14
};
// TODO: 12 should be "Wave", but SCI seems to just store it in Audio resources
@@ -207,7 +208,7 @@ void Resource::unalloc() {
}
void Resource::writeToStream(Common::WriteStream *stream) const {
- stream->writeByte(getType() | 0x80); // 0x80 is required by old sierra sci, otherwise it wont accept the patch file
+ stream->writeByte(getType() | 0x80); // 0x80 is required by old Sierra SCI, otherwise it wont accept the patch file
stream->writeByte(_headerSize);
if (_headerSize > 0)
stream->write(_header, _headerSize);
@@ -383,42 +384,13 @@ void PatchResourceSource::loadResource(ResourceManager *resMan, Resource *res) {
static Common::Array<uint32> resTypeToMacTags(ResourceType type);
-static Common::String intToBase36(uint32 number, int minChar) {
- // Convert from an integer to a base36 string
- Common::String string;
-
- while (minChar--) {
- int character = number % 36;
- string = ((character < 10) ? (character + '0') : (character + 'A' - 10)) + string;
- number /= 36;
- }
-
- return string;
-}
-
-static Common::String constructPatchNameBase36(ResourceId resId) {
- // Convert from a resource ID to a base36 patch name
- Common::String output;
-
- output += (resId.getType() == kResourceTypeAudio36) ? '@' : '#'; // Identifier
- output += intToBase36(resId.getNumber(), 3); // Map
- output += intToBase36(resId.getTuple() >> 24, 2); // Noun
- output += intToBase36((resId.getTuple() >> 16) & 0xff, 2); // Verb
- output += '.'; // Separator
- output += intToBase36((resId.getTuple() >> 8) & 0xff, 2); // Cond
- output += intToBase36(resId.getTuple() & 0xff, 1); // Seq
-
- assert(output.size() == 12); // We should always get 12 characters in the end
- return output;
-}
-
void MacResourceForkResourceSource::loadResource(ResourceManager *resMan, Resource *res) {
ResourceType type = res->getType();
Common::SeekableReadStream *stream = 0;
if (type == kResourceTypeAudio36 || type == kResourceTypeSync36) {
// Handle audio36/sync36, convert back to audio/sync
- stream = _macResMan->getResource(constructPatchNameBase36(res->_id));
+ stream = _macResMan->getResource(res->_id.toPatchNameBase36());
} else {
// Plain resource handling
Common::Array<uint32> tagArray = resTypeToMacTags(type);
diff --git a/engines/sci/resource.h b/engines/sci/resource.h
index 6fa51754a4..c4c8e543b2 100644
--- a/engines/sci/resource.h
+++ b/engines/sci/resource.h
@@ -112,6 +112,8 @@ enum ResourceType {
kResourceTypeMacIconBarPictS, // IBIS resources (icon bar, selected)
kResourceTypeMacPict, // PICT resources (inventory)
+ kResourceTypeRave, // KQ6 hires RAVE (special sync) resources
+
kResourceTypeInvalid
};
@@ -143,6 +145,19 @@ class ResourceId {
uint16 _number;
uint32 _tuple; // Only used for audio36 and sync36
+ static Common::String intToBase36(uint32 number, int minChar) {
+ // Convert from an integer to a base36 string
+ Common::String string;
+
+ while (minChar--) {
+ int character = number % 36;
+ string = ((character < 10) ? (character + '0') : (character + 'A' - 10)) + string;
+ number /= 36;
+ }
+
+ return string;
+ }
+
public:
ResourceId() : _type(kResourceTypeInvalid), _number(0), _tuple(0) { }
@@ -169,6 +184,22 @@ public:
return retStr;
}
+ // Convert from a resource ID to a base36 patch name
+ Common::String toPatchNameBase36() {
+ Common::String output;
+
+ output += (getType() == kResourceTypeAudio36) ? '@' : '#'; // Identifier
+ output += intToBase36(getNumber(), 3); // Map
+ output += intToBase36(getTuple() >> 24, 2); // Noun
+ output += intToBase36((getTuple() >> 16) & 0xff, 2); // Verb
+ output += '.'; // Separator
+ output += intToBase36((getTuple() >> 8) & 0xff, 2); // Cond
+ output += intToBase36(getTuple() & 0xff, 1); // Seq
+
+ assert(output.size() == 12); // We should always get 12 characters in the end
+ return output;
+ }
+
inline ResourceType getType() const { return _type; }
inline uint16 getNumber() const { return _number; }
inline uint32 getTuple() const { return _tuple; }
diff --git a/engines/sci/resource_audio.cpp b/engines/sci/resource_audio.cpp
index 744f05f2b9..268180b531 100644
--- a/engines/sci/resource_audio.cpp
+++ b/engines/sci/resource_audio.cpp
@@ -101,32 +101,34 @@ bool Resource::loadFromAudioVolumeSCI11(Common::SeekableReadStream *file) {
}
file->seek(-4, SEEK_CUR);
- ResourceType type = _resMan->convertResType(file->readByte());
- if (((getType() == kResourceTypeAudio || getType() == kResourceTypeAudio36) && (type != kResourceTypeAudio))
- || ((getType() == kResourceTypeSync || getType() == kResourceTypeSync36) && (type != kResourceTypeSync))) {
- warning("Resource type mismatch loading %s", _id.toString().c_str());
- unalloc();
- return false;
- }
-
- _headerSize = file->readByte();
-
- if (type == kResourceTypeAudio) {
- if (_headerSize != 7 && _headerSize != 11 && _headerSize != 12) {
- warning("Unsupported audio header");
+ // Rave-resources (King's Quest 6) don't have any header at all
+ if (getType() != kResourceTypeRave) {
+ ResourceType type = _resMan->convertResType(file->readByte());
+ if (((getType() == kResourceTypeAudio || getType() == kResourceTypeAudio36) && (type != kResourceTypeAudio))
+ || ((getType() == kResourceTypeSync || getType() == kResourceTypeSync36) && (type != kResourceTypeSync))) {
+ warning("Resource type mismatch loading %s", _id.toString().c_str());
unalloc();
return false;
}
+
+ _headerSize = file->readByte();
+
+ if (type == kResourceTypeAudio) {
+ if (_headerSize != 7 && _headerSize != 11 && _headerSize != 12) {
+ warning("Unsupported audio header");
+ unalloc();
+ return false;
+ }
- if (_headerSize != 7) { // Size is defined already from the map
- // Load sample size
- file->seek(7, SEEK_CUR);
- size = file->readUint32LE();
- // Adjust offset to point at the header data again
- file->seek(-11, SEEK_CUR);
+ if (_headerSize != 7) { // Size is defined already from the map
+ // Load sample size
+ file->seek(7, SEEK_CUR);
+ size = file->readUint32LE();
+ // Adjust offset to point at the header data again
+ file->seek(-11, SEEK_CUR);
+ }
}
}
-
return loadPatch(file);
}
@@ -395,15 +397,22 @@ int ResourceManager::readAudioMapSCI11(ResourceSource *map) {
syncSize = READ_LE_UINT16(ptr);
ptr += 2;
+ // FIXME: The sync36 resource seems to be two bytes too big in KQ6CD
+ // (bytes taken from the RAVE resource right after it)
if (syncSize > 0)
addResource(ResourceId(kResourceTypeSync36, map->_volumeNumber, n & 0xffffff3f), src, offset, syncSize);
}
if (n & 0x40) {
// This seems to define the size of raw lipsync data (at least
- // in kq6), may also just be general appended data.
- syncSize += READ_LE_UINT16(ptr);
+ // in KQ6 CD Windows).
+ int kq6HiresSyncSize = READ_LE_UINT16(ptr);
ptr += 2;
+
+ if (kq6HiresSyncSize > 0) {
+ addResource(ResourceId(kResourceTypeRave, map->_volumeNumber, n & 0xffffff3f), src, offset + syncSize, kq6HiresSyncSize);
+ syncSize += kq6HiresSyncSize;
+ }
}
addResource(ResourceId(kResourceTypeAudio36, map->_volumeNumber, n & 0xffffff3f), src, offset + syncSize);
@@ -856,6 +865,7 @@ void AudioVolumeResourceSource::loadResource(ResourceManager *resMan, Resource *
switch (res->getType()) {
case kResourceTypeSync:
case kResourceTypeSync36:
+ case kResourceTypeRave:
// we should already have a (valid) size
break;
default:
diff --git a/engines/sci/sci.cpp b/engines/sci/sci.cpp
index ae1d3ebdc5..ff804af4b4 100644
--- a/engines/sci/sci.cpp
+++ b/engines/sci/sci.cpp
@@ -137,7 +137,7 @@ SciEngine::SciEngine(OSystem *syst, const ADGameDescription *desc, SciGameId gam
SearchMan.addSubDirectoryMatching(gameDataDir, "duk"); // Duck movie files in Phantasmagoria 2
SearchMan.addSubDirectoryMatching(gameDataDir, "Robot Folder"); // Mac robot files
SearchMan.addSubDirectoryMatching(gameDataDir, "Sound Folder"); // Mac audio files
- SearchMan.addSubDirectoryMatching(gameDataDir, "Voices Folder"); // Mac audio36 files
+ SearchMan.addSubDirectoryMatching(gameDataDir, "Voices Folder", 0, 2, true); // Mac audio36 files (recursive for Torin)
SearchMan.addSubDirectoryMatching(gameDataDir, "Voices"); // Mac audio36 files
SearchMan.addSubDirectoryMatching(gameDataDir, "VMD Folder"); // Mac VMD files
diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.cpp b/engines/tsage/ringworld2/ringworld2_scenes1.cpp
index adb5e7f8a8..39072f0329 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes1.cpp
+++ b/engines/tsage/ringworld2/ringworld2_scenes1.cpp
@@ -2253,18 +2253,18 @@ Scene1337::Scene1337() {
_shuffleEndedFl = false;
_currentPlayerNumb = 0;
- _field4240 = 0;
- _field4242 = 0;
+ _actionIdx1 = 0;
+ _actionIdx2 = 0;
_showPlayerTurn = false;
- _field4246 = false;
- _field424A = 0;
+ _displayHelpFl = false;
+ _winnerId = 0;
_instructionsDisplayedFl = false;
_instructionsWaitCount = 0;
- _unkFctPtr412 = nullptr;
- _discardCard = nullptr;
- _field3EF4 = nullptr;
- _field3EF8 = nullptr;
+ _delayedFunction = nullptr;
+ _actionCard1 = nullptr;
+ _actionCard2 = nullptr;
+ _actionCard3 = nullptr;
_cursorCurRes = 0;
_cursorCurStrip = 0;
@@ -3373,7 +3373,7 @@ void Scene1337::Action3::signal() {
scene->_currentPlayerNumb = 0;
R2_GLOBALS._sceneObjects->draw();
scene->actionDisplay(1330, 0, 159, 10, 1, 200, 0, 7, 0, 154, 154);
- scene->subC20F9();
+ scene->handleNextTurn();
} else if (_actionIndex >= 1) {
scene->_availableCardsPile[scene->_cardsAvailableNumb] = 0;
scene->_cardsAvailableNumb--;
@@ -3388,7 +3388,7 @@ void Scene1337::Action4::signal() {
switch (_actionIndex++) {
case 0:
- if ((scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[0]._cardId == 0) && (scene->subC264B(scene->_gameBoardSide[scene->_currentPlayerNumb]._delayCard._cardId))) {
+ if ((scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[0]._cardId == 0) && (!scene->subC264B(scene->_gameBoardSide[scene->_currentPlayerNumb]._delayCard._cardId))) {
if (scene->_cardsAvailableNumb < 0)
scene->shuffleCards();
scene->_animatedCard._card.setPosition(Common::Point(162, 95), 0);
@@ -3425,7 +3425,7 @@ void Scene1337::Action4::signal() {
scene->setAnimationInfo(&scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[0]);
scene->_animatedCard._card.hide();
- if ((scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[0]._cardId == 0) && (scene->subC264B(scene->_gameBoardSide[scene->_currentPlayerNumb]._delayCard._cardId == 0))) {
+ if ((scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[0]._cardId == 0) && (!scene->subC264B(scene->_gameBoardSide[scene->_currentPlayerNumb]._delayCard._cardId))) {
if (scene->_cardsAvailableNumb < 0)
scene->shuffleCards();
scene->_animatedCard._card.setPosition(Common::Point(162, 95));
@@ -3460,7 +3460,7 @@ void Scene1337::Action4::signal() {
scene->setAnimationInfo(&scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[1]);
scene->_animatedCard._card.hide();
- if ((scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[2]._cardId == 0) && (scene->subC264B(scene->_gameBoardSide[scene->_currentPlayerNumb]._delayCard._cardId == 0))) {
+ if ((scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[2]._cardId == 0) && (!scene->subC264B(scene->_gameBoardSide[scene->_currentPlayerNumb]._delayCard._cardId))) {
if (scene->_cardsAvailableNumb < 0)
scene->shuffleCards();
scene->_animatedCard._card.setPosition(Common::Point(162, 95));
@@ -3495,7 +3495,7 @@ void Scene1337::Action4::signal() {
scene->setAnimationInfo(&scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[2]);
scene->_animatedCard._card.hide();
- if ((scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[3]._cardId == 0) && (scene->subC264B(scene->_gameBoardSide[scene->_currentPlayerNumb]._delayCard._cardId == 0))) {
+ if ((scene->_gameBoardSide[scene->_currentPlayerNumb]._handCard[3]._cardId == 0) && (!scene->subC264B(scene->_gameBoardSide[scene->_currentPlayerNumb]._delayCard._cardId))) {
if (scene->_cardsAvailableNumb < 0)
scene->shuffleCards();
scene->_animatedCard._card.setPosition(Common::Point(162, 95));
@@ -3532,16 +3532,16 @@ void Scene1337::Action4::signal() {
scene->_animatedCard._card.hide();
switch (scene->_currentPlayerNumb) {
case 0:
- scene->subCF979();
+ scene->handlePlayer0();
break;
case 1:
- scene->subCF31D();
+ scene->handlePlayer1();
break;
case 2:
- scene->subD0281();
+ scene->handlePlayer2();
break;
case 3:
- scene->subC2C2F();
+ scene->handlePlayer3();
break;
default:
break;
@@ -3560,7 +3560,7 @@ void Scene1337::Action5::signal() {
switch (_actionIndex++) {
case 0: {
- scene->_availableCardsPile[scene->_currentDiscardIndex] = scene->_discardCard->_cardId;
+ scene->_availableCardsPile[scene->_currentDiscardIndex] = scene->_actionCard1->_cardId;
scene->_currentDiscardIndex--;
if (!g_globals->_sceneObjects->contains(&scene->_discardPile._card)) {
// The first discarded card makes the pile appear
@@ -3571,15 +3571,15 @@ void Scene1337::Action5::signal() {
scene->_discardPile._card.fixPriority(170);
}
- scene->_discardPile._cardId = scene->_discardCard->_cardId;
- scene->_discardCard->_cardId = 0;
- scene->_discardCard->_card.remove();
+ scene->_discardPile._cardId = scene->_actionCard1->_cardId;
+ scene->_actionCard1->_cardId = 0;
+ scene->_actionCard1->_card.remove();
- if (scene->_discardCard == &scene->_selectedCard) {
+ if (scene->_actionCard1 == &scene->_selectedCard) {
scene->setCursorData(5, 1, 4);
scene->subC4CEC();
}
- scene->_animatedCard._card.setPosition(scene->_discardCard->_stationPos, 0);
+ scene->_animatedCard._card.setPosition(scene->_actionCard1->_stationPos, 0);
scene->_animatedCard._card.show();
Common::Point pt(128, 95);
NpcMover *mover = new NpcMover();
@@ -3590,44 +3590,47 @@ void Scene1337::Action5::signal() {
scene->_animatedCard._card.hide();
scene->setAnimationInfo(&scene->_discardPile);
scene->_aSound2.play(61);
- scene->subC20F9();
+ scene->handleNextTurn();
break;
default:
break;
}
}
+/**
+ * Animations for playing a card
+ */
void Scene1337::Action6::signal() {
Scene1337 *scene = (Scene1337 *)R2_GLOBALS._sceneManager._scene;
switch (_actionIndex++) {
case 0: {
- scene->_field3EF4->_cardId = 1;
- scene->_field3EF4->_card.postInit();
- scene->_field3EF4->_card.hide();
- scene->_field3EF4->_card.setVisage(1332);
- scene->_field3EF4->_card.setPosition(scene->_field3EF4->_stationPos);
- scene->_field3EF4->_card.fixPriority(170);
+ scene->_actionCard2->_cardId = 1;
+ scene->_actionCard2->_card.postInit();
+ scene->_actionCard2->_card.hide();
+ scene->_actionCard2->_card.setVisage(1332);
+ scene->_actionCard2->_card.setPosition(scene->_actionCard2->_stationPos);
+ scene->_actionCard2->_card.fixPriority(170);
- scene->_discardCard->_cardId = 0;
- scene->_discardCard->_card.remove();
+ scene->_actionCard1->_cardId = 0;
+ scene->_actionCard1->_card.remove();
- scene->_animatedCard._card.setPosition(scene->_discardCard->_stationPos);
+ scene->_animatedCard._card.setPosition(scene->_actionCard1->_stationPos);
scene->_animatedCard._card.show();
NpcMover *mover = new NpcMover();
- scene->_animatedCard._card.addMover(mover, &scene->_field3EF4->_stationPos, this);
+ scene->_animatedCard._card.addMover(mover, &scene->_actionCard2->_stationPos, this);
}
break;
case 1:
scene->_animatedCard._card.hide();
- scene->setAnimationInfo(scene->_field3EF4);
+ scene->setAnimationInfo(scene->_actionCard2);
scene->_aSound1.play(59);
- if (scene->_discardCard == &scene->_selectedCard) {
+ if (scene->_actionCard1 == &scene->_selectedCard) {
scene->setCursorData(5, 1, 4);
scene->subC4CEC();
}
- scene->subC20F9();
+ scene->handleNextTurn();
break;
default:
break;
@@ -3639,26 +3642,26 @@ void Scene1337::Action7::signal() {
switch (_actionIndex++) {
case 0: {
- scene->_field3EF4->_cardId = scene->_discardCard->_cardId;
+ scene->_actionCard2->_cardId = scene->_actionCard1->_cardId;
- scene->_discardCard->_cardId = 0;
- scene->_discardCard->_card.remove();
+ scene->_actionCard1->_cardId = 0;
+ scene->_actionCard1->_card.remove();
- scene->_animatedCard._card.setPosition(scene->_discardCard->_stationPos, 0);
+ scene->_animatedCard._card.setPosition(scene->_actionCard1->_stationPos, 0);
scene->_animatedCard._card.show();
NpcMover *mover = new NpcMover();
- scene->_animatedCard._card.addMover(mover, &scene->_field3EF4->_stationPos, this);
+ scene->_animatedCard._card.addMover(mover, &scene->_actionCard2->_stationPos, this);
}
break;
case 1:
- if (scene->_discardCard == &scene->_selectedCard) {
+ if (scene->_actionCard1 == &scene->_selectedCard) {
scene->setCursorData(5, 1, 4);
scene->subC4CEC();
}
- scene->setAnimationInfo(scene->_field3EF4);
+ scene->setAnimationInfo(scene->_actionCard2);
scene->_aSound1.play(59);
scene->_item5._cardId = 1;
- scene->_item5._stationPos = scene->_field3EF4->_stationPos;
+ scene->_item5._stationPos = scene->_actionCard2->_stationPos;
scene->_item5._card.postInit();
scene->_item5._card.hide();
scene->_item5._card._flags = OBJFLAG_HIDING;
@@ -3675,109 +3678,111 @@ void Scene1337::Action8::signal() {
switch (_actionIndex++) {
case 0: {
- scene->_availableCardsPile[scene->_currentDiscardIndex] = scene->_field3EF4->_cardId;
+ scene->_availableCardsPile[scene->_currentDiscardIndex] = scene->_actionCard2->_cardId;
scene->_currentDiscardIndex--;
- scene->_field3EF4->_cardId = scene->_discardCard->_cardId;
- scene->_discardCard->_card.remove();
+ scene->_actionCard2->_cardId = scene->_actionCard1->_cardId;
+ scene->_actionCard1->_card.remove();
- scene->_animatedCard._card.setPosition(scene->_discardCard->_stationPos, 0);
+ scene->_animatedCard._card.setPosition(scene->_actionCard1->_stationPos, 0);
scene->_animatedCard._card.show();
NpcMover *mover = new NpcMover();
- scene->_animatedCard._card.addMover(mover, &scene->_field3EF4->_stationPos, this);
+ scene->_animatedCard._card.addMover(mover, &scene->_actionCard2->_stationPos, this);
}
break;
case 1:
scene->_animatedCard._card.hide();
- if (scene->_discardCard == &scene->_selectedCard) {
+ if (scene->_actionCard1 == &scene->_selectedCard) {
scene->setCursorData(5, 1, 4);
scene->subC4CEC();
}
- scene->setAnimationInfo(scene->_field3EF4);
+ scene->setAnimationInfo(scene->_actionCard2);
scene->_aSound1.play(58);
- scene->discardCard(scene->_field3EF4);
+ scene->discardCard(scene->_actionCard2);
break;
default:
break;
}
}
+// Play delay card
void Scene1337::Action9::signal() {
Scene1337 *scene = (Scene1337 *)R2_GLOBALS._sceneManager._scene;
switch (_actionIndex++) {
case 0: {
- scene->_field3EF4->_cardId = scene->_discardCard->_cardId;
- scene->_field3EF4->_card.postInit();
- scene->_field3EF4->_card.hide();
- scene->_field3EF4->_card.setVisage(1332);
- scene->_field3EF4->_card.setPosition(scene->_field3EF4->_stationPos, 0);
- scene->_field3EF4->_card.fixPriority(170);
+ scene->_actionCard2->_cardId = scene->_actionCard1->_cardId;
+ scene->_actionCard2->_card.postInit();
+ scene->_actionCard2->_card.hide();
+ scene->_actionCard2->_card.setVisage(1332);
+ scene->_actionCard2->_card.setPosition(scene->_actionCard2->_stationPos, 0);
+ scene->_actionCard2->_card.fixPriority(170);
- scene->_discardCard->_cardId = 0;
- scene->_discardCard->_card.remove();
+ scene->_actionCard1->_cardId = 0;
+ scene->_actionCard1->_card.remove();
- scene->_animatedCard._card.setPosition(scene->_discardCard->_stationPos, 0);
+ scene->_animatedCard._card.setPosition(scene->_actionCard1->_stationPos, 0);
scene->_animatedCard._card.show();
NpcMover *mover = new NpcMover();
- scene->_animatedCard._card.addMover(mover, &scene->_field3EF4->_stationPos, this);
+ scene->_animatedCard._card.addMover(mover, &scene->_actionCard2->_stationPos, this);
}
break;
case 1:
scene->_animatedCard._card.hide();
- scene->setAnimationInfo(scene->_field3EF4);
+ scene->setAnimationInfo(scene->_actionCard2);
scene->_aSound1.play(57);
- if (scene->_discardCard == &scene->_selectedCard) {
+ if (scene->_actionCard1 == &scene->_selectedCard) {
scene->setCursorData(5, 1, 4);
scene->subC4CEC();
}
- scene->subC20F9();
+ scene->handleNextTurn();
break;
default:
break;
}
}
+// Counter a trick with a card
void Scene1337::Action10::signal() {
Scene1337 *scene = (Scene1337 *)R2_GLOBALS._sceneManager._scene;
switch (_actionIndex++) {
case 0: {
- scene->_field3EF8->_card.postInit();
- scene->_field3EF8->_card.hide();
- scene->_field3EF8->_card.setVisage(1332);
- scene->_field3EF8->_card.setPosition(scene->_field3EF8->_stationPos, 0);
- scene->_field3EF8->_card.fixPriority(170);
- scene->_field3EF8->_cardId = scene->_discardCard->_cardId;
+ scene->_actionCard3->_card.postInit();
+ scene->_actionCard3->_card.hide();
+ scene->_actionCard3->_card.setVisage(1332);
+ scene->_actionCard3->_card.setPosition(scene->_actionCard3->_stationPos, 0);
+ scene->_actionCard3->_card.fixPriority(170);
+ scene->_actionCard3->_cardId = scene->_actionCard1->_cardId;
- scene->_discardCard->_cardId = 0;
- scene->_discardCard->_card.remove();
+ scene->_actionCard1->_cardId = 0;
+ scene->_actionCard1->_card.remove();
- if (scene->_discardCard == &scene->_selectedCard) {
+ if (scene->_actionCard1 == &scene->_selectedCard) {
scene->setCursorData(5, 1, 4);
scene->subC4CEC();
}
- scene->_animatedCard._card.setPosition(scene->_discardCard->_stationPos, 0);
+ scene->_animatedCard._card.setPosition(scene->_actionCard1->_stationPos, 0);
scene->_animatedCard._card.show();
NpcMover *mover = new NpcMover();
- scene->_animatedCard._card.addMover(mover, &scene->_field3EF8->_stationPos, this);
+ scene->_animatedCard._card.addMover(mover, &scene->_actionCard3->_stationPos, this);
}
break;
case 1: {
scene->_animatedCard._card.hide();
- scene->setAnimationInfo(scene->_field3EF8);
+ scene->setAnimationInfo(scene->_actionCard3);
scene->_aSound1.play(57);
bool found = false;
int indexFound = -1;
- switch (scene->_field4240) {
+ switch (scene->_actionIdx1) {
case 0:
for (indexFound = 0; indexFound < 3; indexFound++) {
if (scene->_gameBoardSide[0]._handCard[indexFound]._cardId == 29) {
@@ -3817,13 +3822,13 @@ void Scene1337::Action10::signal() {
bool found2 = false;
if (found) {
- switch (scene->_field4240) {
+ switch (scene->_actionIdx1) {
case 0:
- scene->subC51A0(&scene->_gameBoardSide[0]._handCard[indexFound], scene->_field3EF8);
+ scene->subC51A0(&scene->_gameBoardSide[0]._handCard[indexFound], scene->_actionCard3);
found2 = true;
break;
case 1:
- scene->subC51A0(&scene->_gameBoardSide[1]._handCard[indexFound], scene->_field3EF8);
+ scene->subC51A0(&scene->_gameBoardSide[1]._handCard[indexFound], scene->_actionCard3);
found2 = true;
break;
case 2:
@@ -3831,12 +3836,12 @@ void Scene1337::Action10::signal() {
if (MessageDialog::show(USE_INTERCEPTOR, NO_MSG, YES_MSG) == 0)
scene->subC4CEC();
else {
- scene->subC51A0(&scene->_gameBoardSide[2]._handCard[indexFound], scene->_field3EF8);
+ scene->subC51A0(&scene->_gameBoardSide[2]._handCard[indexFound], scene->_actionCard3);
found2 = true;
}
break;
case 3:
- scene->subC51A0(&scene->_gameBoardSide[3]._handCard[indexFound], scene->_field3EF8);
+ scene->subC51A0(&scene->_gameBoardSide[3]._handCard[indexFound], scene->_actionCard3);
found2 = true;
break;
default:
@@ -3847,7 +3852,7 @@ void Scene1337::Action10::signal() {
if (!found2)
break;
- if (scene->_field4240 == 2) {
+ if (scene->_actionIdx1 == 2) {
int j = 0;
for (int i = 0; i <= 7; i++) {
if (scene->_gameBoardSide[2]._outpostStation[i]._cardId != 0)
@@ -3857,7 +3862,7 @@ void Scene1337::Action10::signal() {
if (j <= 1) {
for (int i = 0; i <= 7; i++) {
if (scene->_gameBoardSide[2]._outpostStation[i]._cardId != 0) {
- scene->_field3EF4 = &scene->_gameBoardSide[2]._outpostStation[i];
+ scene->_actionCard2 = &scene->_gameBoardSide[2]._outpostStation[i];
break;
}
}
@@ -3880,7 +3885,7 @@ void Scene1337::Action10::signal() {
for (int i = 0; i <= 7; i++) {
if (scene->_gameBoardSide[2]._outpostStation[i].isIn(scene->_selectedCard._stationPos) && (scene->_gameBoardSide[2]._outpostStation[i]._cardId != 0)) {
- scene->_field3EF4 = &scene->_gameBoardSide[2]._outpostStation[0];
+ scene->_actionCard2 = &scene->_gameBoardSide[2]._outpostStation[0];
found2 = true;
break;
}
@@ -3890,27 +3895,28 @@ void Scene1337::Action10::signal() {
}
}
- scene->_availableCardsPile[scene->_currentDiscardIndex] = scene->_field3EF4->_cardId;
+ scene->_availableCardsPile[scene->_currentDiscardIndex] = scene->_actionCard2->_cardId;
scene->_currentDiscardIndex--;
- scene->_field3EF4->_cardId = 0;
- scene->_field3EF4->_card.remove();
+ scene->_actionCard2->_cardId = 0;
+ scene->_actionCard2->_card.remove();
- scene->_animatedCard._card.setPosition(scene->_field3EF4->_stationPos, 0);
+ scene->_animatedCard._card.setPosition(scene->_actionCard2->_stationPos, 0);
scene->_animatedCard._card.show();
NpcMover *mover = new NpcMover();
- scene->_animatedCard._card.addMover(mover, &scene->_field3EF8->_stationPos, this);
+ scene->_animatedCard._card.addMover(mover, &scene->_actionCard3->_stationPos, this);
}
break;
case 2:
scene->_animatedCard._card.hide();
- scene->discardCard(scene->_field3EF8);
+ scene->discardCard(scene->_actionCard3);
break;
default:
break;
}
}
+// Use trick (card #25 - thieft ?) and pick a card from the opponent
void Scene1337::Action11::signal() {
Scene1337 *scene = (Scene1337 *)R2_GLOBALS._sceneManager._scene;
@@ -3918,36 +3924,36 @@ void Scene1337::Action11::signal() {
switch (_actionIndex++) {
case 0: {
- scene->_field3EF4->_card.postInit();
- scene->_field3EF4->_card.hide();
- scene->_field3EF4->_card.setVisage(1332);
- scene->_field3EF4->_card.setPosition(scene->_field3EF4->_stationPos, 0);
- scene->_field3EF4->_card.fixPriority(170);
- scene->_field3EF4->_cardId = 25;
-
- if (scene->_field4240 == 2) {
- scene->_animatedCard._card.setPosition(scene->_field3EF4->_stationPos, 0);
+ scene->_actionCard2->_card.postInit();
+ scene->_actionCard2->_card.hide();
+ scene->_actionCard2->_card.setVisage(1332);
+ scene->_actionCard2->_card.setPosition(scene->_actionCard2->_stationPos, 0);
+ scene->_actionCard2->_card.fixPriority(170);
+ scene->_actionCard2->_cardId = 25;
+
+ if (scene->_actionIdx1 == 2) {
+ scene->_animatedCard._card.setPosition(scene->_actionCard2->_stationPos, 0);
scene->setCursorData(5, 1, 4);
} else {
- scene->_discardCard->_cardId = 0;
- scene->_discardCard->_card.remove();
- scene->_animatedCard._card.setPosition(scene->_discardCard->_stationPos, 0);
+ scene->_actionCard1->_cardId = 0;
+ scene->_actionCard1->_card.remove();
+ scene->_animatedCard._card.setPosition(scene->_actionCard1->_stationPos, 0);
}
scene->_animatedCard._card.show();
NpcMover *mover = new NpcMover();
- scene->_animatedCard._card.addMover(mover, &scene->_field3EF4->_stationPos, this);
+ scene->_animatedCard._card.addMover(mover, &scene->_actionCard2->_stationPos, this);
}
break;
case 1: {
scene->_animatedCard._card.hide();
- scene->setAnimationInfo(scene->_field3EF4);
+ scene->setAnimationInfo(scene->_actionCard2);
scene->_aSound1.play(57);
bool found = false;
int i = -1;
- switch (scene->_field4242) {
+ switch (scene->_actionIdx2) {
case 0:
for (i = 0; i <= 3; i++) {
if (scene->_gameBoardSide[0]._handCard[i]._cardId == 27) {
@@ -3956,12 +3962,12 @@ void Scene1337::Action11::signal() {
}
}
- if ((found) && (scene->subC3E92(scene->_field4240) != -1)) {
- scene->_discardCard = &scene->_gameBoardSide[0]._handCard[i];
- scene->_field3EF4 = &scene->_gameBoardSide[0]._emptyStationPos;
- if (scene->_field4240 != 0) {
- int tmpVal = scene->subC3E92(scene->_field4240);
- scene->_field3EF8 = &scene->_gameBoardSide[scene->_field4240]._handCard[tmpVal];
+ if ((found) && (scene->getFreeHandCard(scene->_actionIdx1) != -1)) {
+ scene->_actionCard1 = &scene->_gameBoardSide[0]._handCard[i];
+ scene->_actionCard2 = &scene->_gameBoardSide[0]._emptyStationPos;
+ if (scene->_actionIdx1 != 0) {
+ int tmpVal = scene->getFreeHandCard(scene->_actionIdx1);
+ scene->_actionCard3 = &scene->_gameBoardSide[scene->_actionIdx1]._handCard[tmpVal];
}
scene->_item1.setAction(&scene->_action12);
noAction = false;
@@ -3975,12 +3981,12 @@ void Scene1337::Action11::signal() {
}
}
- if ((found) && (scene->subC3E92(scene->_field4240) != -1)) {
- scene->_discardCard = &scene->_gameBoardSide[1]._handCard[i];
- scene->_field3EF4 = &scene->_gameBoardSide[1]._emptyStationPos;
- if (scene->_field4240 != 1) {
- int tmpVal = scene->subC3E92(scene->_field4240);
- scene->_field3EF8 = &scene->_gameBoardSide[scene->_field4240]._handCard[tmpVal];
+ if ((found) && (scene->getFreeHandCard(scene->_actionIdx1) != -1)) {
+ scene->_actionCard1 = &scene->_gameBoardSide[1]._handCard[i];
+ scene->_actionCard2 = &scene->_gameBoardSide[1]._emptyStationPos;
+ if (scene->_actionIdx1 != 1) {
+ int tmpVal = scene->getFreeHandCard(scene->_actionIdx1);
+ scene->_actionCard3 = &scene->_gameBoardSide[scene->_actionIdx1]._handCard[tmpVal];
}
scene->_item1.setAction(&scene->_action12);
noAction = false;
@@ -3994,17 +4000,17 @@ void Scene1337::Action11::signal() {
}
}
- if ((found) && (scene->subC3E92(scene->_field4240) != -1)) {
+ if ((found) && (scene->getFreeHandCard(scene->_actionIdx1) != -1)) {
scene->subC4CD2();
if (MessageDialog::show(USE_DOUBLE_AGENT, NO_MSG, YES_MSG) == 0)
scene->subC4CEC();
else {
scene->subC4CEC();
- scene->_discardCard = &scene->_gameBoardSide[2]._handCard[i];
- scene->_field3EF4 = &scene->_gameBoardSide[2]._emptyStationPos;
- if (scene->_field4240 != 2) {
- int tmpVal = scene->subC3E92(scene->_field4240);
- scene->_field3EF8 = &scene->_gameBoardSide[scene->_field4240]._handCard[tmpVal];
+ scene->_actionCard1 = &scene->_gameBoardSide[2]._handCard[i];
+ scene->_actionCard2 = &scene->_gameBoardSide[2]._emptyStationPos;
+ if (scene->_actionIdx1 != 2) {
+ int tmpVal = scene->getFreeHandCard(scene->_actionIdx1);
+ scene->_actionCard3 = &scene->_gameBoardSide[scene->_actionIdx1]._handCard[tmpVal];
}
scene->_item1.setAction(&scene->_action12);
noAction = false;
@@ -4019,12 +4025,12 @@ void Scene1337::Action11::signal() {
}
}
- if ((found) && (scene->subC3E92(scene->_field4240) != -1)) {
- scene->_discardCard = &scene->_gameBoardSide[3]._handCard[i];
- scene->_field3EF4 = &scene->_gameBoardSide[3]._emptyStationPos;
- if (scene->_field4240 != 3) {
- int tmpVal = scene->subC3E92(scene->_field4240);
- scene->_field3EF8 = &scene->_gameBoardSide[scene->_field4240]._handCard[tmpVal];
+ if ((found) && (scene->getFreeHandCard(scene->_actionIdx1) != -1)) {
+ scene->_actionCard1 = &scene->_gameBoardSide[3]._handCard[i];
+ scene->_actionCard2 = &scene->_gameBoardSide[3]._emptyStationPos;
+ if (scene->_actionIdx1 != 3) {
+ int tmpVal = scene->getFreeHandCard(scene->_actionIdx1);
+ scene->_actionCard3 = &scene->_gameBoardSide[scene->_actionIdx1]._handCard[tmpVal];
}
scene->_item1.setAction(&scene->_action12);
noAction = false;
@@ -4037,11 +4043,11 @@ void Scene1337::Action11::signal() {
if (!noAction)
return;
- if (scene->_field4240 == 2) {
+ if (scene->_actionIdx1 == 2) {
int count = 0;
- if (scene->_field4242 != 2) {
+ if (scene->_actionIdx2 != 2) {
for (i = 0; i <= 3; i++) {
- if (scene->_gameBoardSide[scene->_field4242]._handCard[i]._cardId == 0)
+ if (scene->_gameBoardSide[scene->_actionIdx2]._handCard[i]._cardId == 0)
++count;
}
}
@@ -4051,7 +4057,7 @@ void Scene1337::Action11::signal() {
found = false;
while (!found) {
- switch (scene->_field4242) {
+ switch (scene->_actionIdx2) {
case 0:
scene->actionDisplay(1330, 131, 159, 10, 1, 200, 0, 7, 0, 154, 154);
break;
@@ -4076,73 +4082,74 @@ void Scene1337::Action11::signal() {
found = false;
- if (scene->_field4242 != 2) {
+ if (scene->_actionIdx2 != 2) {
for (i = 0; i <= 3; i++) {
- if (scene->_gameBoardSide[scene->_field4242]._handCard[i].isIn(scene->_selectedCard._stationPos) && (scene->_gameBoardSide[scene->_field4242]._handCard[i]._cardId != 0)) {
- scene->_field3EF8 = &scene->_gameBoardSide[scene->_field4242]._handCard[i];
+ if (scene->_gameBoardSide[scene->_actionIdx2]._handCard[i].isIn(scene->_selectedCard._stationPos) && (scene->_gameBoardSide[scene->_actionIdx2]._handCard[i]._cardId != 0)) {
+ scene->_actionCard3 = &scene->_gameBoardSide[scene->_actionIdx2]._handCard[i];
found = true;
break;
}
}
}
} // while
- scene->_field4246 = true;
+ scene->_displayHelpFl = true;
scene->subC4CEC();
} else {
- if (scene->_field4242 != 2) {
- int tmpVal = scene->subC3E92(scene->_field4242);
- scene->_field3EF8 = &scene->_gameBoardSide[scene->_field4242]._handCard[tmpVal];
+ if (scene->_actionIdx2 != 2) {
+ int tmpVal = scene->getFreeHandCard(scene->_actionIdx2);
+ scene->_actionCard3 = &scene->_gameBoardSide[scene->_actionIdx2]._handCard[tmpVal];
}
}
}
- scene->_discardCard->_card.postInit();
- scene->_discardCard->_card.hide();
- scene->_discardCard->_card.setVisage(1332);
- scene->_discardCard->_card.setPosition(scene->_discardCard->_stationPos, 0);
- scene->_discardCard->_card.fixPriority(170);
- scene->_discardCard->_card.setStrip2(1);
- scene->_discardCard->_cardId = scene->_field3EF8->_cardId;
+ scene->_actionCard1->_card.postInit();
+ scene->_actionCard1->_card.hide();
+ scene->_actionCard1->_card.setVisage(1332);
+ scene->_actionCard1->_card.setPosition(scene->_actionCard1->_stationPos, 0);
+ scene->_actionCard1->_card.fixPriority(170);
+ scene->_actionCard1->_card.setStrip2(1);
+ scene->_actionCard1->_cardId = scene->_actionCard3->_cardId;
- scene->_field3EF8->_cardId = 0;
- scene->_field3EF8->_card.remove();
+ scene->_actionCard3->_cardId = 0;
+ scene->_actionCard3->_card.remove();
- scene->_animatedCard._card.setPosition(scene->_field3EF8->_stationPos, 0);
+ scene->_animatedCard._card.setPosition(scene->_actionCard3->_stationPos, 0);
scene->_animatedCard._card.show();
NpcMover *mover = new NpcMover();
- scene->_animatedCard._card.addMover(mover, &scene->_discardCard->_stationPos, this);
+ scene->_animatedCard._card.addMover(mover, &scene->_actionCard1->_stationPos, this);
}
break;
case 2:
scene->_animatedCard._card.hide();
- switch (scene->_field4240) {
+ switch (scene->_actionIdx1) {
case 0:
- scene->_discardCard->_card.setFrame2(2);
- scene->_discardCard->_card.show();
+ scene->_actionCard1->_card.setFrame2(2);
+ scene->_actionCard1->_card.show();
break;
case 1:
- scene->_discardCard->_card.setFrame2(4);
- scene->_discardCard->_card.show();
+ scene->_actionCard1->_card.setFrame2(4);
+ scene->_actionCard1->_card.show();
break;
case 3:
- scene->_discardCard->_card.setFrame2(3);
- scene->_discardCard->_card.show();
+ scene->_actionCard1->_card.setFrame2(3);
+ scene->_actionCard1->_card.show();
break;
default:
- scene->setAnimationInfo(scene->_discardCard);
+ scene->setAnimationInfo(scene->_actionCard1);
break;
}
scene->_currentPlayerNumb--;
scene->_showPlayerTurn = false;
- scene->discardCard(scene->_field3EF4);
+ scene->discardCard(scene->_actionCard2);
break;
default:
break;
}
}
+// Pick a card in opponent hand
void Scene1337::Action12::signal() {
Scene1337 *scene = (Scene1337 *)R2_GLOBALS._sceneManager._scene;
@@ -4151,26 +4158,26 @@ void Scene1337::Action12::signal() {
signal();
break;
case 1: {
- scene->_availableCardsPile[scene->_currentDiscardIndex] = scene->_field3EF4->_cardId;
+ scene->_availableCardsPile[scene->_currentDiscardIndex] = scene->_actionCard2->_cardId;
scene->_currentDiscardIndex++;
- scene->_field3EF4->_cardId = scene->_discardCard->_cardId;
- scene->_discardCard->_cardId = 0;
- scene->_discardCard->_card.remove();
- scene->_animatedCard._card.setPosition(scene->_discardCard->_stationPos, 0);
+ scene->_actionCard2->_cardId = scene->_actionCard1->_cardId;
+ scene->_actionCard1->_cardId = 0;
+ scene->_actionCard1->_card.remove();
+ scene->_animatedCard._card.setPosition(scene->_actionCard1->_stationPos, 0);
scene->_animatedCard._card.show();
NpcMover *mover = new NpcMover();
- scene->_animatedCard._card.addMover(mover, &scene->_field3EF4->_stationPos, this);
+ scene->_animatedCard._card.addMover(mover, &scene->_actionCard2->_stationPos, this);
}
break;
case 2:
scene->_animatedCard._card.hide();
- scene->setAnimationInfo(scene->_field3EF4);
+ scene->setAnimationInfo(scene->_actionCard2);
scene->_aSound1.play(58);
- if (scene->_field4242 == 2) {
+ if (scene->_actionIdx2 == 2) {
int count = 0;
int i = -1;
- switch (scene->_field4240) {
+ switch (scene->_actionIdx1) {
case 0:
for (i = 0; i <= 3; i++) {
if (scene->_gameBoardSide[0]._handCard[i]._cardId != 0)
@@ -4179,7 +4186,8 @@ void Scene1337::Action12::signal() {
break;
case 1:
for (i = 0; i <= 3; i++) {
- if (scene->_gameBoardSide[3]._handCard[i]._cardId != 0)
+ // The original game was counting in the hand of player 3, which is obviously wrong
+ if (scene->_gameBoardSide[1]._handCard[i]._cardId != 0)
++count;
}
break;
@@ -4199,7 +4207,7 @@ void Scene1337::Action12::signal() {
bool found = false;
while (!found) {
- switch (scene->_field4240) {
+ switch (scene->_actionIdx1) {
case 0:
scene->actionDisplay(1330, 131, 159, 10, 1, 200, 0, 7, 0, 154, 154);
break;
@@ -4222,31 +4230,31 @@ void Scene1337::Action12::signal() {
scene->_selectedCard._stationPos = event.mousePos;
- if (scene->_field4240 == 0) {
+ if (scene->_actionIdx1 == 0) {
for (i = 0; i <= 3; i++) {
if (scene->_gameBoardSide[0]._handCard[i].isIn(scene->_selectedCard._stationPos) && (scene->_gameBoardSide[0]._handCard[i]._cardId != 0)) {
found = true;
- scene->_field3EF8 = &scene->_gameBoardSide[0]._handCard[i];
+ scene->_actionCard3 = &scene->_gameBoardSide[0]._handCard[i];
break;
}
}
}
- if (scene->_field4240 == 3) {
+ if (scene->_actionIdx1 == 3) {
for (i = 0; i <= 3; i++) {
if (scene->_gameBoardSide[3]._handCard[i].isIn(scene->_selectedCard._stationPos) && (scene->_gameBoardSide[3]._handCard[i]._cardId != 0)) {
found = true;
- scene->_field3EF8 = &scene->_gameBoardSide[3]._handCard[i];
+ scene->_actionCard3 = &scene->_gameBoardSide[3]._handCard[i];
break;
}
}
}
- if (scene->_field4240 == 1) {
+ if (scene->_actionIdx1 == 1) {
for (i = 0; i <= 3; i++) {
if (scene->_gameBoardSide[1]._handCard[i].isIn(scene->_selectedCard._stationPos) && (scene->_gameBoardSide[1]._handCard[i]._cardId != 0)) {
found = true;
- scene->_field3EF8 = &scene->_gameBoardSide[1]._handCard[i];
+ scene->_actionCard3 = &scene->_gameBoardSide[1]._handCard[i];
break;
}
}
@@ -4254,61 +4262,61 @@ void Scene1337::Action12::signal() {
}
scene->subC4CEC();
} else {
- if (scene->_field4240 != 1) {
- switch (scene->_field4240) {
+ if (scene->_actionIdx1 != 1) {
+ switch (scene->_actionIdx1) {
case 0:
- scene->_field3EF8 = &scene->_gameBoardSide[0]._handCard[scene->subC3E92(0)];
+ scene->_actionCard3 = &scene->_gameBoardSide[0]._handCard[scene->getFreeHandCard(0)];
break;
case 3:
- scene->_field3EF8 = &scene->_gameBoardSide[3]._handCard[scene->subC3E92(3)];
+ scene->_actionCard3 = &scene->_gameBoardSide[3]._handCard[scene->getFreeHandCard(3)];
break;
default:
break;
}
} else {
- scene->_field3EF8 = &scene->_gameBoardSide[1]._handCard[scene->subC3E92(1)];
+ scene->_actionCard3 = &scene->_gameBoardSide[1]._handCard[scene->getFreeHandCard(1)];
}
}
- scene->_discardCard->_card.postInit();
- scene->_discardCard->_card.hide();
- scene->_discardCard->_card.setVisage(1332);
- scene->_discardCard->_card.setPosition(scene->_discardCard->_stationPos);
- scene->_discardCard->_card.fixPriority(170);
- scene->_discardCard->_card.setStrip2(1);
- scene->_discardCard->_cardId = scene->_field3EF8->_cardId;
+ scene->_actionCard1->_card.postInit();
+ scene->_actionCard1->_card.hide();
+ scene->_actionCard1->_card.setVisage(1332);
+ scene->_actionCard1->_card.setPosition(scene->_actionCard1->_stationPos);
+ scene->_actionCard1->_card.fixPriority(170);
+ scene->_actionCard1->_card.setStrip2(1);
+ scene->_actionCard1->_cardId = scene->_actionCard3->_cardId;
- scene->_field3EF8->_cardId = 0;
- scene->_field3EF8->_card.remove();
+ scene->_actionCard3->_cardId = 0;
+ scene->_actionCard3->_card.remove();
- scene->_animatedCard._card.setPosition(scene->_field3EF8->_stationPos);
+ scene->_animatedCard._card.setPosition(scene->_actionCard3->_stationPos);
scene->_animatedCard._card.show();
scene->_aSound1.play(57);
NpcMover *mover = new NpcMover();
- scene->_animatedCard._card.addMover(mover, &scene->_discardCard->_stationPos, this);
+ scene->_animatedCard._card.addMover(mover, &scene->_actionCard1->_stationPos, this);
}
break;
case 3:
scene->_animatedCard._card.hide();
- switch (scene->_field4242) {
+ switch (scene->_actionIdx2) {
case 0:
- scene->_discardCard->_card.setFrame2(2);
- scene->_discardCard->_card.show();
+ scene->_actionCard1->_card.setFrame2(2);
+ scene->_actionCard1->_card.show();
break;
case 1:
- scene->_discardCard->_card.setFrame2(4);
- scene->_discardCard->_card.show();
+ scene->_actionCard1->_card.setFrame2(4);
+ scene->_actionCard1->_card.show();
break;
case 3:
- scene->_discardCard->_card.setFrame2(3);
- scene->_discardCard->_card.show();
+ scene->_actionCard1->_card.setFrame2(3);
+ scene->_actionCard1->_card.show();
break;
default:
- scene->setAnimationInfo(scene->_discardCard);
+ scene->setAnimationInfo(scene->_actionCard1);
break;
}
- scene->discardCard(scene->_field3EF4);
+ scene->discardCard(scene->_actionCard2);
break;
default:
break;
@@ -4320,29 +4328,29 @@ void Scene1337::Action13::signal() {
switch (_actionIndex++) {
case 0: {
- scene->_availableCardsPile[scene->_currentDiscardIndex] = scene->_field3EF4->_cardId;
+ scene->_availableCardsPile[scene->_currentDiscardIndex] = scene->_actionCard2->_cardId;
scene->_currentDiscardIndex--;
- scene->_field3EF4->_cardId = scene->_discardCard->_cardId;
+ scene->_actionCard2->_cardId = scene->_actionCard1->_cardId;
- scene->_discardCard->_cardId = 0;
- scene->_discardCard->_card.remove();
+ scene->_actionCard1->_cardId = 0;
+ scene->_actionCard1->_card.remove();
- scene->_animatedCard._card.setPosition(scene->_discardCard->_stationPos, 0);
+ scene->_animatedCard._card.setPosition(scene->_actionCard1->_stationPos, 0);
scene->_animatedCard._card.show();
NpcMover *mover = new NpcMover();
- scene->_animatedCard._card.addMover(mover, &scene->_field3EF4->_stationPos, this);
+ scene->_animatedCard._card.addMover(mover, &scene->_actionCard2->_stationPos, this);
}
break;
case 1:
scene->_animatedCard._card.hide();
- scene->setAnimationInfo(scene->_field3EF4);
+ scene->setAnimationInfo(scene->_actionCard2);
scene->_aSound1.play(58);
signal();
break;
case 2:
- scene->discardCard(scene->_field3EF4);
+ scene->discardCard(scene->_actionCard2);
break;
default:
break;
@@ -4359,15 +4367,17 @@ void Scene1337::postInit(SceneObjectList *OwnerList) {
// Hide the user interface
BF_GLOBALS._interfaceY = SCREEN_HEIGHT;
+ R2_GLOBALS._uiElements._visible = false;
R2_GLOBALS._player.enableControl();
R2_GLOBALS._player._canWalk = false;
+ R2_GLOBALS._player._uiEnabled = false;
- _unkFctPtr412 = NULL;
+ _delayedFunction = nullptr;
- _discardCard = nullptr;
- _field3EF4 = nullptr;
- _field3EF8 = nullptr;
+ _actionCard1 = nullptr;
+ _actionCard2 = nullptr;
+ _actionCard3 = nullptr;
_gameBoardSide[2]._handCard[0]._stationPos = Common::Point(10, 174);
_gameBoardSide[2]._handCard[1]._stationPos = Common::Point(37, 174);
@@ -4485,17 +4495,17 @@ void Scene1337::process(Event &event) {
if (event.btnState != BTNSHIFT_RIGHT) {
updateCursorId(R2_GLOBALS._mouseCursorId, true);
event.handled = true;
- } else if (_unkFctPtr412) {
- FunctionPtrType tmpFctPtr = _unkFctPtr412;
- _unkFctPtr412 = NULL;
+ } else if (_delayedFunction) {
+ FunctionPtrType tmpFctPtr = _delayedFunction;
+ _delayedFunction = nullptr;
(this->*tmpFctPtr)();
event.handled = true;
}
} else if (event.eventType == EVENT_KEYPRESS) {
if (event.kbd.keycode == Common::KEYCODE_SPACE) {
- if (_unkFctPtr412) {
- FunctionPtrType tmpFctPtr = _unkFctPtr412;
- _unkFctPtr412 = NULL;
+ if (_delayedFunction) {
+ FunctionPtrType tmpFctPtr = _delayedFunction;
+ _delayedFunction = nullptr;
(this->*tmpFctPtr)();
event.handled = true;
}
@@ -4534,24 +4544,24 @@ void Scene1337::actionDisplay(int resNum, int lineNum, int x, int y, int keepOnS
SET_EXT_FGCOLOR, colFGExt, LIST_END);
}
-void Scene1337::setAnimationInfo(Card *subObj) {
- if (!subObj)
+void Scene1337::setAnimationInfo(Card *card) {
+ if (!card)
return;
- if (subObj->_cardId > 9) {
- if (subObj->_cardId > 25) {
- subObj->_card.setStrip2(4);
- subObj->_card.setFrame(subObj->_cardId - 25);
+ if (card->_cardId > 9) {
+ if (card->_cardId > 25) {
+ card->_card.setStrip2(4);
+ card->_card.setFrame(card->_cardId - 25);
} else {
- subObj->_card.setStrip2(3);
- subObj->_card.setFrame(subObj->_cardId - 9);
+ card->_card.setStrip2(3);
+ card->_card.setFrame(card->_cardId - 9);
}
} else {
- subObj->_card.setStrip2(2);
- subObj->_card.setFrame(subObj->_cardId);
+ card->_card.setStrip2(2);
+ card->_card.setFrame(card->_cardId);
}
- subObj->_card.show();
+ card->_card.show();
R2_GLOBALS._sceneObjects->draw();
}
@@ -4559,11 +4569,11 @@ void Scene1337::subC20E5() {
subC2586();
}
-void Scene1337::subC20F9() {
- switch (_field424A) {
+void Scene1337::handleNextTurn() {
+ switch (_winnerId) {
case -1:
++_currentPlayerNumb;
- if (_currentPlayerNumb == 3)
+ if (_currentPlayerNumb > 3)
_currentPlayerNumb = 0;
if (_showPlayerTurn) {
@@ -4588,7 +4598,7 @@ void Scene1337::subC20F9() {
}
if (!_autoplay)
- _unkFctPtr412 = &Scene1337::subC20E5;
+ _delayedFunction = &Scene1337::subC20E5;
else
subC20E5();
} else {
@@ -4631,7 +4641,7 @@ void Scene1337::subC20F9() {
break;
}
- if (_field424A != -1)
+ if (_winnerId != -1)
R2_GLOBALS._sceneManager.changeScene(125);
}
@@ -4643,9 +4653,9 @@ void Scene1337::subC2586() {
switch (_currentPlayerNumb) {
case 2:
subC4CD2();
- if (_field4246)
+ if (_displayHelpFl)
actionDisplay(1330, 114, 159, 10, 1, 200, 0, 7, 0, 154, 154);
- _field4246 = false;
+ _displayHelpFl = false;
// No break on purpose
case 0:
// No break on purpose
@@ -4661,8 +4671,8 @@ void Scene1337::subC2586() {
}
-bool Scene1337::subC264B(int arg1) {
- switch (arg1) {
+bool Scene1337::subC264B(int cardId) {
+ switch (cardId) {
case 10:
// No break on purpose
case 12:
@@ -4684,8 +4694,8 @@ bool Scene1337::subC264B(int arg1) {
}
}
-bool Scene1337::subC2687(int arg1) {
- switch (arg1) {
+bool Scene1337::subC2687(int cardId) {
+ switch (cardId) {
case 11:
// No break on purpose
case 14:
@@ -4699,26 +4709,25 @@ bool Scene1337::subC2687(int arg1) {
}
}
-int Scene1337::subC26CB(int arg1, int arg2) {
- if ((_gameBoardSide[arg1]._handCard[arg2]._cardId > 1) && (_gameBoardSide[arg1]._handCard[arg2]._cardId <= 9)) {
- return arg2;
- }
+int Scene1337::subC26CB(int playerId, int handCardId) {
+ if ((_gameBoardSide[playerId]._handCard[handCardId]._cardId > 1) && (_gameBoardSide[playerId]._handCard[handCardId]._cardId <= 9))
+ return handCardId;
return -1;
}
-int Scene1337::subC2719(int arg1) {
+int Scene1337::findNormalCardInHand(int playerId) {
for (int i = 0; i <= 3; i++) {
- if (_gameBoardSide[arg1]._handCard[i]._cardId == 1)
+ if (_gameBoardSide[playerId]._handCard[i]._cardId == 1)
return i;
}
return -1;
}
-int Scene1337::subC274D(int arg1) {
+int Scene1337::subC274D(int playerId) {
for (int i = 0; i <= 3; i++) {
- if (_gameBoardSide[arg1]._handCard[i]._cardId == 13)
+ if (_gameBoardSide[playerId]._handCard[i]._cardId == 13)
return i;
}
@@ -4751,8 +4760,8 @@ int Scene1337::subC27B5(int arg1) {
}
}
-int Scene1337::subC27F9(int arg1) {
- switch (arg1) {
+int Scene1337::isSlowCard(int cardId) {
+ switch (cardId) {
case 10:
// No break on purpose
case 12:
@@ -4768,7 +4777,7 @@ int Scene1337::subC27F9(int arg1) {
case 20:
// No break on purpose
case 21:
- return arg1;
+ return cardId;
default:
return -1;
}
@@ -4780,7 +4789,7 @@ void Scene1337::subC2835(int arg1) {
switch (arg1) {
case 0:
for (i = 0; i <= 3; i++) {
- if (subC27F9(_gameBoardSide[arg1]._handCard[i]._cardId) != -1) {
+ if (isSlowCard(_gameBoardSide[arg1]._handCard[i]._cardId) != -1) {
found = true;
break;
}
@@ -4878,7 +4887,7 @@ void Scene1337::subC2835(int arg1) {
break;
for (i = 0; i <= 3; i++) {
- if (subC27F9(_gameBoardSide[arg1]._handCard[i]._cardId) != -1) {
+ if (isSlowCard(_gameBoardSide[arg1]._handCard[i]._cardId) != -1) {
found = true;
break;
}
@@ -4922,205 +4931,21 @@ void Scene1337::subC2835(int arg1) {
discardCard(&_gameBoardSide[arg1]._handCard[i]);
}
-void Scene1337::subC2C2F() {
- bool found = true;
-
- if (_gameBoardSide[3]._delayCard._cardId != 0) {
- switch (_gameBoardSide[3]._delayCard._cardId) {
- case 10:
- // No break on purpose
- case 12:
- // No break on purpose
- case 15:
- // No break on purpose
- case 17:
- // No break on purpose
- case 18:
- // No break on purpose
- case 19:
- // No break on purpose
- case 20:
- // No break on purpose
- case 21:
- discardCard(&_gameBoardSide[3]._delayCard);
- found = false;
- break;
- default:
- found = false;
- int i;
- for (i = 0; i <= 3; i++) {
- if (subC3386(_gameBoardSide[3]._delayCard._cardId, _gameBoardSide[3]._handCard[i]._cardId)) {
- found = true;
- break;
- }
- }
-
- if (found) {
- found = false;
- subC34A1(&_gameBoardSide[3]._handCard[i], &_gameBoardSide[3]._delayCard);
- }
- break;
- }
- }
-
- if (!found)
- return;
-
- int randIndx = R2_GLOBALS._randomSource.getRandomNumber(3);
-
- if (_gameBoardSide[3]._handCard[randIndx]._cardId == 1) {
- found = false;
-
- for (int i = 0; i <= 7; i++) {
- if ((_gameBoardSide[3]._outpostStation[i]._cardId == 0) && (!subC2687(_gameBoardSide[3]._delayCard._cardId))) {
- subC340B(&_gameBoardSide[3]._handCard[randIndx], &_gameBoardSide[3]._outpostStation[i]);
- found = true;
- break;
- }
- }
-
- if (found) {
- return;
- }
- } else if (_gameBoardSide[3]._handCard[randIndx]._cardId <= 9) {
- found = false;
-
- for (int i = 0; i <= 7; i++) {
- if (_gameBoardSide[3]._outpostStation[i]._cardId == _gameBoardSide[3]._handCard[randIndx]._cardId) {
- found = true;
- break;
- }
- }
-
- if (!found) {
- for (int i = 0; i <= 7; i++) {
- if ((_gameBoardSide[3]._outpostStation[i]._cardId == 1) && (!subC2687(_gameBoardSide[3]._delayCard._cardId))) {
- int tmpVal = 0;
-
- for (int j = 0; j <= 7; j++) {
- if ((_gameBoardSide[3]._outpostStation[j]._cardId > 1) && (_gameBoardSide[3]._outpostStation[j]._cardId <= 9))
- ++tmpVal;
- }
-
- if (tmpVal == 7)
- _field424A = 3;
-
- subC33C0(&_gameBoardSide[3]._handCard[randIndx], &_gameBoardSide[3]._outpostStation[i]);
- found = true;
- break;
- }
- }
- if (found)
- return;
- }
- } else if (_gameBoardSide[3]._handCard[randIndx]._cardId == 13) {
- int tmpVal = subC331B(3);
-
- if (tmpVal != -1) {
- subC358E(&_gameBoardSide[3]._handCard[randIndx], tmpVal);
- return;
- }
- } else if (_gameBoardSide[3]._handCard[randIndx]._cardId == 25) {
- int tmpVal = -1;
- found = false;
- int tmpRandIndx = R2_GLOBALS._randomSource.getRandomNumber(3);
-
- for (int i = 0; i <= 3; i++) {
- if ( (tmpRandIndx != 3)
- && ( (_gameBoardSide[tmpRandIndx]._handCard[0]._cardId != 0)
- || (_gameBoardSide[tmpRandIndx]._handCard[1]._cardId != 0)
- || (_gameBoardSide[tmpRandIndx]._handCard[2]._cardId != 0)
- || (_gameBoardSide[tmpRandIndx]._handCard[3]._cardId != 0) )) {
- tmpVal = tmpRandIndx;
- break;
- }
-
- ++tmpRandIndx;
- if (tmpRandIndx > 3)
- tmpRandIndx = 0;
- }
-
- if (tmpVal != -1) {
- subC318B(3, &_gameBoardSide[3]._handCard[randIndx], tmpVal);
- return;
- }
- } else {
- switch (_gameBoardSide[3]._handCard[randIndx]._cardId) {
- case 10:
- // No break on purpose
- case 11:
- // No break on purpose
- case 12:
- // No break on purpose
- case 14:
- // No break on purpose
- case 15:
- // No break on purpose
- case 16:
- // No break on purpose
- case 17:
- // No break on purpose
- case 18:
- // No break on purpose
- case 19:
- // No break on purpose
- case 20:
- // No break on purpose
- case 21:
- // No break on purpose
- case 24: {
- int tmpVal = -1;
- int tmpRandIndx = R2_GLOBALS._randomSource.getRandomNumber(3);
-
- for (int i = 0; i <= 3; i++) {
- if (tmpRandIndx != 3) {
- // The variables 'i' and 'j' are not used in the inner code of the loop.
- // It's understandable for 'i', which helps making sure that tmpVal is used properly,
- // but it's suspect for j
- for (int j = 0; j <= 7; j++) {
- if ((_gameBoardSide[tmpRandIndx]._delayCard._cardId == 0) && (subC32B1(tmpRandIndx, _gameBoardSide[3]._handCard[randIndx]._cardId))) {
- tmpVal = j;
- }
- }
- }
-
- ++tmpRandIndx;
- if (tmpRandIndx > 3)
- tmpRandIndx = 0;
-
- if (tmpVal != -1)
- break;
- }
-
- if (tmpVal != -1) {
- // Useless second identical check skipped
- subC3456(&_gameBoardSide[3]._handCard[randIndx], &_gameBoardSide[tmpVal]._delayCard);
- return;
- }
- }
- default:
- break;
- }
- }
-
- discardCard(&_gameBoardSide[3]._handCard[randIndx]);
-}
-
-void Scene1337::subC318B(int arg1, Card *subObj1, int arg3) {
- _field4240 = arg1;
- _field4242 = arg3;
+void Scene1337::playThieftCard(int playerId, Card *card, int victimId) {
+ _actionIdx1 = playerId;
+ _actionIdx2 = victimId;
int randIndx;
for (;;) {
randIndx = R2_GLOBALS._randomSource.getRandomNumber(3);
- if (_gameBoardSide[arg3]._handCard[randIndx]._cardId != 0)
+ if (_gameBoardSide[victimId]._handCard[randIndx]._cardId != 0)
break;
}
- _discardCard = subObj1;
- _field3EF4 = &_gameBoardSide[arg3]._emptyStationPos;
- _field3EF8 = &_gameBoardSide[arg3]._handCard[randIndx];
+ _actionCard1 = card;
+ _actionCard2 = &_gameBoardSide[victimId]._emptyStationPos;
+ _actionCard3 = &_gameBoardSide[victimId]._handCard[randIndx];
_item1.setAction(&_action11);
}
@@ -5163,8 +4988,7 @@ int Scene1337::subC3257(int arg1) {
bool Scene1337::subC32B1(int arg1, int arg2) {
for (int i = 0; i <= 7; i++) {
if (_gameBoardSide[arg1]._outpostStation[i]._cardId != 0) {
- int tmpVal = subC3257(arg2);
- if (tmpVal == _gameBoardSide[arg1]._outpostStation[i]._cardId)
+ if (subC3257(arg2) == _gameBoardSide[arg1]._outpostStation[i]._cardId)
return false;
}
}
@@ -5196,92 +5020,85 @@ int Scene1337::subC331B(int arg1) {
return -1;
}
-bool Scene1337::subC3386(int arg1, int arg2) {
- if ((arg1 == 11) && (arg2 == 26))
+bool Scene1337::checkAntiDelayCard(int delayCardId, int cardId) {
+ if ((delayCardId == 11) && (cardId == 26))
return true;
- if ((arg1 == 14) && (arg2 == 30))
+ if ((delayCardId == 14) && (cardId == 30))
return true;
- if ((arg1 == 16) && (arg2 == 32))
+ if ((delayCardId == 16) && (cardId == 32))
return true;
- if ((arg1 == 24) && (arg2 == 28))
+ if ((delayCardId == 24) && (cardId == 28))
return true;
return false;
}
void Scene1337::subC33C0(Card *subObj1, Card *subObj2) {
- _field3EF4 = subObj2;
- _discardCard = subObj1;
+ _actionCard1 = subObj1;
+ _actionCard2 = subObj2;
_item1.setAction(&_action7);
}
-int Scene1337::subC3E92(int arg1) {
- if ( (_gameBoardSide[arg1]._handCard[0]._cardId == 0)
- && (_gameBoardSide[arg1]._handCard[1]._cardId == 0)
- && (_gameBoardSide[arg1]._handCard[2]._cardId == 0)
- && (_gameBoardSide[arg1]._handCard[3]._cardId == 0))
+int Scene1337::getFreeHandCard(int playerId) {
+ if ( (_gameBoardSide[playerId]._handCard[0]._cardId == 0)
+ && (_gameBoardSide[playerId]._handCard[1]._cardId == 0)
+ && (_gameBoardSide[playerId]._handCard[2]._cardId == 0)
+ && (_gameBoardSide[playerId]._handCard[3]._cardId == 0))
return -1;
int randIndx;
for (;;) {
randIndx = R2_GLOBALS._randomSource.getRandomNumber(3);
- if (_gameBoardSide[arg1]._handCard[randIndx]._cardId == 0)
+ if (_gameBoardSide[playerId]._handCard[randIndx]._cardId == 0)
break;
}
return randIndx;
}
-void Scene1337::subC340B(Card *subObj1, Card *subObj2) {
- _discardCard = subObj1;
- _field3EF4 = subObj2;
+void Scene1337::playCard(Card *card, Card *dest) {
+ _actionCard1 = card;
+ _actionCard2 = dest;
_item1.setAction(&_action6);
}
-void Scene1337::subC3456(Card *subObj1, Card *subObj2) {
- _discardCard = subObj1;
- _field3EF4 = subObj2;
+void Scene1337::playDelayCard(Card *card, Card *dest) {
+ _actionCard1 = card;
+ _actionCard2 = dest;
_item1.setAction(&_action9);
}
-void Scene1337::subC34A1(Card *subObj1, Card *subObj2) {
- _discardCard = subObj1;
- _field3EF4 = subObj2;
+void Scene1337::playAntiDelayCard(Card *card, Card *dest) {
+ _actionCard1 = card;
+ _actionCard2 = dest;
_item1.setAction(&_action8);
}
Scene1337::Card *Scene1337::subC34EC(int arg1) {
for (int i = 0; i <= 7; i++) {
- if (_gameBoardSide[arg1]._outpostStation[i]._cardId == 1) {
- return &_gameBoardSide[arg1]._outpostStation[i];
- }
- }
-
- for (int i = 0; i <= 7; i++) {
- if ((_gameBoardSide[arg1]._outpostStation[i]._cardId != 0) && (_gameBoardSide[arg1]._outpostStation[i]._cardId < 10)) {
+ if ((_gameBoardSide[arg1]._outpostStation[i]._cardId > 0) && (_gameBoardSide[arg1]._outpostStation[i]._cardId < 10))
return &_gameBoardSide[arg1]._outpostStation[i];
- }
}
- return NULL;
+ return nullptr;
}
-void Scene1337::subC358E(Card *subObj1, int arg2) {
- _discardCard = subObj1;
- _field3EF4 = subC34EC(arg2);
- _field3EF8 = &_gameBoardSide[arg2]._emptyStationPos;
- _field4240 = arg2;
+void Scene1337::playCounterTrickCard(Card *card, int playerId) {
+ _actionCard1 = card;
+ _actionCard2 = subC34EC(playerId);
+ _actionCard3 = &_gameBoardSide[playerId]._emptyStationPos;
+ _actionIdx1 = playerId;
_item1.setAction(&_action10);
}
void Scene1337::discardCard(Card *card) {
- _discardCard = card;
+ _actionCard1 = card;
_item1.setAction(&_action5);
}
@@ -5301,8 +5118,8 @@ void Scene1337::subC4CEC() {
}
void Scene1337::subC51A0(Card *subObj1, Card *subObj2) {
- _discardCard = subObj1;
- _field3EF4 = subObj2;
+ _actionCard1 = subObj1;
+ _actionCard2 = subObj2;
_item1.setAction(&_action13);
}
@@ -5550,8 +5367,8 @@ void Scene1337::subPostInit() {
_currentPlayerArrow.hide();
_showPlayerTurn = true;
- _field4246 = false;
- _field424A = -1;
+ _displayHelpFl = false;
+ _winnerId = -1;
_helpIcon.postInit();
_helpIcon.setup(9531, 1, 1);
@@ -5947,7 +5764,260 @@ void Scene1337::handleClick(int arg1, Common::Point pt) {
}
}
-void Scene1337::subCF31D() {
+void Scene1337::handlePlayer0() {
+ bool found = true;
+
+ if (_gameBoardSide[0]._delayCard._cardId != 0) {
+ switch (_gameBoardSide[0]._delayCard._cardId) {
+ case 10:
+ //No break on purpose
+ case 12:
+ //No break on purpose
+ case 15:
+ //No break on purpose
+ case 17:
+ //No break on purpose
+ case 18:
+ //No break on purpose
+ case 19:
+ //No break on purpose
+ case 20:
+ //No break on purpose
+ case 21:
+ discardCard(&_gameBoardSide[0]._delayCard);
+ found = false;
+ break;
+ default:
+ int i;
+ found = false;
+
+ for (i = 0; i <= 3; i++) {
+ if (checkAntiDelayCard(_gameBoardSide[0]._delayCard._cardId, _gameBoardSide[0]._handCard[i]._cardId)) {
+ found = true;
+ break;
+ }
+ }
+
+ if (found) {
+ found = false;
+ playAntiDelayCard(&_gameBoardSide[0]._handCard[i], &_gameBoardSide[0]._delayCard);
+ }
+ break;
+ }
+ }
+
+ if (found)
+ return;
+
+ int tmpVal;
+ found = false;
+ for (int i = 0; i <= 3; i++) {
+ tmpVal = subC26CB(0, i);
+
+ if (tmpVal != -1) {
+ bool flag = false;
+ for (int j = 0; j <= 7; j++) {
+ if (_gameBoardSide[0]._outpostStation[j]._cardId == _gameBoardSide[0]._handCard[tmpVal]._cardId) {
+ flag = true;
+ break;
+ }
+ }
+
+ if (!flag) {
+ for (int j = 0; j <= 7; j++) {
+ if ((_gameBoardSide[0]._outpostStation[j]._cardId == 1) && (!subC2687(_gameBoardSide[0]._delayCard._cardId))) {
+ int count = 0;
+ for (int k = 0; k <= 7; k++) {
+ if ((_gameBoardSide[0]._outpostStation[k]._cardId > 1) && (_gameBoardSide[0]._outpostStation[k]._cardId <= 9)) {
+ ++count;
+ }
+ }
+
+ if (count == 7)
+ _winnerId = 0;
+
+ subC33C0(&_gameBoardSide[0]._handCard[tmpVal], &_gameBoardSide[0]._outpostStation[j]);
+ found = true;
+ }
+ }
+ }
+ }
+
+ if (found)
+ break;
+ }
+
+ if (found)
+ return;
+
+ found = false;
+ tmpVal = findNormalCardInHand(0);
+
+ if (tmpVal != -1) {
+ for (int i = 0; i <= 7; i++) {
+ if ((_gameBoardSide[0]._outpostStation[i]._cardId == 0) && (!subC2687(_gameBoardSide[0]._delayCard._cardId))) {
+ playCard(&_gameBoardSide[0]._handCard[tmpVal], &_gameBoardSide[0]._outpostStation[i]);
+ found = true;
+ break;
+ }
+ }
+ }
+
+ if (found)
+ return;
+
+ tmpVal = subC274D(0);
+ if (tmpVal != -1) {
+ for (int i = 0; i <= 7; i++) {
+ if (_gameBoardSide[2]._outpostStation[i]._cardId != 0) {
+ playCounterTrickCard(&_gameBoardSide[0]._handCard[tmpVal], 2);
+ found = true;
+ break;
+ }
+ }
+ }
+
+ if (found)
+ return;
+
+ tmpVal = subC2781(0);
+ if (tmpVal != -1) {
+ if ( (_gameBoardSide[2]._handCard[0]._cardId != 0)
+ || (_gameBoardSide[2]._handCard[1]._cardId != 0)
+ || (_gameBoardSide[2]._handCard[2]._cardId != 0)
+ || (_gameBoardSide[2]._handCard[3]._cardId != 0) ) {
+ playThieftCard(0, &_gameBoardSide[0]._handCard[tmpVal], 2);
+ found = true;
+ }
+ }
+
+ if (found)
+ return;
+
+ for (int i = 0; i <= 3; i++) {
+ if (subC27B5(_gameBoardSide[0]._handCard[i]._cardId) != -1) {
+ // The variable 'j' is not used in the inner code of the loop. It's suspect
+ for (int j = 0; j <= 7; j++) {
+ if ((_gameBoardSide[2]._delayCard._cardId == 0) && (subC32B1(2, _gameBoardSide[0]._handCard[i]._cardId))) {
+ playDelayCard(&_gameBoardSide[0]._handCard[i], &_gameBoardSide[2]._delayCard);
+ found = true;
+ break;
+ }
+ }
+
+ if (found)
+ break;
+ }
+ }
+
+ if (found)
+ return;
+
+ for (int i = 0; i <= 3; i++) {
+ if (isSlowCard(_gameBoardSide[0]._handCard[i]._cardId) != -1) {
+ // The variable 'j' is not used in the inner code of the loop. It's suspect
+ for (int j = 0; j <= 7; j++) {
+ if ((_gameBoardSide[2]._delayCard._cardId == 0) && (subC32B1(2, _gameBoardSide[0]._handCard[i]._cardId))) {
+ playDelayCard(&_gameBoardSide[0]._handCard[i], &_gameBoardSide[2]._delayCard);
+ found = true;
+ }
+ }
+
+ if (found)
+ break;
+ }
+ }
+
+ if (found)
+ return;
+
+ tmpVal = subC274D(0);
+ int tmpVal2 = subC331B(0);
+
+ if ((tmpVal != -1) && (tmpVal2 != -1)) {
+ playCounterTrickCard(&_gameBoardSide[0]._handCard[tmpVal], tmpVal2);
+ found = true;
+ }
+
+ if (found)
+ return;
+
+ tmpVal = subC2781(0);
+ if (tmpVal != -1) {
+ if ( (_gameBoardSide[1]._handCard[0]._cardId != 0)
+ || (_gameBoardSide[1]._handCard[1]._cardId != 0)
+ || (_gameBoardSide[1]._handCard[2]._cardId != 0)
+ || (_gameBoardSide[1]._handCard[3]._cardId != 0) ) {
+ playThieftCard(0, &_gameBoardSide[0]._handCard[tmpVal], 1);
+ found = true;
+ }
+ }
+
+ if (found)
+ return;
+
+ for (int i = 0; i <= 3; i++) {
+ tmpVal = isSlowCard(_gameBoardSide[0]._handCard[i]._cardId);
+ if (tmpVal != -1) {
+ // The variable 'j' is not used in the inner code of the loop. It's suspect.
+ for (int j = 0; j <= 7; j++) {
+ if ((_gameBoardSide[1]._delayCard._cardId == 0) && (subC32B1(1, _gameBoardSide[0]._handCard[i]._cardId))) {
+ playDelayCard(&_gameBoardSide[0]._handCard[i], &_gameBoardSide[1]._delayCard);
+ found = true;
+ }
+ }
+
+ if (!found) {
+ // The variable 'j' is not used in the inner code of the loop. It's suspect.
+ for (int j = 0; j <= 7; j++) {
+ if ((_gameBoardSide[3]._delayCard._cardId == 0) && (subC32B1(3, _gameBoardSide[0]._handCard[i]._cardId))) {
+ playDelayCard(&_gameBoardSide[0]._handCard[i], &_gameBoardSide[3]._delayCard);
+ found = true;
+ }
+ }
+ }
+
+ if (found)
+ break;
+ }
+ }
+
+ if (found)
+ return;
+
+ for (int i = 0; i <= 3; i++) {
+ tmpVal = subC27B5(_gameBoardSide[0]._handCard[i]._cardId);
+ if (tmpVal != -1) {
+ // The variable 'j' is not used in the inner code of the loop. It's suspect.
+ for (int j = 0; j <= 7; j++) {
+ if ((_gameBoardSide[1]._delayCard._cardId == 0) && (subC32B1(1, _gameBoardSide[0]._handCard[i]._cardId))) {
+ playDelayCard(&_gameBoardSide[0]._handCard[i], &_gameBoardSide[1]._delayCard);
+ found = true;
+ }
+ }
+
+ if (!found) {
+ // The variable 'j' is not used in the inner code of the loop. It's suspect.
+ for (int j = 0; j <= 7; j++) {
+ if ((_gameBoardSide[3]._delayCard._cardId == 0) && (subC32B1(3, _gameBoardSide[0]._handCard[i]._cardId))) {
+ playDelayCard(&_gameBoardSide[0]._handCard[i], &_gameBoardSide[3]._delayCard);
+ found = true;
+ }
+ }
+ }
+
+ if (found)
+ break;
+ }
+ }
+
+ if (found)
+ return;
+
+ subC2835(0);
+}
+
+void Scene1337::handlePlayer1() {
int tmpVal = 1;
bool found;
int count;
@@ -5955,19 +6025,19 @@ void Scene1337::subCF31D() {
if (this->_gameBoardSide[1]._delayCard._cardId != 0) {
switch (_gameBoardSide[1]._delayCard._cardId) {
case 10:
- // No break on purpose
+ // No break on purpose
case 12:
- // No break on purpose
+ // No break on purpose
case 15:
- // No break on purpose
+ // No break on purpose
case 17:
- // No break on purpose
+ // No break on purpose
case 18:
- // No break on purpose
+ // No break on purpose
case 19:
- // No break on purpose
+ // No break on purpose
case 20:
- // No break on purpose
+ // No break on purpose
case 21:
tmpVal = 0;
discardCard(&_gameBoardSide[1]._delayCard);
@@ -5976,7 +6046,7 @@ void Scene1337::subCF31D() {
found = false;
int i;
for (i = 0; i <= 3; i++) {
- if (subC3386(_gameBoardSide[1]._delayCard._cardId, _gameBoardSide[1]._handCard[i]._cardId)) {
+ if (checkAntiDelayCard(_gameBoardSide[1]._delayCard._cardId, _gameBoardSide[1]._handCard[i]._cardId)) {
found = true;
break;
}
@@ -5984,7 +6054,7 @@ void Scene1337::subCF31D() {
if (found) {
tmpVal = 0;
- subC34A1(&_gameBoardSide[1]._handCard[i], &_gameBoardSide[1]._delayCard);
+ playAntiDelayCard(&_gameBoardSide[1]._handCard[i], &_gameBoardSide[1]._delayCard);
}
}
}
@@ -6010,21 +6080,19 @@ void Scene1337::subCF31D() {
break;
for (int j = 0; j <= 7; j++) {
- if (_gameBoardSide[1]._outpostStation[j]._cardId == 1) {
- if (!subC2687(_gameBoardSide[1]._delayCard._cardId)) {
- count = 0;
- for (int k = 0; k <= 7; k++) {
- if ((_gameBoardSide[1]._outpostStation[k]._cardId > 1) && (_gameBoardSide[1]._outpostStation[k]._cardId <= 9))
- ++count;
- }
+ if ((_gameBoardSide[1]._outpostStation[j]._cardId == 1) && !subC2687(_gameBoardSide[1]._delayCard._cardId)) {
+ count = 0;
+ for (int k = 0; k <= 7; k++) {
+ if ((_gameBoardSide[1]._outpostStation[k]._cardId > 1) && (_gameBoardSide[1]._outpostStation[k]._cardId <= 9))
+ ++count;
+ }
- if (count == 7)
- _field424A = 1;
+ if (count == 7)
+ _winnerId = 1;
- subC33C0(&_gameBoardSide[1]._handCard[tmpIndx], &_gameBoardSide[1]._outpostStation[j]);
- found = true;
- break;
- }
+ subC33C0(&_gameBoardSide[1]._handCard[tmpIndx], &_gameBoardSide[1]._outpostStation[j]);
+ found = true;
+ break;
}
}
}
@@ -6032,11 +6100,11 @@ void Scene1337::subCF31D() {
if (found)
return;
- tmpVal = subC2719(1);
+ tmpVal = findNormalCardInHand(1);
if (tmpVal != -1) {
for (int i = 0; i <= 7; i++) {
if ((_gameBoardSide[1]._outpostStation[i]._cardId == 0) && (!subC2687(_gameBoardSide[1]._delayCard._cardId))) {
- subC340B(&_gameBoardSide[1]._handCard[tmpVal], &_gameBoardSide[1]._outpostStation[i]);
+ playCard(&_gameBoardSide[1]._handCard[tmpVal], &_gameBoardSide[1]._outpostStation[i]);
found = true;
break;
}
@@ -6050,7 +6118,7 @@ void Scene1337::subCF31D() {
int tmpVal2 = subC331B(1);
if ((tmpVal != -1) && ( tmpVal2 != -1)) {
- subC358E(&_gameBoardSide[1]._handCard[tmpVal], tmpVal2);
+ playCounterTrickCard(&_gameBoardSide[1]._handCard[tmpVal], tmpVal2);
found = true;
}
@@ -6064,11 +6132,11 @@ void Scene1337::subCF31D() {
for (int i = 0; i <= 3; i++) {
if (rndVal != 1) {
if ( (_gameBoardSide[rndVal]._handCard[0]._cardId != 0)
- || (_gameBoardSide[rndVal]._handCard[1]._cardId != 0)
- || (_gameBoardSide[rndVal]._handCard[2]._cardId != 0)
- || (_gameBoardSide[rndVal]._handCard[3]._cardId == 0)) {
- count = rndVal;
- break;
+ || (_gameBoardSide[rndVal]._handCard[1]._cardId != 0)
+ || (_gameBoardSide[rndVal]._handCard[2]._cardId != 0)
+ || (_gameBoardSide[rndVal]._handCard[3]._cardId == 0)) {
+ count = rndVal;
+ break;
}
// CHECKME: inside the check on rndVal?
rndVal--;
@@ -6078,7 +6146,7 @@ void Scene1337::subCF31D() {
}
if (count != -1) {
- subC318B(1, &_gameBoardSide[1]._handCard[tmpVal], count);
+ playThieftCard(1, &_gameBoardSide[1]._handCard[tmpVal], count);
found = true;
}
}
@@ -6122,11 +6190,11 @@ void Scene1337::subCF31D() {
}
if (found)
- subC3456(&_gameBoardSide[1]._handCard[i], &_gameBoardSide[count]._delayCard);
+ playDelayCard(&_gameBoardSide[1]._handCard[i], &_gameBoardSide[count]._delayCard);
else {
int j;
for (j = 0; j <= 3; j++) {
- if (subC27F9(_gameBoardSide[1]._handCard[j]._cardId) != -1) {
+ if (isSlowCard(_gameBoardSide[1]._handCard[j]._cardId) != -1) {
count = -1;
int rndVal = R2_GLOBALS._randomSource.getRandomNumber(3);
for (int l = 0; l <= 3; l++) {
@@ -6154,42 +6222,41 @@ void Scene1337::subCF31D() {
}
if (found)
- subC3456(&_gameBoardSide[1]._handCard[j], &_gameBoardSide[count]._delayCard);
+ playDelayCard(&_gameBoardSide[1]._handCard[j], &_gameBoardSide[count]._delayCard);
else
subC2835(1);
}
}
-void Scene1337::subCF979() {
+void Scene1337::handlePlayer3() {
bool found = true;
- if (_gameBoardSide[0]._delayCard._cardId != 0) {
- switch (_gameBoardSide[0]._delayCard._cardId) {
+ if (_gameBoardSide[3]._delayCard._cardId != 0) {
+ switch (_gameBoardSide[3]._delayCard._cardId) {
case 10:
- //No break on purpose
+ // No break on purpose
case 12:
- //No break on purpose
+ // No break on purpose
case 15:
- //No break on purpose
+ // No break on purpose
case 17:
- //No break on purpose
+ // No break on purpose
case 18:
- //No break on purpose
+ // No break on purpose
case 19:
- //No break on purpose
+ // No break on purpose
case 20:
- //No break on purpose
+ // No break on purpose
case 21:
- discardCard(&_gameBoardSide[0]._delayCard);
+ discardCard(&_gameBoardSide[3]._delayCard);
found = false;
break;
default:
- int i;
found = false;
-
+ int i;
for (i = 0; i <= 3; i++) {
- if (subC3386(_gameBoardSide[0]._delayCard._cardId, _gameBoardSide[0]._handCard[i]._cardId)) {
+ if (checkAntiDelayCard(_gameBoardSide[3]._delayCard._cardId, _gameBoardSide[3]._handCard[i]._cardId)) {
found = true;
break;
}
@@ -6197,230 +6264,156 @@ void Scene1337::subCF979() {
if (found) {
found = false;
- subC34A1(&_gameBoardSide[0]._handCard[i], &_gameBoardSide[0]._delayCard);
+ playAntiDelayCard(&_gameBoardSide[3]._handCard[i], &_gameBoardSide[3]._delayCard);
}
break;
}
}
- if (found)
+ if (!found)
return;
- int tmpVal;
- found = false;
- for (int i = 0; i <= 3; i++) {
- tmpVal = subC26CB(0, i);
-
- if (tmpVal != -1) {
- bool flag = false;
- for (int j = 0; j <= 7; j++) {
- if (_gameBoardSide[0]._outpostStation[j]._cardId == _gameBoardSide[0]._handCard[tmpVal]._cardId) {
- flag = true;
- break;
- }
- }
-
- if (!flag) {
- for (int j = 0; j <= 7; j++) {
- if ((_gameBoardSide[0]._outpostStation[j]._cardId == 1) && (!subC2687(_gameBoardSide[0]._delayCard._cardId))) {
- int count = 0;
- for (int k = 0; k <= 7; k++) {
- if ((_gameBoardSide[0]._outpostStation[k]._cardId > 1) && (_gameBoardSide[0]._outpostStation[k]._cardId <= 9)) {
- ++count;
- }
- }
-
- if (count == 7)
- _field424A = 0;
-
- subC33C0(&_gameBoardSide[0]._handCard[tmpVal], &_gameBoardSide[0]._outpostStation[j]);
- found = true;
- }
- }
- }
- }
-
- if (found)
- break;
- }
-
- if (found)
- return;
+ int randIndx = R2_GLOBALS._randomSource.getRandomNumber(3);
- found = false;
- tmpVal = subC2719(0);
+ if (_gameBoardSide[3]._handCard[randIndx]._cardId == 1) {
+ found = false;
- if (tmpVal != -1) {
for (int i = 0; i <= 7; i++) {
- if ((_gameBoardSide[0]._outpostStation[i]._cardId == 0) && (!subC2687(_gameBoardSide[0]._delayCard._cardId))) {
- subC340B(&_gameBoardSide[0]._handCard[tmpVal], &_gameBoardSide[0]._outpostStation[i]);
+ if ((_gameBoardSide[3]._outpostStation[i]._cardId == 0) && (!subC2687(_gameBoardSide[3]._delayCard._cardId))) {
+ playCard(&_gameBoardSide[3]._handCard[randIndx], &_gameBoardSide[3]._outpostStation[i]);
found = true;
break;
}
}
- }
- if (found)
- return;
+ if (found) {
+ return;
+ }
+ } else if (_gameBoardSide[3]._handCard[randIndx]._cardId <= 9) {
+ found = false;
- tmpVal = subC274D(0);
- if (tmpVal != -1) {
for (int i = 0; i <= 7; i++) {
- if (_gameBoardSide[2]._outpostStation[i]._cardId != 0) {
- subC358E(&_gameBoardSide[0]._handCard[tmpVal], 2);
+ if (_gameBoardSide[3]._outpostStation[i]._cardId == _gameBoardSide[3]._handCard[randIndx]._cardId) {
found = true;
break;
}
}
- }
- if (found)
- return;
+ if (!found) {
+ for (int i = 0; i <= 7; i++) {
+ if ((_gameBoardSide[3]._outpostStation[i]._cardId == 1) && (!subC2687(_gameBoardSide[3]._delayCard._cardId))) {
+ int tmpVal = 0;
- tmpVal = subC2781(0);
- if (tmpVal != -1) {
- if ( (_gameBoardSide[2]._handCard[0]._cardId != 0)
- || (_gameBoardSide[2]._handCard[1]._cardId != 0)
- || (_gameBoardSide[2]._handCard[2]._cardId != 0)
- || (_gameBoardSide[2]._handCard[3]._cardId != 0) ) {
- subC318B(0, &_gameBoardSide[0]._handCard[tmpVal], 2);
- found = true;
- }
- }
+ for (int j = 0; j <= 7; j++) {
+ if ((_gameBoardSide[3]._outpostStation[j]._cardId > 1) && (_gameBoardSide[3]._outpostStation[j]._cardId <= 9))
+ ++tmpVal;
+ }
- if (found)
- return;
+ if (tmpVal == 7)
+ _winnerId = 3;
- for (int i = 0; i <= 3; i++) {
- if (subC27B5(_gameBoardSide[0]._handCard[i]._cardId) != -1) {
- // The variable 'j' is not used in the inner code of the loop. It's suspect
- for (int j = 0; j <= 7; j++) {
- if ((_gameBoardSide[2]._delayCard._cardId == 0) && (subC32B1(2, _gameBoardSide[0]._handCard[i]._cardId))) {
- subC3456(&_gameBoardSide[0]._handCard[i], &_gameBoardSide[2]._delayCard);
+ subC33C0(&_gameBoardSide[3]._handCard[randIndx], &_gameBoardSide[3]._outpostStation[i]);
found = true;
break;
}
}
-
if (found)
- break;
+ return;
}
- }
-
- if (found)
- return;
-
- for (int i = 0; i <= 3; i++) {
- if (subC27F9(_gameBoardSide[0]._handCard[i]._cardId) != -1) {
- // The variable 'j' is not used in the inner code of the loop. It's suspect
- for (int j = 0; j <= 7; j++) {
- if ((_gameBoardSide[2]._delayCard._cardId == 0) && (subC32B1(2, _gameBoardSide[0]._handCard[i]._cardId))) {
- subC3456(&_gameBoardSide[0]._handCard[i], &_gameBoardSide[2]._delayCard);
- found = true;
- }
- }
+ } else if (_gameBoardSide[3]._handCard[randIndx]._cardId == 13) {
+ int tmpVal = subC331B(3);
- if (found)
- break;
+ if (tmpVal != -1) {
+ playCounterTrickCard(&_gameBoardSide[3]._handCard[randIndx], tmpVal);
+ return;
}
- }
-
- if (found)
- return;
-
- tmpVal = subC274D(0);
- int tmpVal2 = subC331B(0);
-
- if ((tmpVal != -1) && (tmpVal2 != -1)) {
- subC358E(&_gameBoardSide[0]._handCard[tmpVal], tmpVal2);
- found = true;
- }
+ } else if (_gameBoardSide[3]._handCard[randIndx]._cardId == 25) {
+ int tmpVal = -1;
+ found = false;
+ int tmpRandIndx = R2_GLOBALS._randomSource.getRandomNumber(3);
- if (found)
- return;
+ for (int i = 0; i <= 3; i++) {
+ if ( (tmpRandIndx != 3)
+ && ( (_gameBoardSide[tmpRandIndx]._handCard[0]._cardId != 0)
+ || (_gameBoardSide[tmpRandIndx]._handCard[1]._cardId != 0)
+ || (_gameBoardSide[tmpRandIndx]._handCard[2]._cardId != 0)
+ || (_gameBoardSide[tmpRandIndx]._handCard[3]._cardId != 0) )) {
+ tmpVal = tmpRandIndx;
+ break;
+ }
- tmpVal = subC2781(0);
- if (tmpVal != -1) {
- if ( (_gameBoardSide[1]._handCard[0]._cardId != 0)
- || (_gameBoardSide[1]._handCard[1]._cardId != 0)
- || (_gameBoardSide[1]._handCard[2]._cardId != 0)
- || (_gameBoardSide[1]._handCard[3]._cardId != 0) ) {
- subC318B(0, &_gameBoardSide[0]._handCard[tmpVal], 1);
- found = true;
+ ++tmpRandIndx;
+ if (tmpRandIndx > 3)
+ tmpRandIndx = 0;
}
- }
-
- if (found)
- return;
- for (int i = 0; i <= 3; i++) {
- tmpVal = subC27F9(_gameBoardSide[0]._handCard[i]._cardId);
if (tmpVal != -1) {
- // The variable 'j' is not used in the inner code of the loop. It's suspect.
- for (int j = 0; j <= 7; j++) {
- if ((_gameBoardSide[1]._delayCard._cardId == 0) && (subC32B1(1, _gameBoardSide[0]._handCard[i]._cardId))) {
- subC3456(&_gameBoardSide[0]._handCard[i], &_gameBoardSide[1]._delayCard);
- found = true;
- }
- }
+ playThieftCard(3, &_gameBoardSide[3]._handCard[randIndx], tmpVal);
+ return;
+ }
+ } else {
+ switch (_gameBoardSide[3]._handCard[randIndx]._cardId) {
+ case 10:
+ // No break on purpose
+ case 11:
+ // No break on purpose
+ case 12:
+ // No break on purpose
+ case 14:
+ // No break on purpose
+ case 15:
+ // No break on purpose
+ case 16:
+ // No break on purpose
+ case 17:
+ // No break on purpose
+ case 18:
+ // No break on purpose
+ case 19:
+ // No break on purpose
+ case 20:
+ // No break on purpose
+ case 21:
+ // No break on purpose
+ case 24: {
+ int tmpVal = -1;
+ int tmpRandIndx = R2_GLOBALS._randomSource.getRandomNumber(3);
- if (!found) {
- // The variable 'j' is not used in the inner code of the loop. It's suspect.
- for (int j = 0; j <= 7; j++) {
- if ((_gameBoardSide[3]._delayCard._cardId == 0) && (subC32B1(3, _gameBoardSide[0]._handCard[i]._cardId))) {
- subC3456(&_gameBoardSide[0]._handCard[i], &_gameBoardSide[3]._delayCard);
- found = true;
+ for (int i = 0; i <= 3; i++) {
+ if (tmpRandIndx != 3) {
+ // The variable 'j' is not used in the inner code of the loop, which is suspicious.
+ // 'i' is used indirectly to increment tmpRandIndx.
+ for (int j = 0; j <= 7; j++) {
+ if ((_gameBoardSide[tmpRandIndx]._delayCard._cardId == 0) && subC32B1(tmpRandIndx, _gameBoardSide[3]._handCard[randIndx]._cardId))
+ tmpVal = tmpRandIndx;
}
}
- }
- if (found)
- break;
- }
- }
-
- if (found)
- return;
+ ++tmpRandIndx;
+ if (tmpRandIndx > 3)
+ tmpRandIndx = 0;
- for (int i = 0; i <= 3; i++) {
- tmpVal = subC27B5(_gameBoardSide[0]._handCard[i]._cardId);
- if (tmpVal != -1) {
- // The variable 'j' is not used in the inner code of the loop. It's suspect.
- for (int j = 0; j <= 7; j++) {
- if ((_gameBoardSide[1]._delayCard._cardId == 0) && (subC32B1(1, _gameBoardSide[0]._handCard[i]._cardId))) {
- subC3456(&_gameBoardSide[0]._handCard[i], &_gameBoardSide[1]._delayCard);
- found = true;
- }
+ if (tmpVal != -1)
+ break;
}
- if (!found) {
- // The variable 'j' is not used in the inner code of the loop. It's suspect.
- for (int j = 0; j <= 7; j++) {
- if ((_gameBoardSide[3]._delayCard._cardId == 0) && (subC32B1(3, _gameBoardSide[0]._handCard[i]._cardId))) {
- subC3456(&_gameBoardSide[0]._handCard[i], &_gameBoardSide[3]._delayCard);
- found = true;
- }
- }
+ if (tmpVal != -1) {
+ // Useless second identical check skipped
+ playDelayCard(&_gameBoardSide[tmpVal]._handCard[randIndx], &_gameBoardSide[tmpVal]._delayCard);
+ return;
}
-
- if (found)
- break;
+ }
+ default:
+ break;
}
}
- if (found)
- return;
-
- subC2835(0);
-}
-
-void Scene1337::subD026D() {
- subD02CA();
+ discardCard(&_gameBoardSide[3]._handCard[randIndx]);
}
-void Scene1337::subD0281() {
- if (subC27F9(this->_gameBoardSide[2]._delayCard._cardId) == -1)
- _unkFctPtr412 = &Scene1337::subD026D;
+void Scene1337::handlePlayer2() {
+ if (isSlowCard(this->_gameBoardSide[2]._delayCard._cardId) == -1)
+ _delayedFunction = &Scene1337::subD02CA;
else
discardCard(&_gameBoardSide[2]._delayCard);
}
@@ -6497,7 +6490,7 @@ void Scene1337::subD02CA() {
if (i == 4) {
handleClick(1, _selectedCard._stationPos);
- subD0281();
+ handlePlayer2();
return;
} else {
setCursorData(1332, _selectedCard._card._strip, _selectedCard._card._frame);
@@ -6506,14 +6499,14 @@ void Scene1337::subD02CA() {
} else if (R2_GLOBALS._v57810 == 300) {
// Eye
handleClick(3, _selectedCard._stationPos);
- subD0281();
+ handlePlayer2();
return;
} else {
// The original code is calling a function full of dead code.
// Only this message remains after a cleanup.
MessageDialog::show(WRONG_ANSWER_MSG, OK_BTN_STRING);
//
- subD0281();
+ handlePlayer2();
return;
}
@@ -6540,7 +6533,7 @@ void Scene1337::subD02CA() {
found = true;
_currentPlayerNumb--;
_showPlayerTurn = false;
- subC20F9();
+ handleNextTurn();
} else {
actionDisplay(1330, 127, 159, 10, 1, 200, 0, 7, 0, 154, 154);
found_di = true;
@@ -6568,7 +6561,7 @@ void Scene1337::subD02CA() {
if (subC27B5(_gameBoardSide[2]._delayCard._cardId) != -1) {
actionDisplay(1330, 55, 159, 10, 1, 200, 0, 7, 0, 154, 154);
} else {
- subC340B(&_selectedCard, &_gameBoardSide[2]._outpostStation[i]);
+ playCard(&_selectedCard, &_gameBoardSide[2]._outpostStation[i]);
return;
}
} else {
@@ -6592,12 +6585,21 @@ void Scene1337::subD02CA() {
}
}
if (foundVar4) {
+ // This station is already in place
actionDisplay(1330, 34, 159, 10, 1, 200, 0, 7, 0, 154, 154);
} else if (subC27B5(_gameBoardSide[2]._delayCard._cardId) != -1) {
+ // You must eliminate your delay before you can play a station
actionDisplay(1330, 35, 159, 10, 1, 200, 0, 7, 0, 154, 154);
} else {
- if (j == 7)
- _field424A = 2;
+ int tmpVal = 0;
+
+ for (int j = 0; j <= 7; j++) {
+ if ((_gameBoardSide[2]._outpostStation[j]._cardId > 1) && (_gameBoardSide[2]._outpostStation[j]._cardId <= 9))
+ ++tmpVal;
+ }
+
+ if (tmpVal == 7)
+ _winnerId = 2;
subC33C0(&_selectedCard, &_gameBoardSide[2]._outpostStation[i]);
return;
@@ -6609,7 +6611,7 @@ void Scene1337::subD02CA() {
if ((_selectedCard._cardId == 26) || (_selectedCard._cardId == 30) ||(_selectedCard._cardId == 32) || (_selectedCard._cardId == 28)) {
if (_gameBoardSide[2]._delayCard.isIn(Common::Point(_selectedCard._stationPos.x + 12, _selectedCard._stationPos.y + 12))) {
actionDisplay(1330, 42, 159, 10, 1, 200, 0, 7, 0, 154, 154);
- } else if (!subC3386(_gameBoardSide[2]._delayCard._cardId, _selectedCard._cardId)) {
+ } else if (!checkAntiDelayCard(_gameBoardSide[2]._delayCard._cardId, _selectedCard._cardId)) {
if (_gameBoardSide[2]._delayCard._cardId != 0) {
switch (_gameBoardSide[2]._delayCard._cardId) {
case 11:
@@ -6631,17 +6633,17 @@ void Scene1337::subD02CA() {
actionDisplay(1330, 41, 159, 10, 1, 200, 0, 7, 0, 154, 154);
}
} else {
- subC34A1(&_selectedCard, &_gameBoardSide[2]._delayCard);
+ playAntiDelayCard(&_selectedCard, &_gameBoardSide[2]._delayCard);
return;
}
} else {
- if ((subC27F9(_selectedCard._cardId) == -1) && (subC27B5(_selectedCard._cardId) == -1)) {
+ if ((isSlowCard(_selectedCard._cardId) == -1) && (subC27B5(_selectedCard._cardId) == -1)) {
if (_selectedCard._cardId == 13) {
if (_gameBoardSide[0]._emptyStationPos.isIn(Common::Point(_selectedCard._stationPos.x + 12, _selectedCard._stationPos.y + 12))) {
for (int k = 0; k <= 7; k++) {
if (_gameBoardSide[0]._outpostStation[k]._cardId != 0) {
found = true;
- subC358E(&_selectedCard, 0);
+ playCounterTrickCard(&_selectedCard, 0);
}
}
@@ -6651,7 +6653,7 @@ void Scene1337::subD02CA() {
for (int k = 0; k <= 7; k++) {
if (_gameBoardSide[3]._outpostStation[k]._cardId != 0) {
found = true;
- subC358E(&_selectedCard, 3);
+ playCounterTrickCard(&_selectedCard, 3);
}
}
if (!found)
@@ -6660,7 +6662,7 @@ void Scene1337::subD02CA() {
for (int k = 0; k <= 7; k++) {
if (_gameBoardSide[1]._outpostStation[k]._cardId == 0) {
found = true;
- subC358E(&_selectedCard, 1);
+ playCounterTrickCard(&_selectedCard, 1);
}
}
if (!found)
@@ -6679,7 +6681,7 @@ void Scene1337::subD02CA() {
if (_gameBoardSide[2]._handCard[k]._cardId == 0)
break;
}
- subC318B(2, &_gameBoardSide[2]._handCard[k], 0);
+ playThieftCard(2, &_gameBoardSide[2]._handCard[k], 0);
return;
} else {
actionDisplay(1330, 99, 159, 10, 1, 200, 0, 7, 0, 154, 154);
@@ -6693,7 +6695,7 @@ void Scene1337::subD02CA() {
if (_gameBoardSide[2]._handCard[k]._cardId == 0)
break;
}
- subC318B(2, &_gameBoardSide[2]._handCard[k], 1);
+ playThieftCard(2, &_gameBoardSide[2]._handCard[k], 1);
return;
} else {
actionDisplay(1330, 99, 159, 10, 1, 200, 0, 7, 0, 154, 154);
@@ -6709,7 +6711,7 @@ void Scene1337::subD02CA() {
if (_gameBoardSide[2]._handCard[k]._cardId == 0)
break;
}
- subC318B(2, &_gameBoardSide[2]._handCard[k], 3);
+ playThieftCard(2, &_gameBoardSide[2]._handCard[k], 3);
return;
} else {
actionDisplay(1330, 99, 159, 10, 1, 200, 0, 7, 0, 154, 154);
@@ -6756,7 +6758,7 @@ void Scene1337::subD02CA() {
break;
}
} else {
- subC3456(&_selectedCard, &_gameBoardSide[0]._delayCard);
+ playDelayCard(&_selectedCard, &_gameBoardSide[0]._delayCard);
found = true;
}
} else if (_gameBoardSide[3]._delayCard.isIn(Common::Point(_selectedCard._stationPos.x + 12, _selectedCard._stationPos.y + 12))) {
@@ -6792,7 +6794,7 @@ void Scene1337::subD02CA() {
break;
}
} else {
- subC3456(&_selectedCard, &_gameBoardSide[3]._delayCard);
+ playDelayCard(&_selectedCard, &_gameBoardSide[3]._delayCard);
found = true;
}
} else if (_gameBoardSide[1]._delayCard.isIn(Common::Point(_selectedCard._stationPos.x + 12, _selectedCard._stationPos.y + 12))) {
@@ -6828,7 +6830,7 @@ void Scene1337::subD02CA() {
break;
}
} else {
- subC3456(&_selectedCard, &_gameBoardSide[1]._delayCard);
+ playDelayCard(&_selectedCard, &_gameBoardSide[1]._delayCard);
found = true;
}
} else {
@@ -6847,6 +6849,8 @@ void Scene1337::subD02CA() {
R2_GLOBALS._sceneObjects->draw();
g_globals->_events.delay(g_globals->_sceneHandler->_delayTicks);
}
+
+ g_globals->_sceneObjects->recurse(SceneHandler::dispatchObject);
}
}
@@ -6908,7 +6912,6 @@ void Scene1337::setCursorData(int resNum, int rlbNum, int frameNum) {
}
void Scene1337::subD18F5() {
- warning("subD18F5 - %d", R2_GLOBALS._v57709);
if (R2_GLOBALS._v57709 == 0)
R2_GLOBALS._events.setCursor(CURSOR_CROSSHAIRS);
@@ -6916,7 +6919,6 @@ void Scene1337::subD18F5() {
}
void Scene1337::subD1917() {
- warning("subD1917 - %d", R2_GLOBALS._v57709);
if (R2_GLOBALS._v57709 != 0) {
R2_GLOBALS._v57709--;
if (R2_GLOBALS._v57709 != 0) {
diff --git a/engines/tsage/ringworld2/ringworld2_scenes1.h b/engines/tsage/ringworld2/ringworld2_scenes1.h
index c62dd941cf..6cbc617578 100644
--- a/engines/tsage/ringworld2/ringworld2_scenes1.h
+++ b/engines/tsage/ringworld2/ringworld2_scenes1.h
@@ -271,7 +271,7 @@ class Scene1337 : public SceneExt {
};
public:
typedef void (Scene1337::*FunctionPtrType)();
- FunctionPtrType _unkFctPtr412;
+ FunctionPtrType _delayedFunction;
ASound _aSound1;
ASound _aSound2;
@@ -302,20 +302,20 @@ public:
// Discarded cards are put in the available cards pile, with an higher index so there no conflict
int _currentDiscardIndex;
int _availableCardsPile[100];
- Card *_discardCard;
- Card *_field3EF4;
- Card *_field3EF8;
+ Card *_actionCard1;
+ Card *_actionCard2;
+ Card *_actionCard3;
Card _item5;
Card _selectedCard;
Card _discardPile;
Card _stockCard;
bool _shuffleEndedFl;
int _currentPlayerNumb;
- int _field4240;
- int _field4242;
+ int _actionIdx1;
+ int _actionIdx2;
bool _showPlayerTurn;
- bool _field4246;
- int _field424A;
+ bool _displayHelpFl;
+ int _winnerId;
bool _instructionsDisplayedFl;
int _instructionsWaitCount;
int _cursorCurRes;
@@ -329,32 +329,31 @@ public:
virtual void synchronize(Serializer &s);
void actionDisplay(int resNum, int lineNum, int x, int y, int keepOnScreen, int width, int textMode, int fontNum, int colFG, int colBGExt, int colFGExt);
- void setAnimationInfo(Card *subObj);
+ void setAnimationInfo(Card *card);
void subC20E5();
- void subC20F9();
+ void handleNextTurn();
void subC2586();
- bool subC264B(int arg1);
- bool subC2687(int arg1);
- int subC26CB(int arg1, int arg2);
- int subC2719(int arg1);
+ bool subC264B(int cardId);
+ bool subC2687(int cardId);
+ int subC26CB(int playerId, int handCardId);
+ int findNormalCardInHand(int playerId);
int subC274D(int arg1);
int subC2781(int arg1);
int subC27B5(int arg1);
- int subC27F9(int arg1);
+ int isSlowCard(int cardId);
void subC2835(int arg1);
- void subC2C2F();
- void subC318B(int arg1, Card *subObj2, int arg3);
+ void playThieftCard(int playerId, Card *card, int victimId);
int subC3257(int arg1);
bool subC32B1(int arg1, int arg2);
int subC331B(int arg1);
- bool subC3386(int arg1, int arg2);
+ bool checkAntiDelayCard(int delayCardId, int cardId);
void subC33C0(Card *subObj1, Card *subObj2);
- void subC3456(Card *subObj1, Card *subObj2);
- void subC340B(Card *subObj1, Card *subObj2);
- void subC34A1(Card *subObj1, Card *subObj2);
+ void playDelayCard(Card *card, Card *dest);
+ void playCard(Card *card, Card *dest);
+ void playAntiDelayCard(Card *card, Card *dest);
Card *subC34EC(int arg1);
- void subC358E(Card *subObj1, int arg2);
- int subC3E92(int arg1);
+ void playCounterTrickCard(Card *card, int playerId);
+ int getFreeHandCard(int playerId);
void discardCard(Card *card);
void subC4CD2();
void subC4CEC();
@@ -367,10 +366,10 @@ public:
void dealCards();
void subCD193();
void handleClick(int arg1, Common::Point pt);
- void subCF31D();
- void subCF979();
- void subD026D();
- void subD0281();
+ void handlePlayer0();
+ void handlePlayer1();
+ void handlePlayer2();
+ void handlePlayer3();
void subD02CA();
void updateCursorId(int arg1, bool arg2);
void setCursorData(int resNum, int rlbNum, int frameNum);