1 /* 2 * Copyright (C) Volition, Inc. 1999. All rights reserved. 3 * 4 * All source code herein is the property of Volition, Inc. You may not sell 5 * or otherwise commercially exploit the source or things you created based on the 6 * source. 7 * 8 */ 9 10 11 12 13 #ifndef __EVENT_MUSIC_H__ 14 #define __EVENT_MUSIC_H__ 15 16 #include "globalincs/globals.h" 17 #include "globalincs/pstypes.h" 18 19 // Identifies songs in the Soundtrack_filenames[] structure. The order matches up with 20 // what is in Pattern_info and music.tbl. Do not modify without properly inputting to 21 //Pattern_info and New_pattern_order 22 #define SONG_NRML_1 0 // Normal Song 1 23 #define SONG_NRML_2 1 // Normal Song 2 - for FS1 24 #define SONG_NRML_3 2 // Normal Song 3 - for FS1 25 #define SONG_AARV_1 3 // Allied Arrival 1 26 #define SONG_AARV_2 4 // Allied Arrival 2 27 #define SONG_EARV_1 5 // Enemy Arrival 1 28 #define SONG_EARV_2 6 // Enemy Arrival 2 29 #define SONG_BTTL_1 7 // Battle Song 1 30 #define SONG_BTTL_2 8 // Battle Song 2 31 #define SONG_BTTL_3 9 // Battle Song 3 32 #define SONG_FAIL_1 10 // Goal Failed 33 #define SONG_VICT_1 11 // Victory Song 1 34 #define SONG_VICT_2 12 // Victory Song 2 35 #define SONG_DEAD_1 13 // Death Song 1 36 37 #define MAX_PATTERNS 14 38 39 // if player targets a hostile ship at less than this range, switch to battle track 40 #define BATTLE_START_MIN_TARGET_DIST 500 41 42 extern int Event_Music_battle_started; // flag that will tell us if we've started a battle in the current mission 43 extern int Event_music_enabled; 44 extern float Master_event_music_volume; // range is 0->1 45 46 47 ///////////////////////////////////////////////////////////////////////////// 48 // Used to track what briefing and debriefing music is played for the mission 49 ///////////////////////////////////////////////////////////////////////////// 50 #define NUM_SCORES 5 51 #define SCORE_BRIEFING 0 52 #define SCORE_DEBRIEF_SUCCESS 1 53 #define SCORE_DEBRIEF_AVERAGE 2 54 #define SCORE_DEBRIEF_FAIL 3 55 #define SCORE_FICTION_VIEWER 4 56 extern int Mission_music[NUM_SCORES]; // indicies into Spooled_music[] 57 ///////////////////////////////////////////////////////////////////////////// 58 59 extern int Current_soundtrack_num; // index into Soundtracks[] 60 61 62 // menu music storage 63 typedef struct menu_music { 64 int flags; 65 char name[NAME_LENGTH]; // name music is known by 66 char filename[MAX_FILENAME_LEN]; // name music is stored on disk as 67 } menu_music; 68 69 #define MAX_SPOOLED_MUSIC 50 // max number of briefing/mainhall/credits tracks 70 71 // Goober5000 - spooled music flags 72 #define SMF_VALID (1 << 0) 73 74 extern menu_music Spooled_music[MAX_SPOOLED_MUSIC]; 75 extern int Num_music_files; 76 77 78 // event music soundtrack storage 79 typedef struct tagSOUNDTRACK_INFO { 80 int flags; 81 int num_patterns; 82 char name[NAME_LENGTH]; 83 char pattern_fnames[MAX_PATTERNS][MAX_FILENAME_LEN]; 84 } SOUNDTRACK_INFO; 85 86 #define MAX_SOUNDTRACKS 30 // max number of battle tracks 87 88 // Goober5000 - event music flags 89 #define EMF_VALID (1 << 0) 90 #define EMF_ALLIED_ARRIVAL_OVERLAY (1 << 1) 91 #define EMF_CYCLE_FS1 (1 << 2) 92 93 extern SOUNDTRACK_INFO Soundtracks[MAX_SOUNDTRACKS]; 94 extern int Num_soundtracks; 95 96 97 void event_music_init(); 98 void event_music_close(); 99 void event_music_level_init(int force_soundtrack = -1); 100 void event_music_level_close(); 101 void event_music_do_frame(); 102 void event_music_disable(); 103 void event_music_enable(); 104 void event_music_pause(); 105 void event_music_unpause(); 106 void event_music_set_volume_all(float volume); 107 void event_music_parse_musictbl(const char *filename); 108 void event_music_change_pattern(int new_pattern); 109 int event_music_return_current_pattern(); 110 void event_music_first_pattern(); 111 int event_music_battle_start(); 112 int event_music_enemy_arrival(); 113 int event_music_friendly_arrival(); 114 void event_music_arrival(int team); 115 int event_music_primary_goals_met(); 116 int event_music_primary_goal_failed(); 117 int event_music_player_death(); 118 void event_music_start_default(); 119 void event_music_get_info(char *outbuf); 120 void event_music_get_soundtrack_name(char *outbuf); 121 int event_music_next_soundtrack(int delta); 122 void event_sexp_change_soundtrack(char *name); 123 void event_music_set_soundtrack(char *name); 124 void event_music_set_score(int score_index, char *name); 125 int event_music_get_soundtrack_index(char *name); 126 int event_music_get_spooled_music_index(const char *name); 127 int event_music_get_spooled_music_index(const SCP_string& name); 128 void event_music_reset_choices(); 129 int event_music_player_respawn(); 130 int event_music_player_respawn_as_observer(); 131 void event_music_hostile_ship_destroyed(); 132 133 #endif /* __EVENT_MUSIC_H__ */ 134