void seq_StartNextFullScreenVideo(void) { bool bPlayedOK; currentPlaySeq++; if (currentPlaySeq >= MAX_SEQ_LIST) { bPlayedOK = false; } else { bPlayedOK = seq_StartFullScreenVideo(aSeqList[currentPlaySeq].pSeq, aSeqList[currentPlaySeq].pAudio, VIDEO_USER_CHOSEN_RESOLUTION); } if (bPlayedOK == false) { //don't do the callback if we're playing the win/lose video if (!getScriptWinLoseVideo()) { debug(LOG_SCRIPT, "*** Called video quit trigger!"); // Not sure this is correct... CHECK, since the callback should ONLY // be called when a video is playing (always?) if (seq_Playing()) { eventFireCallbackTrigger((TRIGGER_TYPE)CALL_VIDEO_QUIT); } } else { displayGameOver(getScriptWinLoseVideo() == PLAY_WIN); } } }
/* Renders a video sequence specified by filename to a buffer*/ bool seq_RenderVideoToBuffer(const char* sequenceName, int seqCommand) { static enum { VIDEO_NOT_PLAYING, VIDEO_PLAYING, VIDEO_FINISHED, } videoPlaying = VIDEO_NOT_PLAYING; static enum { VIDEO_LOOP, VIDEO_HOLD_LAST_FRAME, } frameHold = VIDEO_LOOP; if (seqCommand == SEQUENCE_KILL) { //stop the movie seq_Shutdown(); bSeqPlaying = false; frameHold = VIDEO_LOOP; videoPlaying = VIDEO_NOT_PLAYING; return true; } if (!bSeqPlaying && frameHold == VIDEO_LOOP) { //start the ball rolling iV_SetFont(font_regular); iV_SetTextColour(WZCOL_TEXT_BRIGHT); /* We do *NOT* want to use the user-choosen resolution when we * are doing intelligence videos. */ videoPlaying = seq_StartFullScreenVideo(sequenceName, NULL, VIDEO_PRESELECTED_RESOLUTION) ? VIDEO_PLAYING : VIDEO_FINISHED; bSeqPlaying = true; } if (videoPlaying != VIDEO_FINISHED) { videoPlaying = seq_Update() ? VIDEO_PLAYING : VIDEO_FINISHED; } if (videoPlaying == VIDEO_FINISHED) { seq_Shutdown(); bSeqPlaying = false; frameHold = VIDEO_HOLD_LAST_FRAME; videoPlaying = VIDEO_NOT_PLAYING; return false; } return true; }