diff options
author | Sven Hesse | 2006-01-08 20:03:20 +0000 |
---|---|---|
committer | Sven Hesse | 2006-01-08 20:03:20 +0000 |
commit | 70dfe93ed707a5d1cb9dc45257cc51c7e4228b8f (patch) | |
tree | f76bd2c53168bfb6c8ede005bb1854daca8b6f4f /gob/music.cpp | |
parent | c19447b45f0f6a339c48f3cfe7bcf178fcfb14bf (diff) | |
download | scummvm-rg350-70dfe93ed707a5d1cb9dc45257cc51c7e4228b8f.tar.gz scummvm-rg350-70dfe93ed707a5d1cb9dc45257cc51c7e4228b8f.tar.bz2 scummvm-rg350-70dfe93ed707a5d1cb9dc45257cc51c7e4228b8f.zip |
Added a dummy table for which music to play in Gobliiins Mac; some code formating issues
svn-id: r19951
Diffstat (limited to 'gob/music.cpp')
-rw-r--r-- | gob/music.cpp | 67 |
1 files changed, 62 insertions, 5 deletions
diff --git a/gob/music.cpp b/gob/music.cpp index a77fc0c1b6..187283c16c 100644 --- a/gob/music.cpp +++ b/gob/music.cpp @@ -22,9 +22,45 @@ #include "gob/music.h" #include "gob/gob.h" +#include "gob/game.h" namespace Gob { +const char *Music::_tracks[][2] = { + {"avt00.tot", "mine"}, + {"avt001.tot", "nuit"}, + {"avt002.tot", "campagne"}, + {"avt003.tot", "extsor1"}, + {"avt004.tot", "interieure"}, + {"avt005.tot", "zombie"}, + {"avt006.tot", "zombie"}, + {"avt007.tot", "campagne"}, + {"avt008.tot", "campagne"}, + {"avt009.tot", "extsor1"}, + {"avt010.tot", "extsor1"}, + {"avt011.tot", "interieure"}, + {"avt012.tot", "zombie"}, + {"avt014.tot", "nuit"}, + {"avt015.tot", "interieure"}, + {"avt016.tot", "statue"}, + {"avt017.tot", "zombie"}, + {"avt018.tot", "statue"}, + {"avt019.tot", "mine"}, + {"avt020.tot", "statue"}, + {"avt021.tot", "mine"}, + {"avt022.tot", "zombie"} +}; + +const char *Music::_tracksToFiles[][2] = { + {"campagne", "Musmac2.adl"}, + {"extsor1", "Musmac3.adl"}, + {"interieure", "Musmac4.adl"}, + {"mine", "Musmac5.adl"}, + {"nuit", "Musmac6.adl"}, + {"statue", "Musmac2.adl"}, + {"zombie", "Musmac3.adl"} +}; + const unsigned char Music::_operators[] = {0, 1, 2, 8, 9, 10, 16, 17, 18}; const unsigned char Music::_volRegNums[] = { 3, 4, 5, @@ -32,7 +68,6 @@ const unsigned char Music::_volRegNums[] = { 19, 20, 21 }; - Music::Music(GobEngine *vm) : _vm(vm) { _data = 0; _playPos = 0; @@ -71,7 +106,7 @@ void Music::premixerCall(int16 *buf, uint len) { int16 *data = buf; uint datalen = len; while (datalen) { - if(_samplesTillPoll) { + if (_samplesTillPoll) { render = (datalen > _samplesTillPoll) ? (_samplesTillPoll) : (datalen); datalen -= render; _samplesTillPoll -= render; @@ -79,19 +114,19 @@ void Music::premixerCall(int16 *buf, uint len) { data += render; } else { pollMusic(); - if(_ended) { + if (_ended) { memset(data, 0, datalen * sizeof(int16)); datalen = 0; } } } } - if(_ended) { + if (_ended) { _first = true; _ended = false; _playPos = _data + 3 + (_data[1] + 1) * 0x38; _samplesTillPoll = 0; - if(_looping) { + if (_looping) { reset(); setVoices(); } @@ -349,6 +384,28 @@ void Music::startPlay(void) { _playing = true; } +void Music::playBgMusic(void) { + debug(2, "Music::playBgMusic()"); + for (int i = 0; i < ARRAYSIZE(_tracks); i++) + if (!scumm_stricmp(_vm->_game->_curTotFile, _tracks[i][0])) { + playTrack(_tracks[i][1]); + break; + } +} + +void Music::playTrack(const char *trackname) { + if (_playing) return; + + debug(2, "Music::playTrack()"); + unloadMusic(); + for (int i = 0; i < ARRAYSIZE(_tracksToFiles); i++) + if (!scumm_stricmp(trackname, _tracksToFiles[i][0])) { + loadMusic(_tracksToFiles[i][1]); + startPlay(); + break; + } +} + bool Music::loadMusic(const char *filename) { Common::File song; |