[Scummvm-cvs-logs] CVS: residual/imuse imuse.h,1.7,1.8 imuse_script.cpp,1.7,1.8 imuse_sndmgr.cpp,1.9,1.10 imuse_sndmgr.h,1.6,1.7

Pawel Kolodziejski aquadran at users.sourceforge.net
Sat Jan 1 13:09:02 CET 2005


Update of /cvsroot/scummvm/residual/imuse
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29605/imuse

Modified Files:
	imuse.h imuse_script.cpp imuse_sndmgr.cpp imuse_sndmgr.h 
Log Message:
handle sfx and voice by imuse

Index: imuse.h
===================================================================
RCS file: /cvsroot/scummvm/residual/imuse/imuse.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- imuse.h	1 Jan 2005 12:27:57 -0000	1.7
+++ imuse.h	1 Jan 2005 21:07:52 -0000	1.8
@@ -104,8 +104,6 @@
 	int allocSlot(int priority);
 	void selectVolumeGroup(const char *soundName, int volGroupId);
 
-	int32 getPosInMs(const char *soundName);
-
 	void fadeOutMusic(int fadeDelay);
 	Track *cloneToFadeOutTrack(Track *track, int fadeDelay);
 
@@ -143,8 +141,9 @@
 	void setMusicSequence(int seqId);
 	void refreshScripts();
 	void flushTracks();
+	bool isVoicePlaying();
 	bool getSoundStatus(const char *soundName) const;
-	int32 getCurMusicPosInMs();
+	int32 getPosIn60HzTicks(const char *soundName);
 };
 
 extern Imuse *g_imuse;

Index: imuse_script.cpp
===================================================================
RCS file: /cvsroot/scummvm/residual/imuse/imuse_script.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- imuse_script.cpp	1 Jan 2005 12:27:57 -0000	1.7
+++ imuse_script.cpp	1 Jan 2005 21:07:52 -0000	1.8
@@ -73,22 +73,22 @@
 	startSound(soundName, IMUSE_VOLGRP_SFX, 0, 127, 0, priority);
 }
 
-int32 Imuse::getPosInMs(const char *soundName) {
+int32 Imuse::getPosIn60HzTicks(const char *soundName) {
 	for (int l = 0; l < MAX_IMUSE_TRACKS; l++) {
 		Track *track = _track[l];
 		if (track->used && !track->toBeRemoved && (strcmp(track->soundName, soundName) == 0)) {
-			int32 pos = (5 * (track->dataOffset + track->regionOffset)) / (track->iteration / 200);
+			int32 pos = (5 * (track->dataOffset + track->regionOffset)) / (track->iteration / 12);
 			return pos;
 		}
 	}
 
-	return 0;
+	return -1;
 }
 
-bool Imuse::getSoundStatus(const char *soundName) const {
+bool Imuse::isVoicePlaying() {
 	for (int l = 0; l < MAX_IMUSE_TRACKS; l++) {
 		Track *track = _track[l];
-		if (strcmp(track->soundName, soundName) == 0) {
+		if (track->volGroupId == IMUSE_VOLGRP_VOICE) {
 			if (track->handle.isActive() || (track->stream && track->used && !track->readyToRemove)) {
 				return true;
 			}
@@ -98,27 +98,26 @@
 	return false;
 }
 
-void Imuse::stopSound(const char *soundName) {
+bool Imuse::getSoundStatus(const char *soundName) const {
 	for (int l = 0; l < MAX_IMUSE_TRACKS; l++) {
 		Track *track = _track[l];
-		if (track->used && !track->toBeRemoved && (strcmp(track->soundName, soundName) == 0)) {
-			track->toBeRemoved = true;
+		if (strcmp(track->soundName, soundName) == 0) {
+			if (track->handle.isActive() || (track->stream && track->used && !track->readyToRemove)) {
+				return true;
+			}
 		}
 	}
-}
 
-int32 Imuse::getCurMusicPosInMs() {
-	const char *soundName = NULL;
+	return false;
+}
 
+void Imuse::stopSound(const char *soundName) {
 	for (int l = 0; l < MAX_IMUSE_TRACKS; l++) {
 		Track *track = _track[l];
-		if (track->used && !track->toBeRemoved && (track->volGroupId == IMUSE_VOLGRP_MUSIC)) {
-			soundName = track->soundName;
+		if (track->used && !track->toBeRemoved && (strcmp(track->soundName, soundName) == 0)) {
+			track->toBeRemoved = true;
 		}
 	}
-
-	int32 msPos = getPosInMs(soundName);
-	return msPos;
 }
 
 void Imuse::stopAllSounds() {

Index: imuse_sndmgr.cpp
===================================================================
RCS file: /cvsroot/scummvm/residual/imuse/imuse_sndmgr.cpp,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- imuse_sndmgr.cpp	1 Jan 2005 12:27:57 -0000	1.9
+++ imuse_sndmgr.cpp	1 Jan 2005 21:07:52 -0000	1.10
@@ -166,10 +166,9 @@
 	sound->volGroupId = volGroupId;
 
 	if (strcasecmp(extension, "imu") == 0) {
-		Block *b = g_resourceloader->getFileBlock(soundName);
-		if (b != NULL) {
-			ptr = (byte *)b->data();
-			delete b;
+		sound->blockRes = g_resourceloader->getFileBlock(soundName);
+		if (sound->blockRes != NULL) {
+			ptr = (byte *)sound->blockRes->data();
 			parseSoundHeader(ptr, sound, headerSize);
 			sound->mcmpData = false;
 			sound->resPtr = ptr + headerSize;
@@ -200,6 +199,11 @@
 		soundHandle->mcmpMgr = NULL;
 	}
 
+	if (soundHandle->blockRes) {
+		delete soundHandle->blockRes;
+		soundHandle->blockRes = NULL;
+	}
+
 	if (soundHandle->region) {
 		free(soundHandle->region);
 		soundHandle->region = NULL;

Index: imuse_sndmgr.h
===================================================================
RCS file: /cvsroot/scummvm/residual/imuse/imuse_sndmgr.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- imuse_sndmgr.h	1 Jan 2005 12:27:57 -0000	1.6
+++ imuse_sndmgr.h	1 Jan 2005 21:07:52 -0000	1.7
@@ -27,6 +27,7 @@
 #include "mixer/audiostream.h"
 
 class McmpMgr;
+class Block;
 
 class ImuseSndMgr {
 public:
@@ -64,6 +65,7 @@
 		bool inUse;
 		char name[32];
 		McmpMgr *mcmpMgr;
+		Block *blockRes;
 		int volGroupId;
 		byte *resPtr;
 		bool mcmpData;





More information about the Scummvm-git-logs mailing list