FULLPIPE: Change the sound code to use Common::String

This commit is contained in:
Filippos Karapetis 2017-03-22 05:22:36 +02:00
parent 2649e2b1fc
commit abe1c65d62
3 changed files with 19 additions and 21 deletions

View file

@ -131,10 +131,6 @@ FullpipeEngine::FullpipeEngine(OSystem *syst, const ADGameDescription *gameDesc)
_stream2playing = false; _stream2playing = false;
memset(_sceneTracks, 0, sizeof(_sceneTracks));
memset(_trackName, 0, sizeof(_trackName));
memset(_sceneTracksCurrentTrack, 0, sizeof(_sceneTracksCurrentTrack));
_numSceneTracks = 0; _numSceneTracks = 0;
_sceneTrackHasSequence = false; _sceneTrackHasSequence = false;
_sceneTrackIsPlaying = false; _sceneTrackIsPlaying = false;

View file

@ -165,15 +165,15 @@ public:
int _currSoundListCount; int _currSoundListCount;
bool _soundEnabled; bool _soundEnabled;
bool _flgSoundList; bool _flgSoundList;
char _sceneTracks[10][260]; Common::String _sceneTracks[10];
int _numSceneTracks; int _numSceneTracks;
bool _sceneTrackHasSequence; bool _sceneTrackHasSequence;
int _musicMinDelay; int _musicMinDelay;
int _musicMaxDelay; int _musicMaxDelay;
int _musicLocal; int _musicLocal;
char _trackName[2600]; Common::String _trackName;
int _trackStartDelay; int _trackStartDelay;
char _sceneTracksCurrentTrack[260]; Common::String _sceneTracksCurrentTrack;
bool _sceneTrackIsPlaying; bool _sceneTrackIsPlaying;
void stopAllSounds(); void stopAllSounds();
@ -183,8 +183,8 @@ public:
int getSceneTrack(); int getSceneTrack();
void updateTrackDelay(); void updateTrackDelay();
void startSceneTrack(); void startSceneTrack();
void startSoundStream1(const char *trackName); void startSoundStream1(Common::String trackName);
void playOggSound(const char *trackName, Audio::SoundHandle *stream); void playOggSound(Common::String trackName, Audio::SoundHandle *stream);
void stopSoundStream2(); void stopSoundStream2();
void stopAllSoundStreams(); void stopAllSoundStreams();
void stopAllSoundInstances(int id); void stopAllSoundInstances(int id);

View file

@ -257,7 +257,8 @@ void FullpipeEngine::setSceneMusicParameters(GameVar *gvar) {
GameVar *var = gvar->getSubVarByName("MUSIC"); GameVar *var = gvar->getSubVarByName("MUSIC");
memset(_sceneTracks, 0, sizeof(_sceneTracks)); for (int i = 0; i < 10; i++)
_sceneTracks[i].clear();
_numSceneTracks = 0; _numSceneTracks = 0;
_sceneTrackHasSequence = false; _sceneTrackHasSequence = false;
@ -273,7 +274,7 @@ void FullpipeEngine::setSceneMusicParameters(GameVar *gvar) {
while (sub) { while (sub) {
if (_musicAllowed & sub->_value.intValue) { if (_musicAllowed & sub->_value.intValue) {
Common::strlcpy(_sceneTracks[_numSceneTracks], sub->_varName.c_str(), 260); _sceneTracks[_numSceneTracks] = sub->_varName;
_numSceneTracks++; _numSceneTracks++;
} }
@ -291,7 +292,7 @@ void FullpipeEngine::setSceneMusicParameters(GameVar *gvar) {
if (seq) { if (seq) {
_sceneTrackHasSequence = true; _sceneTrackHasSequence = true;
Common::strlcpy(_trackName, seq->_value.stringValue, 2600); _trackName = seq->_value.stringValue;
} }
if (_musicLocal) if (_musicLocal)
@ -320,12 +321,12 @@ void FullpipeEngine::startSceneTrack() {
int trackNum = getSceneTrack(); int trackNum = getSceneTrack();
if (trackNum == -1) { if (trackNum == -1) {
strcpy(_sceneTracksCurrentTrack, "silence"); _sceneTracksCurrentTrack = "silence";
_trackStartDelay = 2880; _trackStartDelay = 2880;
_sceneTrackIsPlaying = 0; _sceneTrackIsPlaying = 0;
} else { } else {
strcpy(_sceneTracksCurrentTrack, _sceneTracks[trackNum]); _sceneTracksCurrentTrack = _sceneTracks[trackNum];
startSoundStream1(_sceneTracksCurrentTrack); startSoundStream1(_sceneTracksCurrentTrack);
@ -363,20 +364,20 @@ int FullpipeEngine::getSceneTrack() {
return res; return res;
} }
void FullpipeEngine::startSoundStream1(const char *trackName) { void FullpipeEngine::startSoundStream1(Common::String trackName) {
stopAllSoundStreams(); stopAllSoundStreams();
playOggSound(trackName, _soundStream1); playOggSound(trackName, _soundStream1);
} }
void FullpipeEngine::playOggSound(const char *trackName, Audio::SoundHandle *stream) { void FullpipeEngine::playOggSound(Common::String trackName, Audio::SoundHandle *stream) {
#ifdef USE_VORBIS #ifdef USE_VORBIS
if (_mixer->isSoundHandleActive(*stream)) if (_mixer->isSoundHandleActive(*stream))
return; return;
Common::File *track = new Common::File(); Common::File *track = new Common::File();
if (!track->open(trackName)) { if (!track->open(trackName)) {
warning("Could not open %s", trackName); warning("Could not open %s", trackName.c_str());
delete track; delete track;
return; return;
} }
@ -429,7 +430,8 @@ void FullpipeEngine::playTrack(GameVar *sceneVar, const char *name, bool delayed
GameVar *var = sceneVar->getSubVarByName(name); GameVar *var = sceneVar->getSubVarByName(name);
memset(_sceneTracks, 0, sizeof(_sceneTracks)); for (int i = 0; i < 10; i++)
_sceneTracks[i].clear();
_numSceneTracks = 0; _numSceneTracks = 0;
_sceneTrackHasSequence = false; _sceneTrackHasSequence = false;
@ -445,7 +447,7 @@ void FullpipeEngine::playTrack(GameVar *sceneVar, const char *name, bool delayed
while (sub) { while (sub) {
if (_musicAllowed & sub->_value.intValue) { if (_musicAllowed & sub->_value.intValue) {
Common::strlcpy(_sceneTracks[_numSceneTracks], sub->_varName.c_str(), 260); _sceneTracks[_numSceneTracks] = sub->_varName;
_numSceneTracks++; _numSceneTracks++;
} }
@ -463,12 +465,12 @@ void FullpipeEngine::playTrack(GameVar *sceneVar, const char *name, bool delayed
if (seq) { if (seq) {
_sceneTrackHasSequence = true; _sceneTrackHasSequence = true;
Common::strlcpy(_trackName, seq->_value.stringValue, 2600); _trackName = seq->_value.stringValue;
} }
if (delayed) { if (delayed) {
if (_sceneTrackIsPlaying && _numSceneTracks == 1) { if (_sceneTrackIsPlaying && _numSceneTracks == 1) {
if (strcmp(_sceneTracksCurrentTrack, _sceneTracks[0])) if (_sceneTracksCurrentTrack != _sceneTracks[0])
stopAllSoundStreams(); stopAllSoundStreams();
} }