[Scummvm-cvs-logs] scummvm master -> 69083ae71f2fe111a64206f234011013fcfd2ba4

dreammaster dreammaster at scummvm.org
Thu Aug 18 05:13:26 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:
69083ae71f TITANIC: Finished CChevCode class


Commit: 69083ae71f2fe111a64206f234011013fcfd2ba4
    https://github.com/scummvm/scummvm/commit/69083ae71f2fe111a64206f234011013fcfd2ba4
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2016-08-17T23:13:20-04:00

Commit Message:
TITANIC: Finished CChevCode class

Changed paths:
    engines/titanic/game/chev_code.cpp
    engines/titanic/messages/messages.h
    engines/titanic/npcs/parrot_succubus.cpp



diff --git a/engines/titanic/game/chev_code.cpp b/engines/titanic/game/chev_code.cpp
index 4dd3ac3..1feef0c 100644
--- a/engines/titanic/game/chev_code.cpp
+++ b/engines/titanic/game/chev_code.cpp
@@ -142,7 +142,123 @@ bool CChevCode::GetChevRoomNum(CGetChevRoomNum *msg) {
 }
 
 bool CChevCode::CheckChevCode(CCheckChevCode *msg) {
-	// TODO
+	CGetChevClassNum getClassMsg;
+	CGetChevLiftNum getLiftMsg;
+	CGetChevFloorNum getFloorMsg;
+	CGetChevRoomNum getRoomMsg;
+	CString roomName;
+	int classNum = 0;
+	uint bits;
+
+	if (_floorBits & 1) {
+		switch (_floorBits) {
+		case 0x1D0D9:
+			roomName = "ParrLobby";
+			classNum = 4;
+			break;
+		case 0x196D9:
+			roomName = "FCRestrnt";
+			classNum = 4;
+			break;
+		case 0x39FCB:
+			roomName = "Bridge";
+			classNum = 4;
+			break;
+		case 0x2F86D:
+			roomName = "CrtrsCham";
+			classNum = 4;
+			break;
+		case 0x465FB:
+			roomName = "SculpCham";
+			classNum = 4;
+			break;
+		case 0x3D94B:
+			roomName = "BilgeRoom";
+			classNum = 4;
+			break;
+		case 0x59FAD:
+			roomName = "BoWell";
+			classNum = 4;
+			break;
+		case 0x4D6AF:
+			roomName = "Arboretum";
+			classNum = 4;
+			break;
+		case 0x8A397:
+			roomName = "TitRoom";
+			classNum = 4;
+			break;
+		case 0x79C45:
+			roomName = "PromDeck";
+			classNum = 4;
+			break;
+		case 0xB3D97:
+			roomName = "Bar";
+			classNum = 4;
+			break;
+		case 0xCC971:
+			roomName = "EmbLobby";
+			classNum = 4;
+			break;
+		case 0xF34DB:
+			roomName = "MusicRoom";
+			classNum = 4;
+			break;
+		default:
+			roomName = "BadRoom";
+			classNum = 5;
+			break;
+		}
+
+		bits = classNum == 5 ? 0x3D94B : _floorBits;
+	} else {
+		getFloorMsg.execute(this);
+		getRoomMsg.execute(this);
+		getClassMsg.execute(this);
+		getLiftMsg.execute(this);
+		if (getFloorMsg._floorNum > 37 || getRoomMsg._roomNum > 18)
+			classNum = 5;
+
+		if (classNum == 5) {
+			bits = 0x3D94B;
+		} else {
+			switch (getClassMsg._classNum) {
+			case 1:
+				if (getFloorMsg._floorNum >= 2 && getFloorMsg._floorNum <= 18
+					&& getRoomMsg._roomNum >= 1 && getRoomMsg._roomNum <= 3
+					&& getLiftMsg._liftNum >= 1 && getLiftMsg._liftNum <= 4)
+					classNum = 1;
+				else
+					classNum = 5;
+				break;
+
+			case 2:
+				if (getFloorMsg._floorNum >= 19 && getFloorMsg._floorNum <= 26
+					&& getRoomMsg._roomNum >= 1 && getRoomMsg._roomNum <= 5
+					&& getLiftMsg._liftNum >= 1 && getLiftMsg._liftNum <= 4)
+					classNum = 2;
+				else
+					classNum = 5;
+				break;
+
+			case 3:
+				if (getFloorMsg._floorNum >= 27 && getFloorMsg._floorNum <= 37
+					&& getRoomMsg._roomNum >= 1 && getRoomMsg._roomNum <= 18
+					&& (getLiftMsg._liftNum & 1) == 1
+					&& getLiftMsg._liftNum >= 1 && getLiftMsg._liftNum <= 4)
+					classNum = 3;
+				else
+					classNum = 5;
+				break;
+			}
+		}
+		// TODO
+	}
+
+	msg->_classNum = classNum;
+	msg->_chevCode = bits;
+
+	// WORKAROUND: Skipped code from original that was for debugging purposes only
 	return true;
 }
 
diff --git a/engines/titanic/messages/messages.h b/engines/titanic/messages/messages.h
index 816c5f5..c146052 100644
--- a/engines/titanic/messages/messages.h
+++ b/engines/titanic/messages/messages.h
@@ -211,7 +211,7 @@ MESSAGE2(CCarryObjectArrivedMsg, CString, strValue, "", int, numValue, 0);
 MESSAGE2(CChangeMusicMsg, CString, filename, "", int, flags, 0);
 MESSAGE1(CChangeSeasonMsg, CString, season, "Summer");
 MESSAGE0(CCheckAllPossibleCodes);
-MESSAGE2(CCheckChevCode, int, value1, 0, int, value2, 0);
+MESSAGE2(CCheckChevCode, int, classNum, 0, uint, chevCode, 0);
 MESSAGE1(CChildDragEndMsg, int, value, 0);
 MESSAGE2(CChildDragMoveMsg, int, value1, 0, int, value2, 0);
 MESSAGE2(CChildDragStartMsg, int, value1, 0, int, value2, 0);
diff --git a/engines/titanic/npcs/parrot_succubus.cpp b/engines/titanic/npcs/parrot_succubus.cpp
index 652282b..5f67b8f 100644
--- a/engines/titanic/npcs/parrot_succubus.cpp
+++ b/engines/titanic/npcs/parrot_succubus.cpp
@@ -129,6 +129,7 @@ bool CParrotSuccUBus::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
 		CHoseConnectedMsg hoseMsg;
 		hoseMsg._value = 0;
 		hoseMsg.execute(this);
+		return true;
 	} else {
 		return CSuccUBus::MouseButtonDownMsg(msg);
 	}
@@ -136,7 +137,7 @@ bool CParrotSuccUBus::MouseButtonDownMsg(CMouseButtonDownMsg *msg) {
 
 bool CParrotSuccUBus::LeaveNodeMsg(CLeaveNodeMsg *msg) {
 	if (_field1DC) {
-		CGameObject *obj = getHiddenObject(_string3);
+		getHiddenObject(_string3);
 		if (CHose::_statics->_v2.empty()) {
 			playSound("z#51.wav");
 			CHoseConnectedMsg hoseMsg;






More information about the Scummvm-git-logs mailing list