Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/audio/Audio.cc b/audio/Audio.cc
- index ba13da941..532bc1de9 100644
- --- a/audio/Audio.cc
- +++ b/audio/Audio.cc
- @@ -539,55 +539,6 @@ bool Audio::start_music(
- return false;
- }
- -void Audio::start_music_combat(Combat_song song, bool continuous) {
- -#ifdef DEBUG
- - cout << formatTicks() << "Audio subsystem request: Combat Music start "
- - << int(song) << endl;
- -#endif
- - if (!audio_enabled || !music_enabled || !mixer || !mixer->getMidiPlayer()) {
- - return;
- - }
- -
- - int num = -1;
- -
- - switch (song) {
- - case CSBattle_Over:
- - num = Audio::game_music(9);
- - break;
- -
- - case CSAttacked1:
- - num = Audio::game_music(11);
- - break;
- -
- - case CSAttacked2:
- - num = Audio::game_music(12);
- - break;
- -
- - case CSVictory:
- - num = Audio::game_music(15);
- - break;
- -
- - case CSRun_Away:
- - num = Audio::game_music(16);
- - break;
- -
- - case CSDanger:
- - num = Audio::game_music(10);
- - break;
- -
- - case CSHidden_Danger:
- - num = Audio::game_music(18);
- - break;
- -
- - default:
- - CERR("Error: Unable to Find combat track for song " << song << ".");
- - break;
- - }
- -
- - mixer->getMidiPlayer()->start_music(
- - num, continuous && music_looping != LoopingType::Never);
- -}
- -
- void Audio::stop_music() {
- #ifdef DEBUG
- cout << formatTicks() << "Audio subsystem request: Music stop" << endl;
- diff --git a/audio/Audio.h b/audio/Audio.h
- index 6f9ea5371..3a02d9e12 100644
- --- a/audio/Audio.h
- +++ b/audio/Audio.h
- @@ -54,19 +54,6 @@ class Tile_coord;
- #define MAX_SOUND_FALLOFF 24
- -/*
- - * Music:
- - */
- -enum Combat_song {
- - CSBattle_Over,
- - CSAttacked1,
- - CSAttacked2,
- - CSVictory,
- - CSRun_Away,
- - CSDanger,
- - CSHidden_Danger
- -};
- -
- /*
- * This is a resource-management class for SFX. Maybe make it a
- * template class and use for other resources also?
- @@ -167,7 +154,6 @@ class Audio : nonreplicatable {
- bool start_music(
- const std::string& fname, int num, bool continuous = false,
- MyMidiPlayer::ForceType force = MyMidiPlayer::Force_None);
- - void start_music_combat(Combat_song song, bool continuous);
- void stop_music();
- int play_sound_effect(
- int num, int volume = AUDIO_MAX_VOLUME, int balance = 0,
- diff --git a/combat.cc b/combat.cc
- index 320c4e67a..61182ee7d 100644
- --- a/combat.cc
- +++ b/combat.cc
- @@ -93,6 +93,65 @@ bool In_ammo_family(int shnum, int family) {
- return ainf != nullptr && ainf->get_family_shape() == family;
- }
- +/*
- + * Start music for combat.
- + * If continuous is true, the music will not be stopped when combat ends.
- + */
- +
- +void Combat_schedule::start_music_combat(Combat_song song, bool continuous) {
- +#ifdef DEBUG
- + cout << "Audio subsystem request: Combat Music start " << int(song) << endl;
- +#endif
- + if (!Audio::get_ptr()) {
- + return;
- + }
- +
- + int num = -1;
- +
- + switch (song) {
- + case CSBattle_Over:
- + num = Audio::game_music(9);
- + break;
- +
- + case CSAttacked1:
- + num = Audio::game_music(11);
- + break;
- +
- + case CSAttacked2:
- + num = Audio::game_music(12);
- + break;
- +
- + case CSVictory:
- + num = Audio::game_music(15);
- + break;
- +
- + case CSRun_Away:
- + num = Audio::game_music(16);
- + break;
- +
- + case CSDanger:
- + num = Audio::game_music(10);
- + break;
- +
- + case CSHidden_Danger:
- + // ++++ FIXME: This should play when the party successfully flees either
- + // in or out combat.
- + num = Audio::game_music(18);
- + break;
- +
- + case CSAvatar_died:
- + // ++++ FIXME: This should play when the Avatar dies in combat.
- + num = Audio::game_music(17);
- + break;
- +
- + default:
- + CERR("Error: Unable to Find combat track for song " << song << ".");
- + return; // Unknown song
- + }
- +
- + Audio::get_ptr()->start_music(num, continuous);
- +}
- +
- /*
- * Start music if battle has recently started.
- */
- @@ -111,8 +170,7 @@ void Combat_schedule::start_battle() {
- Game_object* target = npc->get_target();
- if (npc == gwin->get_main_actor() && curtime - battle_time >= 30000
- && (!opponents.empty() || (target && target->as_actor()))) {
- - Audio::get_ptr()->start_music_combat(
- - (rand() % 2) ? CSAttacked1 : CSAttacked2, false);
- + start_music_combat((rand() % 2) ? CSAttacked1 : CSAttacked2, false);
- battle_time = curtime;
- battle_end_time = curtime - 1;
- }
- @@ -141,8 +199,7 @@ void Combat_schedule::monster_died() {
- // Figure #seconds battle lasted.
- const unsigned long len = (battle_end_time - battle_time) / 1000;
- const bool hard = len > 15u && (rand() % 60u < len);
- - Audio::get_ptr()->start_music_combat(
- - hard ? CSBattle_Over : CSVictory, false);
- + start_music_combat(hard ? CSBattle_Over : CSVictory, false);
- }
- /*
- @@ -1752,7 +1809,7 @@ void Combat_schedule::ending(int /* newtype */
- }
- }
- if (found) {
- - Audio::get_ptr()->start_music_combat(CSRun_Away, false);
- + start_music_combat(CSRun_Away, false);
- }
- }
- }
- diff --git a/combat.h b/combat.h
- index 356ebf78b..41a1370d0 100644
- --- a/combat.h
- +++ b/combat.h
- @@ -29,6 +29,20 @@ class Actor;
- class Game_object;
- class Spellbook_object;
- +/*
- + * Combat Music:
- + */
- +enum Combat_song {
- + CSBattle_Over,
- + CSAttacked1,
- + CSAttacked2,
- + CSVictory,
- + CSRun_Away,
- + CSDanger,
- + CSHidden_Danger,
- + CSAvatar_died
- +};
- +
- /*
- * Combat schedule:
- */
- @@ -100,6 +114,7 @@ class Combat_schedule : public Schedule {
- static void stop_attacking_invisible(Game_object* npc);
- void now_what() override; // Npc calls this when it's done
- void im_dormant() override; // Npc calls this when it goes dormant.
- + static void start_music_combat(Combat_song song, bool continuous);
- void ending(int newtype) override; // Switching to another schedule.
- void set_weapon(bool removed = false) override; // Set weapon info.
- void set_hand_to_hand();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement