[Scummvm-cvs-logs] scummvm master -> 65bc8cb83c01cc1e7e6c8c093b8f42080800718d

dreammaster dreammaster at scummvm.org
Tue Aug 23 01:25:42 CEST 2016


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:
65bc8cb83c TITANIC: Implemented more game classes


Commit: 65bc8cb83c01cc1e7e6c8c093b8f42080800718d
    https://github.com/scummvm/scummvm/commit/65bc8cb83c01cc1e7e6c8c093b8f42080800718d
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2016-08-22T19:25:36-04:00

Commit Message:
TITANIC: Implemented more game classes

Changed paths:
    engines/titanic/carry/hammer.cpp
    engines/titanic/carry/hammer.h
    engines/titanic/game/bottom_of_well_monitor.cpp
    engines/titanic/game/brain_slot.cpp
    engines/titanic/game/brain_slot.h
    engines/titanic/game/hammer_clip.cpp
    engines/titanic/game/hammer_clip.h
    engines/titanic/game/hammer_dispensor.cpp
    engines/titanic/game/hammer_dispensor.h
    engines/titanic/game/hammer_dispensor_button.cpp
    engines/titanic/game/hammer_dispensor_button.h
    engines/titanic/game/head_slot.cpp
    engines/titanic/game/head_slot.h
    engines/titanic/game/television.cpp
    engines/titanic/npcs/liftbot.cpp
    engines/titanic/npcs/parrot.cpp
    engines/titanic/room_flags.cpp



diff --git a/engines/titanic/carry/hammer.cpp b/engines/titanic/carry/hammer.cpp
index d3b9121..88c766d 100644
--- a/engines/titanic/carry/hammer.cpp
+++ b/engines/titanic/carry/hammer.cpp
@@ -24,6 +24,11 @@
 
 namespace Titanic {
 
+BEGIN_MESSAGE_MAP(CHammer, CCarry)
+	ON_MESSAGE(PuzzleSolvedMsg)
+	ON_MESSAGE(UseWithOtherMsg)
+END_MESSAGE_MAP()
+
 CHammer::CHammer() : CCarry() {
 }
 
@@ -37,4 +42,22 @@ void CHammer::load(SimpleFile *file) {
 	CCarry::load(file);
 }
 
+bool CHammer::PuzzleSolvedMsg(CPuzzleSolvedMsg *msg) {
+	_fieldE0 = 1;
+	return true;
+}
+
+bool CHammer::UseWithOtherMsg(CUseWithOtherMsg *msg) {
+	CString name = msg->_other->getName();
+	if (name == "LongStickDispenser") {
+		CPuzzleSolvedMsg solvedMsg;
+		solvedMsg.execute("LongStickDispenser");
+	} else if (name == "Bomb") {
+		CActMsg actMsg("Hit");
+		actMsg.execute("Bomb");
+	}
+
+	return CCarry::UseWithOtherMsg(msg);
+}
+
 } // End of namespace Titanic
