// start playback of the red alert voice void red_alert_voice_play() { if ( !Briefing_voice_enabled ) { return; } if ( Red_alert_voice < 0 ) { // play simulated speech? if (fsspeech_play_from(FSSPEECH_FROM_BRIEFING)) { if (fsspeech_playing()) { return; } fsspeech_play(FSSPEECH_FROM_BRIEFING, Briefing->stages[0].text.c_str()); Red_alert_voice_started = 1; } } else { if (audiostream_is_playing(Red_alert_voice)) { return; } audiostream_play(Red_alert_voice, Master_voice_volume, 0); Red_alert_voice_started = 1; } }
/** * Start playback of the voice for a particular briefing stage * @param stage_num Particular briefing stage */ void cmd_brief_voice_play(int stage_num) { int voice = -1; int stage = -1; if (!Voice_good_to_go) { Voice_started_time = 0; return; } if (!Voice_started_time) { Voice_started_time = timer_get_milliseconds(); Voice_ended_time = 0; } if (!Briefing_voice_enabled){ return; } if (Cur_stage >= 0 && Cur_stage < Cur_cmd_brief->num_stages){ voice = Cur_cmd_brief->stage[stage_num].wave; stage = stage_num; } // do we need to play simulated speech? if (voice < 0 && fsspeech_play_from(FSSPEECH_FROM_BRIEFING)) { // are we still on the same stage? if (Cmd_brief_last_stage == stage) { return; // no changes, nothing to do. } // if previous stage is still playing, stop it first. if (Cmd_brief_last_stage >= 0) { fsspeech_stop(); Cmd_brief_last_stage = -1; } // ok, new text needs speaking Cmd_brief_last_stage = stage; if (stage >= 0) { fsspeech_play(FSSPEECH_FROM_BRIEFING, Cur_cmd_brief->stage[stage_num].text.c_str()); } } else { // are we still on same voice that is currently playing/played? if (Cmd_brief_last_voice == voice) { return; // no changes, nothing to do. } // if previous wave is still playing, stop it first. if (Cmd_brief_last_voice >= 0) { audiostream_stop(Cmd_brief_last_voice, 1, 0); // stream is automatically rewound Cmd_brief_last_voice = -1; } // ok, new wave needs playing, so we can start playing it now (and it becomes the current wave) Cmd_brief_last_voice = voice; if (voice >= 0) { audiostream_play(voice, Master_voice_volume, 0); } } }