Skip to content

Commit

Permalink
FULLPIPE: Implement FullpipeEngine::playTrack()
Browse files Browse the repository at this point in the history
  • Loading branch information
sev- committed Apr 26, 2014
1 parent fd8eb9a commit d12d696
Show file tree
Hide file tree
Showing 3 changed files with 79 additions and 0 deletions.
12 changes: 12 additions & 0 deletions engines/fullpipe/fullpipe.cpp
Expand Up @@ -104,6 +104,18 @@ FullpipeEngine::FullpipeEngine(OSystem *syst, const ADGameDescription *gameDesc)

_musicAllowed = -1;
_musicGameVar = 0;
_musicMinDelay = 0;
_musicMaxDelay = 0;
_musicLocal = 0;
_trackStartDelay = 0;

memset(_sceneTracks, 0, sizeof(_sceneTracks));
memset(_trackName, 0, sizeof(_trackName));
memset(_sceneTracksCurrentTrack, 0, sizeof(_sceneTracksCurrentTrack));

_numSceneTracks = 0;
_sceneTrackHasSequence = false;
_sceneTrackIsPlaying = false;

_aniMan = 0;
_aniMan2 = 0;
Expand Down
11 changes: 11 additions & 0 deletions engines/fullpipe/fullpipe.h
Expand Up @@ -151,6 +151,16 @@ class FullpipeEngine : public ::Engine {
int _currSoundListCount;
bool _soundEnabled;
bool _flgSoundList;
char _sceneTracks[10][260];
int _numSceneTracks;
bool _sceneTrackHasSequence;
int _musicMinDelay;
int _musicMaxDelay;
int _musicLocal;
char _trackName[2600];
int _trackStartDelay;
char _sceneTracksCurrentTrack[260];
bool _sceneTrackIsPlaying;

void stopAllSounds();
void toggleMute();
Expand Down Expand Up @@ -300,6 +310,7 @@ class FullpipeEngine : public ::Engine {

GameVar *_musicGameVar;
Audio::SoundHandle _sceneTrackHandle;

public:

bool _isSaveAllowed;
Expand Down
56 changes: 56 additions & 0 deletions engines/fullpipe/sound.cpp
Expand Up @@ -182,6 +182,62 @@ void FullpipeEngine::playSound(int id, int flag) {

void FullpipeEngine::playTrack(GameVar *sceneVar, const char *name, bool delayed) {
warning("STUB: FullpipeEngine::playTrack(var, %s, %d)", name, delayed);
#if 0
stopSoundStream2();

if (soundStream3)
FSOUND_Stream_Stop(soundStream4);
#endif

if (g_fp->_musicLocal)
stopAllSoundStreams();

GameVar *var = sceneVar->getSubVarByName(name);

memset(g_fp->_sceneTracks, 0, sizeof(g_fp->_sceneTracks));

g_fp->_numSceneTracks = 0;
g_fp->_sceneTrackHasSequence = false;

if (!var)
return;

g_fp->_musicGameVar = var;

GameVar *tr = var->getSubVarByName("TRACKS");
if (tr) {
GameVar *sub = tr->_subVars;

while (sub) {
if (g_fp->_musicAllowed & sub->_value.intValue) {
strcpy(g_fp->_sceneTracks[g_fp->_numSceneTracks], sub->_varName);

g_fp->_numSceneTracks++;
}

sub = sub->_nextVarObj;
}
}

g_fp->_musicMinDelay = var->getSubVarAsInt("MINDELAY");
g_fp->_musicMaxDelay = var->getSubVarAsInt("MAXDELAY");
g_fp->_musicLocal = var->getSubVarAsInt("LOCAL");

GameVar *seq = var->getSubVarByName("SEQUENCE");
if (seq) {
g_fp->_sceneTrackHasSequence = true;

strcpy(g_fp->_trackName, seq->_value.stringValue);
}

if (delayed) {
if (g_fp->_sceneTrackIsPlaying && g_fp->_numSceneTracks == 1) {
if (strcmp(g_fp->_sceneTracksCurrentTrack, g_fp->_sceneTracks[0]))
stopAllSoundStreams();
}

g_fp->_trackStartDelay = var->getSubVarAsInt("STARTDELAY");
}
}

void global_messageHandler_handleSound(ExCommand *cmd) {
Expand Down

0 comments on commit d12d696

Please sign in to comment.