diff --git a/engines/titanic/carry/hammer.h b/engines/titanic/carry/hammer.h
index a455d71..8cc86f3 100644
--- a/engines/titanic/carry/hammer.h
+++ b/engines/titanic/carry/hammer.h
@@ -28,6 +28,9 @@
 namespace Titanic {
 
 class CHammer : public CCarry {
+	DECLARE_MESSAGE_MAP;
+	bool PuzzleSolvedMsg(CPuzzleSolvedMsg *msg);
+	bool UseWithOtherMsg(CUseWithOtherMsg *msg);
 public:
 	CLASSDEF;
 	CHammer();
diff --git a/engines/titanic/game/bottom_of_well_monitor.cpp b/engines/titanic/game/bottom_of_well_monitor.cpp
index 373fe4c..3821104 100644
--- a/engines/titanic/game/bottom_of_well_monitor.cpp
+++ b/engines/titanic/game/bottom_of_well_monitor.cpp
@@ -77,12 +77,12 @@ bool CBottomOfWellMonitor::ActMsg(CActMsg *msg) {
 }
 
 bool CBottomOfWellMonitor::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
-	if (!compareTo("BOWTelevisionMonitor")) {
-		if (_v2)
-			changeView("BottomOfWell.Node 8.N", "");
-	} else {
+	if (isEquals("BOWTelevisionMonitor")) {
 		if (_v1)
 			changeView("BottomOfWell.Node 7.N", "");
+	} else {
+		if (_v2)
+			changeView("BottomOfWell.Node 8.N", "");
 	}
 
 	return true;
@@ -90,14 +90,14 @@ bool CBottomOfWellMonitor::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
 
 bool CBottomOfWellMonitor::EnterViewMsg(CEnterViewMsg *msg) {
 	if (_flag) {
-		if (!compareTo("BOWTelevisionMonitor")) {
-			if (_v2) {
-				changeView("BottomOfWell.Node 8.N", "");
+		if (isEquals("BOWTelevisionMonitor")) {
+			if (_v1) {
+				changeView("BottomOfWell.Node 7.N", "");
 				_flag = false;
 			}
 		} else {
-			if (_v1) {
-				changeView("BottomOfWell.Node 7.N", "");
+			if (_v2) {
+				changeView("BottomOfWell.Node 8.N", "");
 				_flag = false;
 			}
 		}
diff --git a/engines/titanic/game/brain_slot.cpp b/engines/titanic/game/brain_slot.cpp
index 57521ea..1518d9b 100644
--- a/engines/titanic/game/brain_slot.cpp
+++ b/engines/titanic/game/brain_slot.cpp
@@ -33,7 +33,7 @@ BEGIN_MESSAGE_MAP(CBrainSlot, CGameObject)
 	ON_MESSAGE(MouseDragStartMsg)
 END_MESSAGE_MAP()
 
-bool CBrainSlot::_added;
+int CBrainSlot::_added;
 bool CBrainSlot::_woken;
 
 void CBrainSlot::save(SimpleFile *file, int indent) {
@@ -63,7 +63,7 @@ bool CBrainSlot::SetFrameMsg(CSetFrameMsg *msg) {
 }
 
 bool CBrainSlot::AddHeadPieceMsg(CAddHeadPieceMsg *msg) {
-	_added = true;
+	_added = 1;
 	_cursorId = CURSOR_HAND;
 	CAddHeadPieceMsg addMsg("NULL");
 
@@ -141,7 +141,7 @@ bool CBrainSlot::MouseDragStartMsg(CMouseDragStartMsg *msg) {
 	passMsg.execute(_target);
 
 	msg->_dragItem = getRoot()->findByName(_target);
-	_added = false;
+	_added = 0;
 
 	return true;
 }
diff --git a/engines/titanic/game/brain_slot.h b/engines/titanic/game/brain_slot.h
index fce9ab0..4d500cc 100644
--- a/engines/titanic/game/brain_slot.h
+++ b/engines/titanic/game/brain_slot.h
@@ -35,7 +35,8 @@ class CBrainSlot : public CGameObject {
 	bool ActMsg(CActMsg *msg);
 	bool MouseDragStartMsg(CMouseDragStartMsg *msg);
 public:
-	static bool _added, _woken;
+	static int _added;
+	static bool _woken;
 public:
 	int _value1;
 	CString _target;
diff --git a/engines/titanic/game/hammer_clip.cpp b/engines/titanic/game/hammer_clip.cpp
index e3f3a09..7fb6435 100644
--- a/engines/titanic/game/hammer_clip.cpp
+++ b/engines/titanic/game/hammer_clip.cpp
@@ -21,9 +21,16 @@
  */
 
 #include "titanic/game/hammer_clip.h"
+#include "titanic/core/project_item.h"
 
 namespace Titanic {
 
+BEGIN_MESSAGE_MAP(CHammerClip, CGameObject)
+	ON_MESSAGE(MouseButtonDownMsg)
+	ON_MESSAGE(StatusChangeMsg)
+	ON_MESSAGE(MouseDragStartMsg)
+END_MESSAGE_MAP()
+
 void CHammerClip::save(SimpleFile *file, int indent) {
 	file->writeNumberLine(1, indent);
 	file->writeNumberLine(_value, indent);
@@ -36,4 +43,41 @@ void CHammerClip::load(SimpleFile *file) {
 	CGameObject::load(file);
 }
 
+bool CHammerClip::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
+	return true;
+}
+
+bool CHammerClip::StatusChangeMsg(CStatusChangeMsg *msg) {
+	_value = msg->_newStatus == 1;
+	if (_value) {
+		CPuzzleSolvedMsg solvedMsg;
+		solvedMsg.execute("BigHammer");
+		_cursorId = CURSOR_HAND;
+	}
+
+	return true;
+}
+
+bool CHammerClip::MouseDragStartMsg(CMouseDragStartMsg *msg) {
+	if (!checkStartDragging(msg))
+		return false;
+
+	if (_value) {
+		CVisibleMsg visibleMsg(true);
+		visibleMsg.execute("BigHammer");
+		CPassOnDragStartMsg passMsg(msg->_mousePos, 1);
+		passMsg.execute("BigHammer");
+
+		msg->_dragItem = getRoot()->findByName("BigHammer");
+
+		CActMsg actMsg("HammerTaken");
+		actMsg.execute("HammerDispensor");
+		actMsg.execute("HammerDispensorButton");
+		_cursorId = CURSOR_ARROW;
+		_value = 0;
+	}
+
+	return true;
+}
+
 } // End of namespace Titanic
diff --git a/engines/titanic/game/hammer_clip.h b/engines/titanic/game/hammer_clip.h
index 7f5c5ab..4af58c2 100644
--- a/engines/titanic/game/hammer_clip.h
+++ b/engines/titanic/game/hammer_clip.h
@@ -28,6 +28,10 @@
 namespace Titanic {
 
 class CHammerClip : public CGameObject {
+	DECLARE_MESSAGE_MAP;
+	bool MouseButtonDownMsg(CMouseButtonDownMsg *msg);
+	bool StatusChangeMsg(CStatusChangeMsg *msg);
+	bool MouseDragStartMsg(CMouseDragStartMsg *msg);
 public:
 	int _value;
 public:
diff --git a/engines/titanic/game/hammer_dispensor.cpp b/engines/titanic/game/hammer_dispensor.cpp
index 440fe1b..bc6a3d5 100644
--- a/engines/titanic/game/hammer_dispensor.cpp
+++ b/engines/titanic/game/hammer_dispensor.cpp
@@ -24,15 +24,22 @@
 
 namespace Titanic {
 
+BEGIN_MESSAGE_MAP(CHammerDispensor, CBackground)
+	ON_MESSAGE(ActMsg)
+	ON_MESSAGE(EnterViewMsg)
+	ON_MESSAGE(LeaveViewMsg)
+	ON_MESSAGE(MovieEndMsg)
+END_MESSAGE_MAP()
+
 CHammerDispensor::CHammerDispensor() : CBackground(),
-	_fieldE0(0), _fieldE4(0), _fieldE8(0) {
+	_fieldE0(false), _fieldE4(true), _state(0) {
 }
 
 void CHammerDispensor::save(SimpleFile *file, int indent) {
 	file->writeNumberLine(1, indent);
 	file->writeNumberLine(_fieldE0, indent);
 	file->writeNumberLine(_fieldE4, indent);
-	file->writeNumberLine(_fieldE8, indent);
+	file->writeNumberLine(_state, indent);
 
 	CBackground::save(file, indent);
 }
@@ -41,9 +48,57 @@ void CHammerDispensor::load(SimpleFile *file) {
 	file->readNumber();
 	_fieldE0 = file->readNumber();
 	_fieldE4 = file->readNumber();
-	_fieldE8 = file->readNumber();
+	_state = file->readNumber();
 
 	CBackground::load(file);
 }
 
+bool CHammerDispensor::ActMsg(CActMsg *msg) {
+	if (msg->_action == "DispenseHammer" && !_fieldE0) {
+		_state = 1;
+		playMovie(15, 31, MOVIE_NOTIFY_OBJECT);
+		_fieldE0 = true;
+	}
+
+	if (msg->_action == "HammerTaken" && _fieldE0)
+		loadFrame(32);
+
+	return true;
+}
+
+bool CHammerDispensor::EnterViewMsg(CEnterViewMsg *msg) {
+	if (_fieldE4) {
+		playMovie(7, 14, 0);
+		_fieldE4 = false;
+	}
+
+	return true;
+}
+
+bool CHammerDispensor::LeaveViewMsg(CLeaveViewMsg *msg) {
+	_fieldE4 = true;
+	_fieldE0 = 0;
+	_state = 2;
+
+	if (_fieldE0)
+		playMovie(32, 50, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
+	else
+		playMovie(0, 7, MOVIE_NOTIFY_OBJECT | MOVIE_GAMESTATE);
+	return true;
+}
+
+bool CHammerDispensor::MovieEndMsg(CMovieEndMsg *msg) {
+	if (_state == 1) {
+		CStatusChangeMsg statusMsg;
+		statusMsg._newStatus = 1;
+		statusMsg.execute("HammerClip");
+	} else if (_state == 2) {
+		CStatusChangeMsg statusMsg;
+		statusMsg._newStatus = 2;
+		statusMsg.execute("HammerClip");
+	}
+
+	return true;
+}
+
 } // End of namespace Titanic
diff --git a/engines/titanic/game/hammer_dispensor.h b/engines/titanic/game/hammer_dispensor.h
index e1b30d9..2383a33 100644
--- a/engines/titanic/game/hammer_dispensor.h
+++ b/engines/titanic/game/hammer_dispensor.h
@@ -28,10 +28,15 @@
 namespace Titanic {
 
 class CHammerDispensor : public CBackground {
+	DECLARE_MESSAGE_MAP;
+	bool ActMsg(CActMsg *msg);
+	bool EnterViewMsg(CEnterViewMsg *msg);
+	bool LeaveViewMsg(CLeaveViewMsg *msg);
+	bool MovieEndMsg(CMovieEndMsg *msg);
 private:
-	int _fieldE0;
-	int _fieldE4;
-	int _fieldE8;
+	bool _fieldE0;
+	bool _fieldE4;
+	int _state;
 public:
 	CLASSDEF;
 	CHammerDispensor();
diff --git a/engines/titanic/game/hammer_dispensor_button.cpp b/engines/titanic/game/hammer_dispensor_button.cpp
index 3346498..fbda501 100644
--- a/engines/titanic/game/hammer_dispensor_button.cpp
+++ b/engines/titanic/game/hammer_dispensor_button.cpp
@@ -24,9 +24,18 @@
 
 namespace Titanic {
 
+BEGIN_MESSAGE_MAP(CHammerDispensorButton, CStartAction)
+	ON_MESSAGE(PuzzleSolvedMsg)
+	ON_MESSAGE(MouseButtonUpMsg)
+	ON_MESSAGE(ActMsg)
+	ON_MESSAGE(FrameMsg)
+	ON_MESSAGE(LeaveViewMsg)
+	ON_MESSAGE(EnterViewMsg)
+END_MESSAGE_MAP()
+
 CHammerDispensorButton::CHammerDispensorButton() : CStartAction(),
-	_fieldF8(0), _fieldFC(0), _field100(0), _field104(56),
-	_field108(6), _field10C(0), _field110(0) {
+	_fieldF8(0), _fieldFC(0), _field100(0), _btnPos(Point(56, 6)),
+	_field10C(nullptr), _field110(0) {
 }
 
 void CHammerDispensorButton::save(SimpleFile *file, int indent) {
@@ -34,8 +43,8 @@ void CHammerDispensorButton::save(SimpleFile *file, int indent) {
 	file->writeNumberLine(_fieldF8, indent);
 	file->writeNumberLine(_fieldFC, indent);
 	file->writeNumberLine(_field100, indent);
-	file->writeNumberLine(_field104, indent);
-	file->writeNumberLine(_field108, indent);
+	file->writeNumberLine(_btnPos.x, indent);
+	file->writeNumberLine(_btnPos.y, indent);
 	file->writeNumberLine(_field110, indent);
 
 	CStartAction::save(file, indent);
@@ -46,11 +55,91 @@ void CHammerDispensorButton::load(SimpleFile *file) {
 	_fieldF8 = file->readNumber();
 	_fieldFC = file->readNumber();
 	_field100 = file->readNumber();
-	_field104 = file->readNumber();
-	_field108 = file->readNumber();
+	_btnPos.x = file->readNumber();
+	_btnPos.y = file->readNumber();
 	_field110 = file->readNumber();
 
 	CStartAction::load(file);
 }
 
+bool CHammerDispensorButton::PuzzleSolvedMsg(CPuzzleSolvedMsg *msg) {
+	_fieldF8 = 1;
+	return true;
+}
+
+bool CHammerDispensorButton::MouseButtonUpMsg(CMouseButtonUpMsg *msg) {
+	playSound("z#93.wav");
+	petDisplayMessage(1, "In case of emergency hammer requirement, poke with long stick.");
+	return true;
+}
+
+bool CHammerDispensorButton::ActMsg(CActMsg *msg) {
+	if (msg->_action == "HammerTaken")
+		_field110 = true;
+	return true;
+}
+
+bool CHammerDispensorButton::FrameMsg(CFrameMsg *msg) {
+	if (!_fieldF8)
+		return true;
+
+	if (!_field10C) {
+		CGameObject *obj = getDraggingObject();
+		if (obj) {
+			if (obj->isEquals("Perch") && getView() == findView())
+				_field10C = obj;
+		}
+	}
+
+	if (_field10C) {
+		Point pt(_btnPos.x + _bounds.left, _btnPos.y + _bounds.top);
+		bool flag = checkPoint(pt, true);
+
+		switch (_fieldFC) {
+		case 0:
+			if (flag) {
+				playSound("z#93.wav");
+				if (++_field100 == 5) {
+					if (!_field110) {
+						CActMsg actMsg(_msgAction);
+						actMsg.execute(_msgTarget);
+					}
+
+					setVisible(false);
+					_fieldF8 = 0;
+					_field100 = 0;
+				}
+
+				_fieldFC = 1;
+			}
+			break;
+
+		case 1:
+			if (!flag) {
+				_fieldFC = 0;
+				++_field100;
+			}
+			break;
+
+		default:
+			break;
+		}
+	}
+
+	return true;
+}
+
+bool CHammerDispensorButton::LeaveViewMsg(CLeaveViewMsg *msg) {
+	_field10C = nullptr;
+	_field100 = 0;
+	_fieldFC = 0;
+	return true;
+}
+
+bool CHammerDispensorButton::EnterViewMsg(CEnterViewMsg *msg) {
+	setVisible(true);
+	_fieldF8 = 1;
+	return true;
+}
+
 } // End of namespace Titanic
diff --git a/engines/titanic/game/hammer_dispensor_button.h b/engines/titanic/game/hammer_dispensor_button.h
index 36732ad..f497b9d 100644
--- a/engines/titanic/game/hammer_dispensor_button.h
+++ b/engines/titanic/game/hammer_dispensor_button.h
@@ -28,13 +28,19 @@
 namespace Titanic {
 
 class CHammerDispensorButton : public CStartAction {
+	DECLARE_MESSAGE_MAP;
+	bool PuzzleSolvedMsg(CPuzzleSolvedMsg *msg);
+	bool MouseButtonUpMsg(CMouseButtonUpMsg *msg);
+	bool ActMsg(CActMsg *msg);
+	bool FrameMsg(CFrameMsg *msg);
+	bool LeaveViewMsg(CLeaveViewMsg *msg);
+	bool EnterViewMsg(CEnterViewMsg *msg);
 private:
 	int _fieldF8;
 	int _fieldFC;
 	int _field100;
-	int _field104;
-	int _field108;
-	int _field10C;
+	Point _btnPos;
+	CGameObject *_field10C;
 	int _field110;
 public:
 	CLASSDEF;
diff --git a/engines/titanic/game/head_slot.cpp b/engines/titanic/game/head_slot.cpp
index 32650b7..f7df02d 100644
--- a/engines/titanic/game/head_slot.cpp
+++ b/engines/titanic/game/head_slot.cpp
@@ -21,14 +21,27 @@
  */
 
 #include "titanic/game/head_slot.h"
+#include "titanic/core/project_item.h"
+#include "titanic/game/brain_slot.h"
 
 namespace Titanic {
 
+BEGIN_MESSAGE_MAP(CHeadSlot, CGameObject)
+	ON_MESSAGE(AddHeadPieceMsg)
+	ON_MESSAGE(SenseWorkingMsg)
+	ON_MESSAGE(EnterViewMsg)
+	ON_MESSAGE(LeaveViewMsg)
+	ON_MESSAGE(LoadSuccessMsg)
+	ON_MESSAGE(TimerMsg)
+	ON_MESSAGE(ActMsg)
+	ON_MESSAGE(MouseDragStartMsg)
+END_MESSAGE_MAP()
+
 int CHeadSlot::_v1;
 
 CHeadSlot::CHeadSlot() : CGameObject(), _string1("NotWorking"), _string2("NULL"),
 	_fieldBC(0), _fieldD8(0), _fieldDC(27), _fieldE0(56),
-	_fieldE4(82), _fieldE8(112), _fieldEC(0) {
+	_fieldE4(82), _fieldE8(112), _fieldEC(false) {
 }
 
 void CHeadSlot::save(SimpleFile *file, int indent) {
@@ -63,4 +76,109 @@ void CHeadSlot::load(SimpleFile *file) {
 	CGameObject::load(file);
 }
 
+bool CHeadSlot::AddHeadPieceMsg(CAddHeadPieceMsg *msg) {
+	setVisible(true);
+	_fieldBC = 1;
+	_string2 = msg->_value;
+	playMovie(_fieldDC, _fieldE8, 0);
+	_cursorId = CURSOR_HAND;
+	msg->execute("TitaniaControl");
+	return true;
+}
+
+bool CHeadSlot::SenseWorkingMsg(CSenseWorkingMsg *msg) {
+	if (_fieldEC) 
+		playMovie(_fieldE4, _fieldE8, 0);
+	
+	_string1 = msg->_value;
+	_fieldEC = false;
+	return true;
+}
+
+bool CHeadSlot::EnterViewMsg(CEnterViewMsg *msg) {
+	setVisible(true);
+	if (_v1)
+		_cursorId = CURSOR_ARROW;
+
+	if (_v1 == 1 || _string1 == "Working") {
+		playMovie(_fieldE0, _fieldE4, MOVIE_GAMESTATE);
+		_fieldEC = true;
+	} else if (_fieldBC) {
+		playMovie(_fieldE0, _fieldE8, MOVIE_GAMESTATE);
+		_fieldEC = false;
+	} else {
+		playMovie(0, _fieldDC, MOVIE_GAMESTATE);
+	}
+
+	addTimer(5000 + getRandomNumber(3000));
+	return true;
+}
+
+bool CHeadSlot::LeaveViewMsg(CLeaveViewMsg *msg) {
+	if (getName() == "YepItsASlot") {
+		stopMovie();
+
+		if (_fieldBC) {
+			loadFrame(_fieldE0);
+			playMovie(_fieldE0, _fieldE8, MOVIE_GAMESTATE);
+			_fieldEC = false;
+		} else {
+			loadFrame(_fieldDC);
+			playMovie(_fieldDC, _fieldE0, MOVIE_GAMESTATE);
+		}
+
+		_fieldEC = false;
+	}
+
+	return true;
+}
+
+bool CHeadSlot::LoadSuccessMsg(CLoadSuccessMsg *msg) {
+	return true;
+}
+
+bool CHeadSlot::TimerMsg(CTimerMsg *msg) {
+	if (compareViewNameTo("Titania.Node 15.S") && CBrainSlot::_added == 5
+			&& _fieldBC == 1) {
+		if (_string1 == "Working" && !_fieldEC) {
+			playMovie(_fieldE0, _fieldE4, 0);
+			_fieldEC = true;
+		} else if (_string1 == "Random") {
+			playMovie(_fieldE0, _fieldE8, 0);
+		}
+	}
+
+	if (compareViewNameTo("Titania.Node 15.S")) {
+		_fieldD8 = 7000 + getRandomNumber(5000);
+		addTimer(_fieldD8);
+	}
+
+	return true;
+}
+
+bool CHeadSlot::ActMsg(CActMsg *msg) {
+	if (msg->_action == "Woken")
+		_v1 = 1;
+	return true;
+}
+
+bool CHeadSlot::MouseDragStartMsg(CMouseDragStartMsg *msg) {
+	if (_fieldBC && !_v1 && checkPoint(msg->_mousePos, false, true)) {
+		CPassOnDragStartMsg passMsg;
+		passMsg._mousePos = msg->_mousePos;
+		passMsg.execute(_string2);
+
+		msg->_dragItem = getRoot()->findByName(_string2);
+		_cursorId = CURSOR_ARROW;
+		_fieldBC = 0;
+		_fieldEC = false;
+		_string2 = "NULL";
+		stopMovie();
+		loadFrame(0);
+		playMovie(0, _fieldDC, 0);
+	}
+
+	return true;
+}
+
 } // End of namespace Titanic
diff --git a/engines/titanic/game/head_slot.h b/engines/titanic/game/head_slot.h
index 0080411..2767db3 100644
--- a/engines/titanic/game/head_slot.h
+++ b/engines/titanic/game/head_slot.h
@@ -28,6 +28,15 @@
 namespace Titanic {
 
 class CHeadSlot : public CGameObject {
+	DECLARE_MESSAGE_MAP;
+	bool AddHeadPieceMsg(CAddHeadPieceMsg *msg);
+	bool SenseWorkingMsg(CSenseWorkingMsg *msg);
+	bool EnterViewMsg(CEnterViewMsg *msg);
+	bool LeaveViewMsg(CLeaveViewMsg *msg);
+	bool LoadSuccessMsg(CLoadSuccessMsg *msg);
+	bool TimerMsg(CTimerMsg *msg);
+	bool ActMsg(CActMsg *msg);
+	bool MouseDragStartMsg(CMouseDragStartMsg *msg);
 public:
 	static int _v1;
 public:
@@ -39,7 +48,7 @@ public:
 	int _fieldE0;
 	int _fieldE4;
 	int _fieldE8;
-	int _fieldEC;
+	bool _fieldEC;
 public:
 	CLASSDEF;
 	CHeadSlot();
diff --git a/engines/titanic/game/television.cpp b/engines/titanic/game/television.cpp
index b3c10d4..235fc9c 100644
--- a/engines/titanic/game/television.cpp
+++ b/engines/titanic/game/television.cpp
@@ -121,16 +121,16 @@ bool CTelevision::LeaveViewMsg(CLeaveViewMsg *msg) {
 }
 
 bool CTelevision::ChangeSeasonMsg(CChangeSeasonMsg *msg) {
-	if (msg->_season.compareTo("Autumn")) {
+	if (msg->_season == "Autumn") {
 		_v1 = 545;
 		_v3 = 0;
-	} else if (msg->_season.compareTo("Winter")) {
+	} else if (msg->_season == "Winter") {
 		_v1 = 503;
 		_v3 = 0;
-	} else if (msg->_season.compareTo("Spring")) {
+	} else if (msg->_season == "Spring") {
 		_v1 = 517;
 		_v3 = 0;
-	} else if (msg->_season.compareTo("Winter")) {
+	} else if (msg->_season == "Summer") {
 		_v1 = 531;
 		_v3 = 0;
 	}
diff --git a/engines/titanic/npcs/liftbot.cpp b/engines/titanic/npcs/liftbot.cpp
index 3d6321b..272617e 100644
--- a/engines/titanic/npcs/liftbot.cpp
+++ b/engines/titanic/npcs/liftbot.cpp
@@ -123,7 +123,7 @@ bool CLiftBot::TurnOff(CTurnOff *msg) {
 bool CLiftBot::TurnOn(CTurnOn *msg) {
 	_enabled = true;
 	if (!_flag) {
-		if (compareTo("LiftBotTalking", 0)) {
+		if (isEquals("LiftBotTalking")) {
 			endTalking(this, MOVIE_REPEAT, findView());
 			petSetArea(PET_CONVERSATION);
 			_flag = true;
diff --git a/engines/titanic/npcs/parrot.cpp b/engines/titanic/npcs/parrot.cpp
index 3ea9bc0..62b070e 100644
--- a/engines/titanic/npcs/parrot.cpp
+++ b/engines/titanic/npcs/parrot.cpp
@@ -421,7 +421,7 @@ bool CParrot::ParrotSpeakMsg(CParrotSpeakMsg *msg) {
 
 	// Check for rooms not to speak in
 	for (const char *const *s = &ROOM_NAMES[0]; *s; ++s) {
-		if (compareTo(*s))
+		if (isEquals(*s))
 			return true;
 	}
 
@@ -588,7 +588,7 @@ bool CParrot::FrameMsg(CFrameMsg *msg) {
 		}
 	}
 
-	bool chickenFlag = dragObject && dragObject->compareTo("Chicken");
+	bool chickenFlag = dragObject && dragObject->isEquals("Chicken");
 
 	if (_npcFlags & NPCFLAG_1000000) {
 		if (!chickenFlag || pt.x > 70 || pt.y < 90 || pt.y > 280) {
diff --git a/engines/titanic/room_flags.cpp b/engines/titanic/room_flags.cpp
index 4b3aeb4..9be8ea3 100644
--- a/engines/titanic/room_flags.cpp
+++ b/engines/titanic/room_flags.cpp
@@ -339,12 +339,12 @@ bool CRoomFlags::getBit0() const {
 
 uint CRoomFlags::getSpecialRoomFlags(const CString &roomName) {
 	for (int idx = 0; idx < SUCCUBUS_ROOMS_SIZE; ++idx) {
-		if (!roomName.compareTo(SUCCUBUS_ROOMS[idx]._roomName))
+		if (roomName == SUCCUBUS_ROOMS[idx]._roomName)
 			return SUCCUBUS_ROOMS[idx]._roomFlags;
 	}
 
 	for (int idx = 0; idx < TRANSPORT_ROOMS_SIZE; ++idx) {
-		if (!roomName.compareTo(TRANSPORT_ROOMS[idx]._roomName))
+		if (roomName == TRANSPORT_ROOMS[idx]._roomName)
 			return TRANSPORT_ROOMS[idx]._roomFlags;
 	}
 
@@ -353,7 +353,7 @@ uint CRoomFlags::getSpecialRoomFlags(const CString &roomName) {
 
 uint CRoomFlags::getSuccUBusNum(const CString &roomName) const {
 	for (int idx = 0; idx < SUCCUBUS_ROOMS_SIZE; ++idx) {
-		if (!roomName.compareTo(SUCCUBUS_ROOMS[idx]._roomName))
+		if (roomName == SUCCUBUS_ROOMS[idx]._roomName)
 			return SUCCUBUS_ROOMS[idx]._succubusNum;
 	}
 






More information about the Scummvm-git-logs mailing list