[Scummvm-cvs-logs] CVS: scummvm/queen journal.cpp,1.33,1.34 music.cpp,1.18,1.19 music.h,1.12,1.13 queen.cpp,1.83,1.84

Joost Peters joostp at users.sourceforge.net
Mon Mar 8 17:19:30 CET 2004


Update of /cvsroot/scummvm/scummvm/queen
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5676/queen

Modified Files:
	journal.cpp music.cpp music.h queen.cpp 
Log Message:
Enable music volume slider in Journal


Index: journal.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/journal.cpp,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -d -r1.33 -r1.34
--- journal.cpp	7 Mar 2004 10:46:01 -0000	1.33
+++ journal.cpp	9 Mar 2004 00:52:07 -0000	1.34
@@ -240,8 +240,8 @@
 		_vm->sound()->toggleSfx();
 		drawConfigPanel();
 	} else if (zoneNum == ZN_MUSIC_VOLUME) {
-		// int val = (x - 136) * 100 / 130;
-		// XXX alter_current_volume();
+		int val = (x - 136) * 255 / 130;
+		_vm->music()->setVolume(val);
 		drawConfigPanel();
 	} else if (zoneNum >= ZN_DESC_FIRST && zoneNum <= ZN_DESC_LAST) {
 		_currentSaveSlot = zoneNum - ZN_DESC_FIRST;
@@ -430,9 +430,8 @@
 	_vm->checkOptionSettings();
 
 	drawSlideBar(_vm->talkSpeed(), 130, 100, BOB_TALK_SPEED, 136 - 4, 164, FRAME_BLUE_PIN);
-	// XXX music_volume
-	drawSlideBar(100, 130, 100, BOB_MUSIC_VOLUME, 136 - 4, 177, FRAME_GREEN_PIN);
-
+	drawSlideBar(_vm->music()->volume(), 130, 255, BOB_MUSIC_VOLUME, 136 - 4, 177, FRAME_GREEN_PIN);
+	
 	drawCheckBox(_vm->sound()->sfxOn(), BOB_SFX_TOGGLE, 221, 155, FRAME_CHECK_BOX);
 	drawCheckBox(_vm->sound()->speechOn(), BOB_SPEECH_TOGGLE, 158, 155, FRAME_CHECK_BOX);
 	drawCheckBox(_vm->subtitles(), BOB_TEXT_TOGGLE, 125, 167, FRAME_CHECK_BOX);

Index: music.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/music.cpp,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- music.cpp	27 Feb 2004 02:08:44 -0000	1.18
+++ music.cpp	9 Mar 2004 00:52:07 -0000	1.19
@@ -42,7 +42,7 @@
 	 47, 117, 127, 118, 118, 116, 115, 119, 115, 112,  55, 124, 123,   0,  14, 117  // 7x
 };
 
-	MusicPlayer::MusicPlayer(MidiDriver *driver, byte *data, uint32 size) : _driver(driver), _isPlaying(false), _looping(false), _randomLoop(false), _volume(255), _queuePos(0), _musicData(data), _musicDataSize(size) {
+	MusicPlayer::MusicPlayer(MidiDriver *driver, byte *data, uint32 size) : _driver(driver), _isPlaying(false), _looping(false), _randomLoop(false), _masterVolume(192), _queuePos(0), _musicData(data), _musicDataSize(size) {
 		memset(_channel, 0, sizeof(_channel));
 		queueClear();
 		_lastSong = _currentSong = 0;
@@ -61,6 +61,23 @@
 		delete _parser;
 	}
 	
+	void MusicPlayer::setVolume(int volume) {
+		if (volume < 0)
+			volume = 0;
+		else if (volume > 255)
+			volume = 255;
+			
+		if (_masterVolume == volume)
+			return;
+			
+		_masterVolume = volume;
+		
+		for (int i = 0; i < 16; ++i) {
+			if (_channel[i])
+				_channel[i]->volume(_channelVolume[i] * _masterVolume / 255);
+		}
+	}
+	
 	bool MusicPlayer::queueSong(uint16 songNum) {
 		uint8 emptySlots = 0;
 		for (int i = 0; i < MUSIC_QUEUE_SIZE; i++)
@@ -111,7 +128,7 @@
 			// Adjust volume changes by master volume
 			byte volume = (byte)((b >> 16) & 0x7F);
 			_channelVolume[channel] = volume;
-			//volume = volume * _masterVolume / 255;
+			volume = volume * _masterVolume / 255;
 			b = (b & 0xFF00FFFF) | (volume << 16);
 		} else if ((b & 0xF0) == 0xC0 && !_nativeMT32) {
 			b = (b & 0xFFFF00FF) | mt32_to_gm[(b >> 8) & 0xFF] << 8;

Index: music.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/music.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- music.h	27 Feb 2004 02:08:44 -0000	1.12
+++ music.h	9 Mar 2004 00:52:07 -0000	1.13
@@ -35,7 +35,9 @@
 public:
 	MusicPlayer(MidiDriver *driver, byte *data, uint32 size);
 	~MusicPlayer();
-
+	void setVolume(int volume);
+	int getVolume()			{ return _masterVolume; }
+	
 	void hasNativeMT32(bool b)	{ _nativeMT32 = b; }
 	void playMusic();
 	void stopMusic();
@@ -81,7 +83,7 @@
 	bool _isPlaying;
 	bool _looping;
 	bool _randomLoop;
-	byte _volume;
+	byte _masterVolume;
 	uint8 _queuePos;
 	int16 _currentSong;
 	int16 _lastSong;	//first song from previous queue
@@ -103,6 +105,9 @@
 	void playMusic()			{ _player->playMusic(); }
 	void stopSong()				{ _player->stopMusic(); }
 	
+	void setVolume(int vol)			{ _player->setVolume(vol); }
+	int volume()				{ return _player->getVolume(); }
+	
 protected:
 	byte *_musicData;
 	uint32 _musicDataSize;

Index: queen.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/queen.cpp,v
retrieving revision 1.83
retrieving revision 1.84
diff -u -d -r1.83 -r1.84
--- queen.cpp	24 Feb 2004 22:39:39 -0000	1.83
+++ queen.cpp	9 Mar 2004 00:52:07 -0000	1.84
@@ -134,8 +134,6 @@
 		_talkSpeed = 100;
 	}
 
-	// XXX check master_volume value
-
 	// ensure text is always on when voice is off
 	if (!_sound->speechOn()) {
 		_subtitles = true;
@@ -143,7 +141,7 @@
 }
 
 void QueenEngine::readOptionSettings() {
-	// XXX master_volume
+	_music->setVolume(ConfMan.getInt("music_volume"));
 	_sound->musicToggle(!ConfMan.getBool("music_mute"));
 	_sound->sfxToggle(!ConfMan.getBool("sfx_mute"));
 	_talkSpeed = ConfMan.getInt("talkspeed");
@@ -153,7 +151,7 @@
 }
 
 void QueenEngine::writeOptionSettings() {
-	// XXX master_volume
+	ConfMan.set("music_volume", _music->volume());
 	ConfMan.set("music_mute", !_sound->musicOn());
 	ConfMan.set("sfx_mute", !_sound->sfxOn());
 	ConfMan.set("talkspeed", _talkSpeed);





More information about the Scummvm-git-logs mailing list