// close void loop_brief_close() { // this makes sure that we're all cool no matter how the user decides to exit mission_campaign_mission_over(); // free the bitmap if (Loop_brief_bitmap >= 0){ bm_release(Loop_brief_bitmap); } Loop_brief_bitmap = -1; // destroy the window Loop_brief_window.destroy(); if (Loop_anim.num_frames > 0) { generic_anim_unload(&Loop_anim); } // stop voice if(Loop_sound != -1){ audiostream_stop(Loop_sound, 1, 0); audiostream_close_file(Loop_sound, 1); Loop_sound = -1; } fsspeech_stop(); // stop music common_music_close(); }
void cmd_brief_close() { int i; if (Cmd_brief_inited) { cmd_brief_stop_anim(); generic_anim_unload(&Cur_Anim); for (i=0; i<Cur_cmd_brief->num_stages; i++) { if (Cur_cmd_brief->stage[i].wave >= 0) audiostream_close_file(Cur_cmd_brief->stage[i].wave, 0); } // so that the same ani will reload properly upon return Cur_anim_filename = "~~~~"; if (Cmd_brief_background_bitmap >= 0) bm_release(Cmd_brief_background_bitmap); // unload the overlay bitmap help_overlay_unload(CMD_BRIEF_OVERLAY); Ui_window.destroy(); game_flush(); Cmd_brief_inited = 0; } // Stop any speech from running over fsspeech_stop(); }
// stop playback of the red alert voice void red_alert_voice_stop() { if ( !Red_alert_voice_started ) return; if (Red_alert_voice < 0) { fsspeech_stop(); } else { audiostream_stop(Red_alert_voice, 1, 0); // stream is automatically rewound } }
/** * Doesn't actually stop playing ANIs any more, just stops audio */ void cmd_brief_stop_anim() { Voice_good_to_go = 0; if (Cmd_brief_last_voice >= 0) { audiostream_stop(Cmd_brief_last_voice, 1, 0); // stream is automatically rewound Cmd_brief_last_voice = -1; } if (Cmd_brief_last_stage >= 0) { fsspeech_stop(); Cmd_brief_last_stage = -1; } }
void techroom_close() { fsspeech_stop(); techroom_lists_reset(); Techroom_show_all = 0; if (Tech_background_bitmap) { bm_release(Tech_background_bitmap); } Ui_window.destroy(); common_free_interface_palette(); // restore game palette if (Palette_bmp){ bm_release(Palette_bmp); } }
// Called once when the red alert interface is exited void red_alert_close() { if (Red_alert_inited) { red_alert_voice_stop(); red_alert_voice_unload(); weapon_select_close_team(); if (Background_bitmap >= 0) { bm_release(Background_bitmap); } Ui_window.destroy(); // bm_unload(&Flash_anim); common_free_interface_palette(); // restore game palette game_flush(); } Red_alert_inited = 0; fsspeech_stop(); }
int techroom_button_pressed(int num) { switch (num) { case SHIPS_DATA_TAB: case WEAPONS_DATA_TAB: case INTEL_DATA_TAB: fsspeech_stop(); techroom_change_tab(num); break; case SIMULATOR_TAB: fsspeech_stop(); gamesnd_play_iface(SND_SWITCH_SCREENS); gameseq_post_event(GS_EVENT_SIMULATOR_ROOM); return 1; case CUTSCENES_TAB: fsspeech_stop(); gamesnd_play_iface(SND_SWITCH_SCREENS); gameseq_post_event(GS_EVENT_GOTO_VIEW_CUTSCENES_SCREEN); return 1; case CREDITS_TAB: fsspeech_stop(); gamesnd_play_iface(SND_SWITCH_SCREENS); gameseq_post_event(GS_EVENT_CREDITS); return 1; case PREV_ENTRY_BUTTON: tech_prev_entry(); break; case NEXT_ENTRY_BUTTON: tech_next_entry(); break; case SCROLL_LIST_UP: tech_scroll_list_up(); Tech_slider.forceUp(); break; case SCROLL_LIST_DOWN: tech_scroll_list_down(); Tech_slider.forceDown(); break; case SCROLL_INFO_UP: tech_scroll_info_up(); break; case SCROLL_INFO_DOWN: tech_scroll_info_down(); break; case HELP_BUTTON: launch_context_help(); gamesnd_play_iface(SND_HELP_PRESSED); break; case OPTIONS_BUTTON: gamesnd_play_iface(SND_SWITCH_SCREENS); gameseq_post_event(GS_EVENT_OPTIONS_MENU); break; case EXIT_BUTTON: fsspeech_stop(); gamesnd_play_iface(SND_COMMIT_PRESSED); gameseq_post_event(GS_EVENT_MAIN_MENU); break; } return 0; }
/** * 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); } } }