aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic/game/gondolier/gondolier_slider.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/titanic/game/gondolier/gondolier_slider.cpp')
-rw-r--r--engines/titanic/game/gondolier/gondolier_slider.cpp99
1 files changed, 44 insertions, 55 deletions
diff --git a/engines/titanic/game/gondolier/gondolier_slider.cpp b/engines/titanic/game/gondolier/gondolier_slider.cpp
index e7ca61de9c..dd9bef4511 100644
--- a/engines/titanic/game/gondolier/gondolier_slider.cpp
+++ b/engines/titanic/game/gondolier/gondolier_slider.cpp
@@ -40,16 +40,14 @@ BEGIN_MESSAGE_MAP(CGondolierSlider, CGondolierBase)
END_MESSAGE_MAP()
CGondolierSlider::CGondolierSlider() : CGondolierBase(),
- _fieldBC(0), _fieldC0(0), _fieldC4(0), _fieldC8(0),
- _arrayIndex(0), _string1("NULL"), _fieldFC(0), _field118(0) {
+ _arrayIndex(0), _stringUnused("NULL"), _sliderNum(0), _dragging(false) {
}
void CGondolierSlider::save(SimpleFile *file, int indent) {
file->writeNumberLine(1, indent);
- file->writeNumberLine(_fieldBC, indent);
- file->writeNumberLine(_fieldC0, indent);
- file->writeNumberLine(_fieldC4, indent);
- file->writeNumberLine(_fieldC8, indent);
+ file->writeRect(_rectUnused, indent);
+ file->writeRect(_sliderRect1, indent);
+ file->writeRect(_sliderRect2, indent);
file->writeNumberLine(_sliderRect1.left, indent);
file->writeNumberLine(_sliderRect1.top, indent);
file->writeNumberLine(_sliderRect1.right, indent);
@@ -58,36 +56,27 @@ void CGondolierSlider::save(SimpleFile *file, int indent) {
file->writeNumberLine(_sliderRect2.top, indent);
file->writeNumberLine(_sliderRect2.right, indent);
file->writeNumberLine(_sliderRect2.bottom, indent);
- file->writeNumberLine(_sliderRect1.left, indent);
- file->writeQuotedLine(_string1, indent);
- file->writeNumberLine(_fieldFC, indent);
- file->writeQuotedLine(_string2, indent);
- file->writeQuotedLine(_string3, indent);
- file->writeNumberLine(_field118, indent);
+ file->writeNumberLine(_arrayIndex, indent);
+ file->writeQuotedLine(_stringUnused, indent);
+ file->writeNumberLine(_sliderNum, indent);
+ file->writeQuotedLine(_armName, indent);
+ file->writeQuotedLine(_signalTarget, indent);
+ file->writeNumberLine(_dragging, indent);
CGondolierBase::save(file, indent);
}
void CGondolierSlider::load(SimpleFile *file) {
file->readNumber();
- _fieldBC = file->readNumber();
- _fieldC0 = file->readNumber();
- _fieldC4 = file->readNumber();
- _fieldC8 = file->readNumber();
- _sliderRect1.left = file->readNumber();
- _sliderRect1.top = file->readNumber();
- _sliderRect1.right = file->readNumber();
- _sliderRect1.bottom = file->readNumber();
- _sliderRect2.left = file->readNumber();
- _sliderRect2.top = file->readNumber();
- _sliderRect2.right = file->readNumber();
- _sliderRect2.bottom = file->readNumber();
+ _rectUnused = file->readRect();
+ _sliderRect1 = file->readRect();
+ _sliderRect2 = file->readRect();
_arrayIndex = file->readNumber();
- _string1 = file->readString();
- _fieldFC = file->readNumber();
- _string2 = file->readString();
- _string3 = file->readString();
- _field118 = file->readNumber();
+ _stringUnused = file->readString();
+ _sliderNum = file->readNumber();
+ _armName = file->readString();
+ _signalTarget = file->readString();
+ _dragging = file->readNumber();
CGondolierBase::load(file);
}
@@ -95,14 +84,14 @@ void CGondolierSlider::load(SimpleFile *file) {
bool CGondolierSlider::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
if (!_v1)
return false;
- if (_fieldFC ? _v5 : _v8)
+ if (_sliderNum ? _rightSliderHooked : _leftSliderHooked)
return false;
return _sliderRect1.contains(msg->_mousePos);
}
bool CGondolierSlider::MouseDragMoveMsg(CMouseDragMoveMsg *msg) {
- if (!(_fieldFC ? _v5 : _v8)) {
+ if (!(_sliderNum ? _rightSliderHooked : _leftSliderHooked)) {
int minVal = 0x7FFFFFFF;
int foundIndex = -1;
int yp = (_sliderRect2.top + _sliderRect2.bottom) / 2
@@ -137,11 +126,11 @@ bool CGondolierSlider::EnterViewMsg(CEnterViewMsg *msg) {
bool CGondolierSlider::MouseDragStartMsg(CMouseDragStartMsg *msg) {
if (!_v1)
return false;
- if (_fieldFC ? _v5 : _v8)
+ if (_sliderNum ? _rightSliderHooked : _leftSliderHooked)
return false;
- _field118 = checkStartDragging(msg);
- return _field118;
+ _dragging = checkStartDragging(msg);
+ return _dragging;
}
bool CGondolierSlider::StatusChangeMsg(CStatusChangeMsg *msg) {
@@ -155,33 +144,33 @@ bool CGondolierSlider::StatusChangeMsg(CStatusChangeMsg *msg) {
}
bool CGondolierSlider::MouseDragEndMsg(CMouseDragEndMsg *msg) {
- _field118 = false;
+ _dragging = false;
return true;
}
bool CGondolierSlider::IsHookedOnMsg(CIsHookedOnMsg *msg) {
- if (_fieldFC ? _v5 : _v8)
+ if (_sliderNum ? _rightSliderHooked : _leftSliderHooked)
return false;
if (!_sliderRect1.intersects(msg->_rect)) {
- _string2 = CString();
- msg->_result = false;
+ _armName = CString();
+ msg->_isHooked = false;
} else {
- _string2 = _string1;
- if (_fieldFC) {
- _v5 = _v9 = 1;
+ _armName = msg->_armName;
+ if (_sliderNum) {
+ _rightSliderHooked = _priorRightSliderHooked = true;
} else {
- _v8 = _v10 = 1;
+ _leftSliderHooked = _priorLeftSliderHooked = true;
}
- msg->_result = true;
+ msg->_isHooked = true;
}
return true;
}
bool CGondolierSlider::FrameMsg(CFrameMsg *msg) {
- if (_fieldFC ? _v5 : _v8) {
+ if (_sliderNum ? _rightSliderHooked : _leftSliderHooked) {
if (_arrayIndex < 10) {
++_arrayIndex;
CSignalObject signalMsg;
@@ -191,14 +180,14 @@ bool CGondolierSlider::FrameMsg(CFrameMsg *msg) {
if (_arrayIndex > 0)
yp = ARRAY[_arrayIndex] - ARRAY[_arrayIndex - 1];
- if (!_string2.empty()) {
+ if (!_armName.empty()) {
CTranslateObjectMsg transMsg;
transMsg._delta = Point(0, yp);
- transMsg.execute(_string2);
+ transMsg.execute(_armName);
}
}
- } else if (_fieldFC ? _v10 : _v9) {
- if (!_field118 && !_puzzleSolved && _arrayIndex > 0) {
+ } else if (_sliderNum ? _priorLeftSliderHooked : _priorRightSliderHooked) {
+ if (!_dragging && !_puzzleSolved && _arrayIndex > 0) {
CSignalObject signalMsg;
signalMsg.execute(this);
}
@@ -216,20 +205,20 @@ bool CGondolierSlider::SignalObject(CSignalObject *msg) {
CSignalObject signalMsg;
signalMsg._numValue = 10 - _arrayIndex;
- signalMsg._strValue = _fieldFC ? "Fly" : "Tos";
- signalMsg.execute(_string3);
+ signalMsg._strValue = _sliderNum ? "Fly" : "Tos";
+ signalMsg.execute(_signalTarget);
return true;
}
bool CGondolierSlider::ActMsg(CActMsg *msg) {
if (msg->_action == "Unhook") {
- if (_fieldFC) {
- _v5 = _v9 = 0;
- _v10 = _v8;
+ if (_sliderNum) {
+ _rightSliderHooked = _priorRightSliderHooked = false;
+ _priorLeftSliderHooked = _leftSliderHooked;
} else {
- _v8 = _v10 = 0;
- _v9 = _v5;
+ _leftSliderHooked = _priorLeftSliderHooked = false;
+ _priorRightSliderHooked = _rightSliderHooked;
}
}