[Scummvm-git-logs] scummvm master -> b1d2d3cf9717e65c0726f8b34570038a02cca0de

dreammaster dreammaster at scummvm.org
Sun Feb 19 01:36:13 CET 2017


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:
b1d2d3cf97 TITANIC: Further cleanup of the Gondolier sliders


Commit: b1d2d3cf9717e65c0726f8b34570038a02cca0de
    https://github.com/scummvm/scummvm/commit/b1d2d3cf9717e65c0726f8b34570038a02cca0de
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2017-02-18T19:36:08-05:00

Commit Message:
TITANIC: Further cleanup of the Gondolier sliders

Changed paths:
    engines/titanic/game/gondolier/gondolier_base.cpp
    engines/titanic/game/gondolier/gondolier_base.h
    engines/titanic/game/gondolier/gondolier_chest.cpp
    engines/titanic/game/gondolier/gondolier_slider.cpp
    engines/titanic/game/gondolier/gondolier_slider.h


diff --git a/engines/titanic/game/gondolier/gondolier_base.cpp b/engines/titanic/game/gondolier/gondolier_base.cpp
index 4f87cc4..8b753ec 100644
--- a/engines/titanic/game/gondolier/gondolier_base.cpp
+++ b/engines/titanic/game/gondolier/gondolier_base.cpp
@@ -28,7 +28,7 @@ BEGIN_MESSAGE_MAP(CGondolierBase, CGameObject)
 	ON_MESSAGE(PuzzleSolvedMsg)
 END_MESSAGE_MAP()
 
-int CGondolierBase::_v1;
+bool CGondolierBase::_chestOpen;
 bool CGondolierBase::_puzzleSolved;
 int CGondolierBase::_volume1;
 int CGondolierBase::_v4;
@@ -36,12 +36,12 @@ int CGondolierBase::_volume2;
 int CGondolierBase::_v7;
 bool CGondolierBase::_rightSliderHooked;
 bool CGondolierBase::_leftSliderHooked;
-bool CGondolierBase::_priorRightSliderHooked;
 bool CGondolierBase::_priorLeftSliderHooked;
