aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Bouclet2010-11-29 20:52:20 +0000
committerBastien Bouclet2010-11-29 20:52:20 +0000
commit200cafd40fe1523aeefa11ddefd0a66bddcf2c05 (patch)
treea84a4529d23aa27fb0600ca6f35997f07143016c
parentfc504c72e8bf17eec0dce21b187649b4fd9a3e8c (diff)
downloadscummvm-rg350-200cafd40fe1523aeefa11ddefd0a66bddcf2c05.tar.gz
scummvm-rg350-200cafd40fe1523aeefa11ddefd0a66bddcf2c05.tar.bz2
scummvm-rg350-200cafd40fe1523aeefa11ddefd0a66bddcf2c05.zip
MOHAWK: Start implementing type 10 areas
svn-id: r54603
-rw-r--r--engines/mohawk/myst_areas.cpp15
-rw-r--r--engines/mohawk/myst_areas.h6
-rw-r--r--engines/mohawk/myst_scripts_selenitic.cpp24
-rw-r--r--engines/mohawk/myst_scripts_selenitic.h12
4 files changed, 33 insertions, 24 deletions
diff --git a/engines/mohawk/myst_areas.cpp b/engines/mohawk/myst_areas.cpp
index 1f196faf43..39f443cf1b 100644
--- a/engines/mohawk/myst_areas.cpp
+++ b/engines/mohawk/myst_areas.cpp
@@ -458,9 +458,13 @@ uint16 MystResourceType8::getType8Var() {
// No MystResourceType9!
MystResourceType10::MystResourceType10(MohawkEngine_Myst *vm, Common::SeekableReadStream *rlstStream, MystResource *parent) : MystResourceType11(vm, rlstStream, parent) {
+ _dragSound = rlstStream->readUint16LE();
+
+ debugC(kDebugResource, "\tdrag sound : %d", _dragSound);
+
+ _sliderWidth = _rect.right - _rect.left;
+ _sliderHeigth = _rect.bottom - _rect.top;
- _unk10 = rlstStream->readUint16LE();
- debugC(kDebugResource, "\tunk10: %d", _unk10);
warning("TODO: Card contains Type 10 Resource - Function not yet implemented");
}
@@ -468,6 +472,13 @@ MystResourceType10::~MystResourceType10() {
}
+void MystResourceType10::setStep(uint16 step) {
+ _rect.top = _minV + _stepV * step - _sliderHeigth / 2;
+ _rect.bottom = _rect.top + _sliderHeigth;
+ _subImages[0].rect.top = 333 - _rect.bottom - 1;
+ _subImages[0].rect.bottom = 333 - _rect.top - 1;
+}
+
MystResourceType11::MystResourceType11(MohawkEngine_Myst *vm, Common::SeekableReadStream *rlstStream, MystResource *parent) : MystResourceType8(vm, rlstStream, parent) {
_flagHV = rlstStream->readUint16LE();
_minH = rlstStream->readUint16LE();
diff --git a/engines/mohawk/myst_areas.h b/engines/mohawk/myst_areas.h
index 192c580c05..61a8c00281 100644
--- a/engines/mohawk/myst_areas.h
+++ b/engines/mohawk/myst_areas.h
@@ -169,8 +169,12 @@ public:
MystResourceType10(MohawkEngine_Myst *vm, Common::SeekableReadStream *rlstStream, MystResource *parent);
virtual ~MystResourceType10();
+ void setStep(uint16 step);
+
protected:
- uint16 _unk10;
+ uint16 _dragSound;
+ uint16 _sliderWidth;
+ uint16 _sliderHeigth;
};
class MystResourceType12 : public MystResourceType11 {
diff --git a/engines/mohawk/myst_scripts_selenitic.cpp b/engines/mohawk/myst_scripts_selenitic.cpp
index 96e219e4b1..e2081b54ac 100644
--- a/engines/mohawk/myst_scripts_selenitic.cpp
+++ b/engines/mohawk/myst_scripts_selenitic.cpp
@@ -824,24 +824,24 @@ void MystScriptParser_Selenitic::o_204_soundLock_init(uint16 op, uint16 var, uin
if (_vm->_resources[i]->type == 10) {
switch (_vm->_resources[i]->getType8Var()) {
case 20:
- _sound_lock_slider_1 = _vm->_resources[i];
- soundLockSliderSetPosition(_sound_lock_slider_1, selenitic_vars[13]);
+ _sound_lock_slider_1 = static_cast<MystResourceType10 *>(_vm->_resources[i]);
+ _sound_lock_slider_1->setStep(selenitic_vars[13]);
break;
case 21:
- _sound_lock_slider_2 = _vm->_resources[i];
- soundLockSliderSetPosition(_sound_lock_slider_2, selenitic_vars[14]);
+ _sound_lock_slider_2 = static_cast<MystResourceType10 *>(_vm->_resources[i]);
+ _sound_lock_slider_2->setStep(selenitic_vars[14]);
break;
case 22:
- _sound_lock_slider_3 = _vm->_resources[i];
- soundLockSliderSetPosition(_sound_lock_slider_3, selenitic_vars[15]);
+ _sound_lock_slider_3 = static_cast<MystResourceType10 *>(_vm->_resources[i]);
+ _sound_lock_slider_3->setStep(selenitic_vars[15]);
break;
case 23:
- _sound_lock_slider_4 = _vm->_resources[i];
- soundLockSliderSetPosition(_sound_lock_slider_4, selenitic_vars[16]);
+ _sound_lock_slider_4 = static_cast<MystResourceType10 *>(_vm->_resources[i]);
+ _sound_lock_slider_4->setStep(selenitic_vars[16]);
break;
case 24:
- _sound_lock_slider_5 = _vm->_resources[i];
- soundLockSliderSetPosition(_sound_lock_slider_5, selenitic_vars[17]);
+ _sound_lock_slider_5 = static_cast<MystResourceType10 *>(_vm->_resources[i]);
+ _sound_lock_slider_5->setStep(selenitic_vars[17]);
break;
}
} else if (_vm->_resources[i]->type == 8) {
@@ -852,10 +852,6 @@ void MystScriptParser_Selenitic::o_204_soundLock_init(uint16 op, uint16 var, uin
}
}
-void MystScriptParser_Selenitic::soundLockSliderSetPosition(MystResource* slider, uint16 value) {
-// TODO: implement
-}
-
void MystScriptParser_Selenitic::opcode_205(uint16 op, uint16 var, uint16 argc, uint16 *argv) {
varUnusedCheck(op, var);
diff --git a/engines/mohawk/myst_scripts_selenitic.h b/engines/mohawk/myst_scripts_selenitic.h
index 36bb16f682..f17b590376 100644
--- a/engines/mohawk/myst_scripts_selenitic.h
+++ b/engines/mohawk/myst_scripts_selenitic.h
@@ -93,11 +93,11 @@ private:
MystResource *_sound_receiver_angle_4; // 152
MystResource *_sound_receiver_sigma_button; // 156
- MystResource *_sound_lock_slider_1; // 164
- MystResource *_sound_lock_slider_2; // 168
- MystResource *_sound_lock_slider_3; // 172
- MystResource *_sound_lock_slider_4; // 176
- MystResource *_sound_lock_slider_5; // 180
+ MystResourceType10 *_sound_lock_slider_1; // 164
+ MystResourceType10 *_sound_lock_slider_2; // 168
+ MystResourceType10 *_sound_lock_slider_3; // 172
+ MystResourceType10 *_sound_lock_slider_4; // 176
+ MystResourceType10 *_sound_lock_slider_5; // 180
MystResource *_sound_lock_button; // 184
void sound_receiver_left_right(uint direction);
@@ -109,8 +109,6 @@ private:
uint16 sound_receiver_current_sound(uint16 source, uint16 position);
void sound_receiver_solution(uint16 source, uint16 &solution, bool &enabled);
- void soundLockSliderSetPosition(MystResource* slider, uint16 value);
-
void draw_digit(MystResource *_resource);
};