[Scummvm-cvs-logs] SF.net SVN: scummvm:[54611] scummvm/trunk/engines/mohawk
bgk at users.sourceforge.net
bgk at users.sourceforge.net
Mon Nov 29 21:54:11 CET 2010
Revision: 54611
http://scummvm.svn.sourceforge.net/scummvm/?rev=54611&view=rev
Author: bgk
Date: 2010-11-29 20:54:11 +0000 (Mon, 29 Nov 2010)
Log Message:
-----------
MOHAWK: Completed the sound lock puzzle
Modified Paths:
--------------
scummvm/trunk/engines/mohawk/myst_scripts_selenitic.cpp
scummvm/trunk/engines/mohawk/myst_scripts_selenitic.h
Modified: scummvm/trunk/engines/mohawk/myst_scripts_selenitic.cpp
===================================================================
--- scummvm/trunk/engines/mohawk/myst_scripts_selenitic.cpp 2010-11-29 20:53:56 UTC (rev 54610)
+++ scummvm/trunk/engines/mohawk/myst_scripts_selenitic.cpp 2010-11-29 20:54:11 UTC (rev 54611)
@@ -547,7 +547,7 @@
return 7289;
} else if ((pixels && position < 192) || (!pixels && position == 8)) {
return 8289;
- } else if (pixels || (!pixels && position == 8)) {
+ } else if (pixels || (!pixels && position == 9)) {
return 9289;
} else {
return 0;
@@ -634,41 +634,49 @@
_vm->_sound->resumeBackground();
}
+void MystScriptParser_Selenitic::soundLockCheckSolution(MystResourceType10 *slider, uint16 value, uint16 solution, bool &solved) {
+ slider->drawConditionalDataToScreen(2);
+ _vm->_sound->playSound(soundLockCurrentSound(value / 12, false));
+ _vm->_system->delayMillis(1500);
+
+ if (value / 12 != solution) {
+ solved = false;
+ }
+
+ slider->drawConditionalDataToScreen(1);
+ _vm->_sound->stopSound();
+}
+
void MystScriptParser_Selenitic::o_115_soundLockButton(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
- if (argc == 11) {
- // Used for Selenitic Card 1147 (Musical Door Lock Button)
- uint16 imageIdClose = argv[0]; // TODO: Sound Id?
- uint16 imageIdOpen = argv[1]; // TODO: Sound Id?
+ uint16 *selenitic_vars = _vm->_saveLoad->_v->selenitic_vars;
+ bool solved = true;
- uint16 cardIdOpen = argv[2];
+ _vm->_sound->pauseBackground();
+ _vm->_sound->playSound(1147);
+ _sound_lock_button->drawConditionalDataToScreen(1);
+ _vm->_gfx->hideCursor();
- uint16 u0 = argv[3];
- uint16 u1 = argv[4];
+ soundLockCheckSolution(_sound_lock_slider_1, selenitic_vars[13], 5, solved);
+ soundLockCheckSolution(_sound_lock_slider_2, selenitic_vars[14], 9, solved);
+ soundLockCheckSolution(_sound_lock_slider_3, selenitic_vars[15], 0, solved);
+ soundLockCheckSolution(_sound_lock_slider_4, selenitic_vars[16], 6, solved);
+ soundLockCheckSolution(_sound_lock_slider_5, selenitic_vars[17], 7, solved);
- Common::Rect rect = Common::Rect(argv[5], argv[6], argv[7], argv[8]);
+ _vm->_sound->playSound(1148);
+ _vm->_sound->resumeBackground();
- uint16 updateDirection = argv[9];
- uint16 u2 = argv[10];
+ if (solved) {
+ _sound_lock_button->drawConditionalDataToScreen(2);
- debugC(kDebugScript, "Music Door Lock Logic...");
- debugC(kDebugScript, "\timageId (Close): %d", imageIdClose);
- debugC(kDebugScript, "\timageId (Open): %d", imageIdOpen);
- debugC(kDebugScript, "\tcardId (Open): %d", cardIdOpen);
- debugC(kDebugScript, "\tu0: %d", u0);
- debugC(kDebugScript, "\tu1: %d", u1);
+ uint16 cardIdOpen = argv[2];
- debugC(kDebugScript, "\trect.left: %d", rect.left);
- debugC(kDebugScript, "\trect.top: %d", rect.top);
- debugC(kDebugScript, "\trect.right: %d", rect.right);
- debugC(kDebugScript, "\trect.bottom: %d", rect.bottom);
- debugC(kDebugScript, "\trect updateDirection: %d", updateDirection);
- debugC(kDebugScript, "\tu2: %d", u2);
+ //TODO: Change card with directional update playing sound
+ _vm->changeToCard(cardIdOpen);
+ } else {
+ _sound_lock_button->drawConditionalDataToScreen(0);
+ }
- // TODO: Fix Logic...
- // HACK: Bypass Door Lock For Now
- _vm->changeToCard(cardIdOpen);
- } else
- unknown(op, var, argc, argv);
+ _vm->_gfx->showCursor();
}
void MystScriptParser_Selenitic::o_117_soundReceiverEndMove(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
Modified: scummvm/trunk/engines/mohawk/myst_scripts_selenitic.h
===================================================================
--- scummvm/trunk/engines/mohawk/myst_scripts_selenitic.h 2010-11-29 20:53:56 UTC (rev 54610)
+++ scummvm/trunk/engines/mohawk/myst_scripts_selenitic.h 2010-11-29 20:54:11 UTC (rev 54611)
@@ -112,6 +112,7 @@
uint16 soundLockCurrentSound(uint16 position, bool pixels);
MystResourceType10 *soundLockSliderFromVar(uint16 var);
+ void soundLockCheckSolution(MystResourceType10 *slider, uint16 value, uint16 solution, bool &solved);
void draw_digit(MystResource *_resource);
};
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list