[Scummvm-cvs-logs] scummvm master -> a1affaa698516e93763e812281e7d9609f098193

dreammaster dreammaster at scummvm.org
Mon Aug 8 03:52:18 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:
a1affaa698 TITANIC: Implemented CAutoMusicPlayerBase class


Commit: a1affaa698516e93763e812281e7d9609f098193
    https://github.com/scummvm/scummvm/commit/a1affaa698516e93763e812281e7d9609f098193
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2016-08-07T21:52:09-04:00

Commit Message:
TITANIC: Implemented CAutoMusicPlayerBase class

Changed paths:
    engines/titanic/messages/messages.h
    engines/titanic/sound/auto_music_player.cpp
    engines/titanic/sound/auto_music_player_base.cpp
    engines/titanic/sound/auto_music_player_base.h



diff --git a/engines/titanic/messages/messages.h b/engines/titanic/messages/messages.h
index 8884a51..37d41bd 100644
--- a/engines/titanic/messages/messages.h
+++ b/engines/titanic/messages/messages.h
@@ -208,7 +208,7 @@ MESSAGE0(CArmPickedUpFromTableMsg);
 MESSAGE0(CBodyInBilgeRoomMsg);
 MESSAGE1(CBowlStateChange, int, value, 0);
 MESSAGE2(CCarryObjectArrivedMsg, CString, strValue, "", int, numValue, 0);
-MESSAGE2(CChangeMusicMsg, 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);
diff --git a/engines/titanic/sound/auto_music_player.cpp b/engines/titanic/sound/auto_music_player.cpp
index 9648143..f06999e 100644
--- a/engines/titanic/sound/auto_music_player.cpp
+++ b/engines/titanic/sound/auto_music_player.cpp
@@ -42,8 +42,10 @@ void CAutoMusicPlayer::load(SimpleFile *file) {
 }
 
 bool CAutoMusicPlayer::EnterRoomMsg(CEnterRoomMsg *msg) {
-	if (!_fieldCC) {
-		warning("TODO");
+	if (!_isRepeated) {
+		CRoomItem *room = findRoom();
+		if (msg->_newRoom == room)
+			addTimer(2000);
 	}
 
 	return true;
diff --git a/engines/titanic/sound/auto_music_player_base.cpp b/engines/titanic/sound/auto_music_player_base.cpp
index c8b9adc..ad8b848 100644
--- a/engines/titanic/sound/auto_music_player_base.cpp
+++ b/engines/titanic/sound/auto_music_player_base.cpp
@@ -24,29 +24,78 @@
 
 namespace Titanic {
 
+BEGIN_MESSAGE_MAP(CAutoMusicPlayerBase, CGameObject)
+	ON_MESSAGE(StatusChangeMsg)
+	ON_MESSAGE(TimerMsg)
+	ON_MESSAGE(LoadSuccessMsg)
+	ON_MESSAGE(ChangeMusicMsg)
+END_MESSAGE_MAP()
+
 CAutoMusicPlayerBase::CAutoMusicPlayerBase() : CGameObject(),
-	_fieldC8(1), _fieldCC(0), _fieldD0(-1), _fieldD4(1) {
+	_initialMute(true), _isRepeated(false), _volumeMode(-1), _transition(1) {
 }
 void CAutoMusicPlayerBase::save(SimpleFile *file, int indent) {
 	file->writeNumberLine(1, indent);
-	file->writeQuotedLine(_string1, indent);
-	file->writeNumberLine(_fieldC8, indent);
-	file->writeNumberLine(_fieldCC, indent);
-	file->writeNumberLine(_fieldD0, indent);
-	file->writeNumberLine(_fieldD4, indent);
+	file->writeQuotedLine(_filename, indent);
+	file->writeNumberLine(_initialMute, indent);
+	file->writeNumberLine(_isRepeated, indent);
+	file->writeNumberLine(_volumeMode, indent);
+	file->writeNumberLine(_transition, indent);
 
 	CGameObject::save(file, indent);
 }
 
 void CAutoMusicPlayerBase::load(SimpleFile *file) {
 	file->readNumber();
-	_string1 = file->readString();
-	_fieldC8 = file->readNumber();
-	_fieldCC = file->readNumber();
-	_fieldD0 = file->readNumber();
-	_fieldD4 = file->readNumber();
+	_filename = file->readString();
+	_initialMute = file->readNumber();
+	_isRepeated = file->readNumber();
+	_volumeMode = file->readNumber();
+	_transition = file->readNumber();
 
 	CGameObject::load(file);
 }
 
+bool CAutoMusicPlayerBase::StatusChangeMsg(CStatusChangeMsg *msg) {
+	return true;
+}
+
+bool CAutoMusicPlayerBase::TimerMsg(CTimerMsg *msg) {
+	CChangeMusicMsg musicMsg;
+	musicMsg._flags = 2;
+	musicMsg.execute(this);
+
+	return true;
+}
+
+bool CAutoMusicPlayerBase::LoadSuccessMsg(CLoadSuccessMsg *msg) {
+	if (_isRepeated)
+		playGlobalSound(_filename, _volumeMode, _initialMute, true, 0);
+	
+	return true;
+}
+
+bool CAutoMusicPlayerBase::ChangeMusicMsg(CChangeMusicMsg *msg) {
+	if (_isRepeated && msg->_flags == 1) {
+		_isRepeated = false;
+		stopGlobalSound(_transition, -1);
+	}
+
+	if (!msg->_filename.empty()) {
+		_filename = msg->_filename;
+
+		if (_isRepeated) {
+			stopGlobalSound(_transition, -1);
+			playGlobalSound(_filename, _volumeMode, _initialMute, true, 0);
+		}
+	}
+
+	if (_isRepeated && msg->_flags == 2) {
+		_isRepeated = true;
+		playGlobalSound(_filename, _volumeMode, _initialMute, true, 0);
+	}
+
+	return true;
+}
+
 } // End of namespace Titanic
diff --git a/engines/titanic/sound/auto_music_player_base.h b/engines/titanic/sound/auto_music_player_base.h
index 657c527..0623258 100644
--- a/engines/titanic/sound/auto_music_player_base.h
+++ b/engines/titanic/sound/auto_music_player_base.h
@@ -28,12 +28,17 @@
 namespace Titanic {
 
 class CAutoMusicPlayerBase : public CGameObject {
+	DECLARE_MESSAGE_MAP;
+	bool StatusChangeMsg(CStatusChangeMsg *msg);
+	bool TimerMsg(CTimerMsg *msg);
+	bool LoadSuccessMsg(CLoadSuccessMsg *msg);
+	bool ChangeMusicMsg(CChangeMusicMsg *msg);
 protected:
-	CString _string1;
-	int _fieldC8;
-	int _fieldCC;
-	int _fieldD0;
-	int _fieldD4;
+	CString _filename;
+	bool _initialMute;
+	bool _isRepeated;
+	int _volumeMode;
+	int _transition;
 public:
 	CLASSDEF;
 	CAutoMusicPlayerBase();






More information about the Scummvm-git-logs mailing list