[Scummvm-git-logs] scummvm master -> 235893fb44ca8c9d9f29c12db8ae289431ed7e41
bgK
bastien.bouclet at gmail.com
Mon Apr 2 08:02:11 CEST 2018
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
235893fb44 MOHAWK: MYST: Implement opcodes 178 and 179
Commit: 235893fb44ca8c9d9f29c12db8ae289431ed7e41
https://github.com/scummvm/scummvm/commit/235893fb44ca8c9d9f29c12db8ae289431ed7e41
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2018-04-02T08:00:59+02:00
Commit Message:
MOHAWK: MYST: Implement opcodes 178 and 179
Used when turning pages in the library. Some versions of the game appear
to use them.
Fixes #10474.
Changed paths:
engines/mohawk/myst_stacks/myst.cpp
engines/mohawk/myst_stacks/myst.h
diff --git a/engines/mohawk/myst_stacks/myst.cpp b/engines/mohawk/myst_stacks/myst.cpp
index 764fb04..c9f0998 100644
--- a/engines/mohawk/myst_stacks/myst.cpp
+++ b/engines/mohawk/myst_stacks/myst.cpp
@@ -51,6 +51,8 @@ Myst::Myst(MohawkEngine_Myst *vm) :
_towerRotationOverSpot = false;
_libraryBookcaseChanged = false;
+ _libraryBookPagesTurning = false;
+ _libraryCombinationBookPagesTurning = false;
_dockVaultState = 0;
_cabinDoorOpened = 0;
@@ -184,6 +186,8 @@ void Myst::setupOpcodes() {
REGISTER_OPCODE(175, Myst, o_observatoryYearSliderEndMove);
REGISTER_OPCODE(176, Myst, o_observatoryTimeSliderStartMove);
REGISTER_OPCODE(177, Myst, o_observatoryTimeSliderEndMove);
+ REGISTER_OPCODE(178, Myst, o_libraryBookPageTurnStartLeft);
+ REGISTER_OPCODE(179, Myst, o_libraryBookPageTurnStartRight);
REGISTER_OPCODE(180, Myst, o_libraryCombinationBookStop);
REGISTER_OPCODE(181, Myst, NOP);
REGISTER_OPCODE(182, Myst, o_cabinMatchLight);
@@ -246,6 +250,7 @@ void Myst::setupOpcodes() {
void Myst::disablePersistentScripts() {
_libraryBookcaseMoving = false;
_generatorControlRoomRunning = false;
+ _libraryBookPagesTurning = false;
_libraryCombinationBookPagesTurning = false;
_clockTurningWheel = 0;
_towerRotationMapRunning = false;
@@ -277,6 +282,9 @@ void Myst::runPersistentScripts() {
if (_libraryCombinationBookPagesTurning)
libraryCombinationBook_run();
+ if (_libraryBookPagesTurning)
+ libraryBook_run();
+
if (_libraryBookcaseMoving)
libraryBookcaseTransform_run();
@@ -847,6 +855,10 @@ uint16 Myst::bookCountPages(uint16 var) {
}
void Myst::o_libraryBookPageTurnLeft(uint16 var, const ArgumentsArray &args) {
+ libraryBookPageTurnLeft();
+}
+
+void Myst::libraryBookPageTurnLeft() {
if (_libraryBookPage - 1 >= 0) {
_libraryBookPage--;
@@ -861,6 +873,10 @@ void Myst::o_libraryBookPageTurnLeft(uint16 var, const ArgumentsArray &args) {
}
void Myst::o_libraryBookPageTurnRight(uint16 var, const ArgumentsArray &args) {
+ libraryBookPageTurnRight();
+}
+
+void Myst::libraryBookPageTurnRight() {
if (_libraryBookPage + 1 < _libraryBookNumPages) {
_libraryBookPage++;
@@ -2540,7 +2556,35 @@ void Myst::observatoryUpdateTime() {
}
}
+void Myst::o_libraryBookPageTurnStartLeft(uint16 var, const ArgumentsArray &args) {
+ _tempVar = -1;
+ libraryBookPageTurnLeft();
+ _startTime = _vm->_system->getMillis();
+ _libraryBookPagesTurning = true;
+}
+
+void Myst::o_libraryBookPageTurnStartRight(uint16 var, const ArgumentsArray &args) {
+ _tempVar = 1;
+ libraryBookPageTurnRight();
+ _startTime = _vm->_system->getMillis();
+ _libraryBookPagesTurning = true;
+}
+
+void Myst::libraryBook_run() {
+ uint32 time = _vm->_system->getMillis();
+ if (time >= _startTime + 500) {
+ if (_tempVar > 0) {
+ libraryBookPageTurnRight();
+ _startTime = time;
+ } else if (_tempVar < 0) {
+ libraryBookPageTurnLeft();
+ _startTime = time;
+ }
+ }
+}
+
void Myst::o_libraryCombinationBookStop(uint16 var, const ArgumentsArray &args) {
+ _libraryBookPagesTurning = false;
_libraryCombinationBookPagesTurning = false;
}
diff --git a/engines/mohawk/myst_stacks/myst.h b/engines/mohawk/myst_stacks/myst.h
index 2cffb39..a74366f 100644
--- a/engines/mohawk/myst_stacks/myst.h
+++ b/engines/mohawk/myst_stacks/myst.h
@@ -55,6 +55,7 @@ protected:
virtual void libraryBookcaseTransform_run();
void generatorControlRoom_run();
void libraryCombinationBook_run();
+ void libraryBook_run();
void clockWheel_run();
void matchBurn_run();
void boilerPressureIncrease_run();
@@ -137,6 +138,8 @@ protected:
DECLARE_OPCODE(o_observatoryYearSliderEndMove);
DECLARE_OPCODE(o_observatoryTimeSliderStartMove);
DECLARE_OPCODE(o_observatoryTimeSliderEndMove);
+ DECLARE_OPCODE(o_libraryBookPageTurnStartLeft);
+ DECLARE_OPCODE(o_libraryBookPageTurnStartRight);
DECLARE_OPCODE(o_libraryCombinationBookStop);
DECLARE_OPCODE(o_cabinMatchLight);
DECLARE_OPCODE(o_courtyardBoxEnter);
@@ -207,6 +210,7 @@ protected:
uint16 _rocketLeverPosition; // 296
VideoEntryPtr _rocketLinkBook; // 268
+ bool _libraryBookPagesTurning;
bool _libraryCombinationBookPagesTurning;
int16 _libraryBookPage; // 86
uint16 _libraryBookNumPages; // 88
@@ -309,6 +313,8 @@ protected:
uint16 rocketSliderGetSound(uint16 pos);
void rocketCheckSolution();
+ void libraryBookPageTurnLeft();
+ void libraryBookPageTurnRight();
void libraryCombinationBookTurnRight();
void libraryCombinationBookTurnLeft();
More information about the Scummvm-git-logs
mailing list