File: eventmusic.h

package info (click to toggle)
freespace2 24.0.2%2Brepack-1
  • links: PTS, VCS
  • area: non-free
  • in suites: trixie
  • size: 43,188 kB
  • sloc: cpp: 583,107; ansic: 21,729; python: 1,174; sh: 464; makefile: 248; xml: 181
file content (138 lines) | stat: -rw-r--r-- 4,764 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/*
 * Copyright (C) Volition, Inc. 1999.  All rights reserved.
 *
 * All source code herein is the property of Volition, Inc. You may not sell 
 * or otherwise commercially exploit the source or things you created based on the 
 * source.
 *
*/ 




#ifndef __EVENT_MUSIC_H__
#define __EVENT_MUSIC_H__

#include "globalincs/globals.h"
#include "globalincs/pstypes.h"

// Identifies songs in the Soundtrack_filenames[] structure.  The order matches up with
// what is in Pattern_info and music.tbl.  Do not modify without properly inputting to
//Pattern_info and New_pattern_order
#define SONG_NRML_1				0		// Normal Song 1
#define SONG_NRML_2				1		// Normal Song 2 - for FS1
#define SONG_NRML_3				2		// Normal Song 3 - for FS1
#define SONG_AARV_1				3		// Allied Arrival 1
#define SONG_AARV_2				4		// Allied Arrival 2
#define SONG_EARV_1				5		// Enemy Arrival 1
#define SONG_EARV_2				6		// Enemy Arrival 2
#define SONG_BTTL_1				7		// Battle Song 1
#define SONG_BTTL_2				8		// Battle Song 2
#define SONG_BTTL_3				9		// Battle Song 3
#define SONG_FAIL_1				10		// Goal Failed
#define SONG_VICT_1				11		// Victory Song 1
#define SONG_VICT_2				12		// Victory Song 2
#define SONG_DEAD_1				13		// Death Song 1

#define MAX_PATTERNS	14

// if player targets a hostile ship at less than this range, switch to battle track 
#define BATTLE_START_MIN_TARGET_DIST	500	

extern int Event_Music_battle_started;	// flag that will tell us if we've started a battle in the current mission
extern int Event_music_enabled;
extern float Default_music_volume;				// range is 0->1
extern float Master_event_music_volume;			// range is 0->1


/////////////////////////////////////////////////////////////////////////////
// Used to track what briefing and debriefing music is played for the mission
/////////////////////////////////////////////////////////////////////////////
#define NUM_SCORES						5
#define SCORE_BRIEFING					0
#define SCORE_DEBRIEFING_SUCCESS		1
#define SCORE_DEBRIEFING_AVERAGE		2
#define SCORE_DEBRIEFING_FAILURE		3
#define SCORE_FICTION_VIEWER			4
extern int Mission_music[NUM_SCORES];		// indicies into Spooled_music[]
/////////////////////////////////////////////////////////////////////////////

extern int Current_soundtrack_num;		// index into Soundtracks[]


// menu music storage
typedef struct menu_music {
	int flags;
	char name[NAME_LENGTH];				// name music is known by
	char filename[MAX_FILENAME_LEN];	// name music is stored on disk as
} menu_music;

// Goober5000 - spooled music flags
#define SMF_VALID						(1 << 0)

extern SCP_vector<menu_music> Spooled_music;


// event music soundtrack storage
typedef struct tagSOUNDTRACK_PATTERN_INFO {
	char fname[MAX_FILENAME_LEN];
	float num_measures;
	int samples_per_measure;
} SOUNDTRACK_PATTERN_INFO;
typedef struct tagSOUNDTRACK_INFO {
	int flags;
	int	num_patterns;
	char name[NAME_LENGTH];
	SOUNDTRACK_PATTERN_INFO patterns[MAX_PATTERNS];
} SOUNDTRACK_INFO;

// Goober5000 - event music flags
#define EMF_VALID						(1 << 0)
#define EMF_ALLIED_ARRIVAL_OVERLAY		(1 << 1)
#define EMF_CYCLE_FS1					(1 << 2)

extern SCP_vector<SOUNDTRACK_INFO> Soundtracks;


void	event_music_init();
void	event_music_close();
void	event_music_level_start(int force_soundtrack = -1);
void	event_music_level_close();
void	event_music_do_frame();
void	event_music_disable();
void	event_music_enable();
void	event_music_set_volume_all(float volume);
void	event_music_parse_musictbl(const char *filename);
void	event_music_change_pattern(int new_pattern);
int	event_music_return_current_pattern();
void	event_music_first_pattern();
void event_music_set_start_delay();
int	event_music_battle_start();
int	event_music_enemy_arrival();
int	event_music_friendly_arrival();
void	event_music_arrival(int team);
int	event_music_primary_goals_met();
int	event_music_primary_goal_failed();
int	event_music_player_death();
void	event_music_start_default();
void	event_music_get_info(char *outbuf);
void	event_music_get_soundtrack_name(char *outbuf);
int	event_music_next_soundtrack(int delta);
void event_sexp_change_soundtrack(const char *name);
void	event_music_set_soundtrack(const char *name);
void	event_music_set_score(int score_index, const char *name);
int event_music_get_soundtrack_index(const char *name);
int	event_music_get_spooled_music_index(const char *name);
int	event_music_get_spooled_music_index(const SCP_string& name);
void	event_music_reset_choices();
int	event_music_player_respawn();
int	event_music_player_respawn_as_observer();
void event_music_hostile_ship_destroyed();

/**
 * @brief Sets the master music volume to the specified value
 * @param volume The new music volume value. Must be in the range [0, 1].
 */
void event_music_set_volume(float volume);

#endif /* __EVENT_MUSIC_H__  */