+bool CGondolierBase::_priorRightSliderHooked;
 
 void CGondolierBase::save(SimpleFile *file, int indent) {
 	file->writeNumberLine(1, indent);
-	file->writeNumberLine(_v1, indent);
+	file->writeNumberLine(_chestOpen, indent);
 	file->writeNumberLine(_puzzleSolved, indent);
 	file->writeNumberLine(_volume1, indent);
 	file->writeNumberLine(_v4, indent);
@@ -49,15 +49,15 @@ void CGondolierBase::save(SimpleFile *file, int indent) {
 	file->writeNumberLine(_volume2, indent);
 	file->writeNumberLine(_v7, indent);
 	file->writeNumberLine(_leftSliderHooked, indent);
-	file->writeNumberLine(_priorRightSliderHooked, indent);
 	file->writeNumberLine(_priorLeftSliderHooked, indent);
+	file->writeNumberLine(_priorRightSliderHooked, indent);
 
 	CGameObject::save(file, indent);
 }
 
 void CGondolierBase::load(SimpleFile *file) {
 	file->readNumber();
-	_v1 = file->readNumber();
+	_chestOpen = file->readNumber();
 	_puzzleSolved = file->readNumber();
 	_volume1 = file->readNumber();
 	_v4 = file->readNumber();
@@ -65,8 +65,8 @@ void CGondolierBase::load(SimpleFile *file) {
 	_volume2 = file->readNumber();
 	_v7 = file->readNumber();
 	_leftSliderHooked = file->readNumber();
-	_priorRightSliderHooked = file->readNumber();
 	_priorLeftSliderHooked = file->readNumber();
+	_priorRightSliderHooked = file->readNumber();
 
 	CGameObject::load(file);
 }
diff --git a/engines/titanic/game/gondolier/gondolier_base.h b/engines/titanic/game/gondolier/gondolier_base.h
index 5d143c9..3b5df9f 100644
--- a/engines/titanic/game/gondolier/gondolier_base.h
+++ b/engines/titanic/game/gondolier/gondolier_base.h
@@ -31,16 +31,16 @@ class CGondolierBase : public CGameObject {
 	DECLARE_MESSAGE_MAP;
 	bool PuzzleSolvedMsg(CPuzzleSolvedMsg *msg);
 protected:
-	static int _v1;
+	static bool _chestOpen;
 	static bool _puzzleSolved;
 	static int _volume1;
 	static int _v4;
 	static int _volume2;
 	static int _v7;
-	static bool _rightSliderHooked;
 	static bool _leftSliderHooked;
-	static bool _priorRightSliderHooked;
+	static bool _rightSliderHooked;
 	static bool _priorLeftSliderHooked;
+	static bool _priorRightSliderHooked;
 public:
 	CLASSDEF;
 
diff --git a/engines/titanic/game/gondolier/gondolier_chest.cpp b/engines/titanic/game/gondolier/gondolier_chest.cpp
index 20b2f90..6058b58 100644
--- a/engines/titanic/game/gondolier/gondolier_chest.cpp
+++ b/engines/titanic/game/gondolier/gondolier_chest.cpp
@@ -41,13 +41,13 @@ void CGondolierChest::load(SimpleFile *file) {
 }
 
 bool CGondolierChest::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
-	if (!_v1)
+	if (!_chestOpen)
 		playMovie(0, 14, MOVIE_NOTIFY_OBJECT);
 	else if (msg->_mousePos.y < 330)
 		return false;
 	else if (!_leftSliderHooked && !_rightSliderHooked) {
 		playMovie(14, 29, 0);
-		_v1 = 0;
+		_chestOpen = false;
 	}
 
 	return true;
@@ -55,7 +55,7 @@ bool CGondolierChest::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
 
 bool CGondolierChest::MovieEndMsg(CMovieEndMsg *msg) {
 	if (msg->_endFrame == 14)
-		_v1 = 1;
+		_chestOpen = true;
 	return true;
 }
 
diff --git a/engines/titanic/game/gondolier/gondolier_slider.cpp b/engines/titanic/game/gondolier/gondolier_slider.cpp
index dd9bef4..b5edac5 100644
--- a/engines/titanic/game/gondolier/gondolier_slider.cpp
+++ b/engines/titanic/game/gondolier/gondolier_slider.cpp
@@ -24,7 +24,10 @@
 
 namespace Titanic {
 
-static const int ARRAY[11] = { 0, 0, 1, 4, 9, 15, 21, 27, 32, 35, 36 };
+/**
+ * Y offsets within slider for each successive thumbnail position
+ */
+static const int Y_OFFSETS[11] = { 0, 0, 1, 4, 9, 15, 21, 27, 32, 35, 36 };
 
 BEGIN_MESSAGE_MAP(CGondolierSlider, CGondolierBase)
 	ON_MESSAGE(MouseButtonDownMsg)
@@ -40,23 +43,15 @@ BEGIN_MESSAGE_MAP(CGondolierSlider, CGondolierBase)
 END_MESSAGE_MAP()
 
 CGondolierSlider::CGondolierSlider() : CGondolierBase(),
-	_arrayIndex(0), _stringUnused("NULL"), _sliderNum(0), _dragging(false) {
+	_sliderIndex(0), _stringUnused("NULL"), _sliderNum(0), _dragging(false) {
 }
 
 void CGondolierSlider::save(SimpleFile *file, int indent) {
 	file->writeNumberLine(1, 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);
-	file->writeNumberLine(_sliderRect1.bottom, indent);
-	file->writeNumberLine(_sliderRect2.left, indent);
-	file->writeNumberLine(_sliderRect2.top, indent);
-	file->writeNumberLine(_sliderRect2.right, indent);
-	file->writeNumberLine(_sliderRect2.bottom, indent);
-	file->writeNumberLine(_arrayIndex, indent);
+	file->writeRect(_thumbRect, indent);
+	file->writeRect(_defaultThumbRect, indent);
+	file->writeNumberLine(_sliderIndex, indent);
 	file->writeQuotedLine(_stringUnused, indent);
 	file->writeNumberLine(_sliderNum, indent);
 	file->writeQuotedLine(_armName, indent);
@@ -69,9 +64,9 @@ void CGondolierSlider::save(SimpleFile *file, int indent) {
 void CGondolierSlider::load(SimpleFile *file) {
 	file->readNumber();
 	_rectUnused = file->readRect();
-	_sliderRect1 = file->readRect();
-	_sliderRect2 = file->readRect();
-	_arrayIndex = file->readNumber();
+	_thumbRect = file->readRect();
+	_defaultThumbRect = file->readRect();
+	_sliderIndex = file->readNumber();
 	_stringUnused = file->readString();
 	_sliderNum = file->readNumber();
 	_armName = file->readString();
@@ -82,33 +77,32 @@ void CGondolierSlider::load(SimpleFile *file) {
 }
 
 bool CGondolierSlider::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
-	if (!_v1)
+	if (!_chestOpen)
 		return false;
 	if (_sliderNum ? _rightSliderHooked : _leftSliderHooked)
 		return false;
 
-	return _sliderRect1.contains(msg->_mousePos);
+	return _thumbRect.contains(msg->_mousePos);
 }
 
 bool CGondolierSlider::MouseDragMoveMsg(CMouseDragMoveMsg *msg) {
 	if (!(_sliderNum ? _rightSliderHooked : _leftSliderHooked)) {
 		int minVal = 0x7FFFFFFF;
 		int foundIndex = -1;
-		int yp = (_sliderRect2.top + _sliderRect2.bottom) / 2
+		int yp = (_defaultThumbRect.top + _defaultThumbRect.bottom) / 2
 			+ _bounds.top - msg->_mousePos.y;
 
 		for (int idx = 0; idx < 11; ++idx) {
-			int yv = yp + ARRAY[idx];
-			if (yv < 0)
-				yv = -yv;
-			if (yv < minVal) {
-				minVal = yv;
+			int yDiff = ABS(yp + Y_OFFSETS[idx]);
+
+			if (yDiff < minVal) {
+				minVal = yDiff;
 				foundIndex = idx;
 			}
 		}
 
 		if (foundIndex >= 0) {
-			_arrayIndex = foundIndex;
+			_sliderIndex = foundIndex;
 			CSignalObject signalMsg;
 			signalMsg.execute(this);
 		}
@@ -124,7 +118,7 @@ bool CGondolierSlider::EnterViewMsg(CEnterViewMsg *msg) {
 }
 
 bool CGondolierSlider::MouseDragStartMsg(CMouseDragStartMsg *msg) {
-	if (!_v1)
+	if (!_chestOpen)
 		return false;
 	if (_sliderNum ? _rightSliderHooked : _leftSliderHooked)
 		return false;
@@ -134,12 +128,12 @@ bool CGondolierSlider::MouseDragStartMsg(CMouseDragStartMsg *msg) {
 }
 
 bool CGondolierSlider::StatusChangeMsg(CStatusChangeMsg *msg) {
-	_arrayIndex = CLIP(10 - msg->_newStatus, 0, 10);
-	_sliderRect1 = _sliderRect2;
-	_sliderRect1.translate(_bounds.left, _bounds.top);
-	_sliderRect1.translate(0, ARRAY[_arrayIndex]);
+	_sliderIndex = CLIP(10 - msg->_newStatus, 0, 10);
+	_thumbRect = _defaultThumbRect;
+	_thumbRect.translate(_bounds.left, _bounds.top);
+	_thumbRect.translate(0, Y_OFFSETS[_sliderIndex]);
 
-	loadFrame(_arrayIndex);
+	loadFrame(_sliderIndex);
 	return true;
 }
 
@@ -152,15 +146,15 @@ bool CGondolierSlider::IsHookedOnMsg(CIsHookedOnMsg *msg) {
 	if (_sliderNum ? _rightSliderHooked : _leftSliderHooked)
 		return false;
 
-	if (!_sliderRect1.intersects(msg->_rect)) {
+	if (!_thumbRect.intersects(msg->_rect)) {
 		_armName = CString();
 		msg->_isHooked = false;
 	} else {
 		_armName = msg->_armName;
 		if (_sliderNum) {
-			_rightSliderHooked = _priorRightSliderHooked = true;
+			_rightSliderHooked = _priorLeftSliderHooked = true;
 		} else {
-			_leftSliderHooked = _priorLeftSliderHooked = true;
+			_leftSliderHooked = _priorRightSliderHooked = true;
 		}
 
 		msg->_isHooked = true;
@@ -171,14 +165,14 @@ bool CGondolierSlider::IsHookedOnMsg(CIsHookedOnMsg *msg) {
 
 bool CGondolierSlider::FrameMsg(CFrameMsg *msg) {
 	if (_sliderNum ? _rightSliderHooked : _leftSliderHooked) {
-		if (_arrayIndex < 10) {
-			++_arrayIndex;
+		if (_sliderIndex < 10) {
+			++_sliderIndex;
 			CSignalObject signalMsg;
 			signalMsg.execute(this);
 
 			int yp = 0;
-			if (_arrayIndex > 0)
-				yp = ARRAY[_arrayIndex] - ARRAY[_arrayIndex - 1];
+			if (_sliderIndex > 0)
+				yp = Y_OFFSETS[_sliderIndex] - Y_OFFSETS[_sliderIndex - 1];
 
 			if (!_armName.empty()) {
 				CTranslateObjectMsg transMsg;
@@ -186,8 +180,8 @@ bool CGondolierSlider::FrameMsg(CFrameMsg *msg) {
 				transMsg.execute(_armName);
 			}
 		}
-	} else if (_sliderNum ? _priorLeftSliderHooked : _priorRightSliderHooked) {
-		if (!_dragging && !_puzzleSolved && _arrayIndex > 0) {
+	} else if (_sliderNum ? _priorRightSliderHooked : _priorLeftSliderHooked) {
+		if (!_dragging && !_puzzleSolved && _sliderIndex > 0) {
 			CSignalObject signalMsg;
 			signalMsg.execute(this);
 		}
@@ -197,14 +191,14 @@ bool CGondolierSlider::FrameMsg(CFrameMsg *msg) {
 }
 
 bool CGondolierSlider::SignalObject(CSignalObject *msg) {
-	_arrayIndex = CLIP(_arrayIndex, 0, 10);
-	_sliderRect1 = _sliderRect2;
-	_sliderRect1.translate(_bounds.left, _bounds.top);
-	_sliderRect1.translate(0, ARRAY[_arrayIndex]);
-	loadFrame(_arrayIndex);
+	_sliderIndex = CLIP(_sliderIndex, 0, 10);
+	_thumbRect = _defaultThumbRect;
+	_thumbRect.translate(_bounds.left, _bounds.top);
+	_thumbRect.translate(0, Y_OFFSETS[_sliderIndex]);
+	loadFrame(_sliderIndex);
 
 	CSignalObject signalMsg;
-	signalMsg._numValue = 10 - _arrayIndex;
+	signalMsg._numValue = 10 - _sliderIndex;
 	signalMsg._strValue = _sliderNum ? "Fly" : "Tos";
 	signalMsg.execute(_signalTarget);
 
@@ -214,11 +208,11 @@ bool CGondolierSlider::SignalObject(CSignalObject *msg) {
 bool CGondolierSlider::ActMsg(CActMsg *msg) {
 	if (msg->_action == "Unhook") {
 		if (_sliderNum) {
-			_rightSliderHooked = _priorRightSliderHooked = false;
-			_priorLeftSliderHooked = _leftSliderHooked;
+			_rightSliderHooked = _priorLeftSliderHooked = false;
+			_priorRightSliderHooked = _leftSliderHooked;
 		} else {
-			_leftSliderHooked = _priorLeftSliderHooked = false;
-			_priorRightSliderHooked = _rightSliderHooked;
+			_leftSliderHooked = _priorRightSliderHooked = false;
+			_priorLeftSliderHooked = _rightSliderHooked;
 		}
 	}
 
diff --git a/engines/titanic/game/gondolier/gondolier_slider.h b/engines/titanic/game/gondolier/gondolier_slider.h
index 1638d48..0679c0d 100644
--- a/engines/titanic/game/gondolier/gondolier_slider.h
+++ b/engines/titanic/game/gondolier/gondolier_slider.h
@@ -41,9 +41,9 @@ class CGondolierSlider : public CGondolierBase {
 	bool ActMsg(CActMsg *msg);
 private:
 	Rect _rectUnused;
-	Rect _sliderRect1;
-	Rect _sliderRect2;
-	int _arrayIndex;
+	Rect _thumbRect;
+	Rect _defaultThumbRect;
+	int _sliderIndex;
 	CString _stringUnused;
 	int _sliderNum;
 	CString _armName;





More information about the Scummvm-git-logs mailing list