void pause_sound_if_necessary_and_play_video(const char *name, int skip, int flags) { int musplaying = play.cur_music_number, i; int ambientWas[MAX_SOUND_CHANNELS]; for (i = 1; i < MAX_SOUND_CHANNELS; i++) ambientWas[i] = ambient[i].channel; if ((strlen(name) > 3) && (stricmp(&name[strlen(name) - 3], "ogv") == 0)) { play_theora_video(name, skip, flags); } else { char videoFilePath[MAX_PATH]; get_install_dir_path(videoFilePath, name); platform->PlayVideo(videoFilePath, skip, flags); } if (flags < 10) { update_music_volume(); // restart the music if (musplaying >= 0) newmusic (musplaying); for (i = 1; i < MAX_SOUND_CHANNELS; i++) { if (ambientWas[i] > 0) PlayAmbientSound(ambientWas[i], ambient[i].num, ambient[i].vol, ambient[i].x, ambient[i].y); } } }
void SoundManager::play_music(const std::string& filename, bool fade) { if(filename == current_music && music_source != NULL) return; current_music = filename; if(!music_enabled) return; if(filename == "") { delete music_source; music_source = 0; return; } try { std::auto_ptr<StreamSoundSource> newmusic (new StreamSoundSource()); alSourcef(newmusic->source, AL_ROLLOFF_FACTOR, 0); newmusic->set_sound_file(load_sound_file(filename)); newmusic->set_looping(true); if(fade) newmusic->set_fading(StreamSoundSource::FadingOn, .5f); newmusic->play(); delete music_source; music_source = newmusic.release(); } catch(std::exception& e) { log_warning << "Couldn't play music file '" << filename << "': " << e.what() << std::endl; } }
void SoundManager::play_music(const std::string& filename, bool fade) { if(filename == current_music && music_source != NULL) return; current_music = filename; if(!music_enabled) return; if(filename == "") { music_source.reset(); return; } try { std::unique_ptr<StreamSoundSource> newmusic (new StreamSoundSource()); newmusic->set_sound_file(load_sound_file(filename)); newmusic->set_looping(true); newmusic->set_relative(true); if(fade) newmusic->set_fading(StreamSoundSource::FadingOn, .5f); newmusic->play(); music_source = std::move(newmusic); } catch(std::exception& e) { log_warning << "Couldn't play music file '" << filename << "': " << e.what() << std::endl; // When this happens, previous music continued playing, stop it, just in case. stop_music(0); } }
void start_game() { set_cursor_mode(MODE_WALK); filter->SetMousePosition(160,100); newmusic(0); our_eip = -42; for (int kk = 0; kk < numScriptModules; kk++) moduleInst[kk]->RunTextScript("game_start"); gameinst->RunTextScript("game_start"); our_eip = -43; SetRestartPoint(); our_eip=-3; if (displayed_room < 0) { current_fade_out_effect(); load_new_room(playerchar->room,playerchar); // load_new_room updates it, but it should be -1 in the first room playerchar->prevroom = -1; } first_room_initialization(); }
int PlayMusicQueued(int musnum) { // Just get the queue size if (musnum < 0) return play.music_queue_size; if ((IsMusicPlaying() == 0) && (play.music_queue_size == 0)) { newmusic(musnum); return 0; } if (play.music_queue_size >= MAX_QUEUED_MUSIC) { debug_script_log("Too many queued music, cannot add %d", musnum); return 0; } if ((play.music_queue_size > 0) && (play.music_queue[play.music_queue_size - 1] >= QUEUED_MUSIC_REPEAT)) { quit("!PlayMusicQueued: cannot queue music after a repeating tune has been queued"); } if (play.music_repeat) { debug_script_log("Queuing music %d to loop", musnum); musnum += QUEUED_MUSIC_REPEAT; } else { debug_script_log("Queuing music %d", musnum); } play.music_queue[play.music_queue_size] = musnum; play.music_queue_size++; if (play.music_queue_size == 1) { clear_music_cache(); cachedQueuedMusic = load_music_from_disk(musnum, (play.music_repeat > 0)); } return play.music_queue_size; }
void PlayMusicResetQueue(int newmus) { play.music_queue_size = 0; newmusic(newmus); }