File: gamesequence.h

package info (click to toggle)
freespace2 3.7.0%2Brepack-2
  • links: PTS, VCS
  • area: non-free
  • in suites: jessie, jessie-kfreebsd
  • size: 22,848 kB
  • ctags: 41,897
  • sloc: cpp: 369,931; makefile: 1,060; xml: 129; sh: 112
file content (197 lines) | stat: -rw-r--r-- 9,502 bytes parent folder | download
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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
/*
 * 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.
 *
*/ 




// defines for game sequencing

#ifndef __GAMESEQUENCE_H__
#define __GAMESEQUENCE_H__

// defines for game sequencing events
//

#define GS_EVENT_MAIN_MENU						0		// first event to move to first state
#define GS_EVENT_START_GAME						1		// start a new game (Loads a mission then goes to briefing state)
#define GS_EVENT_ENTER_GAME						2		// switches into game state, probably after mission briefing or ship selection.
#define GS_EVENT_START_GAME_QUICK				3		// start a new game (Loads a mission then goes to directly to game state)
#define GS_EVENT_END_GAME						4		// end the current game (i.e. back to main menu)
#define GS_EVENT_QUIT_GAME						5		// quit the entire game
#define GS_EVENT_PAUSE_GAME						6		// pause the current game
#define GS_EVENT_PREVIOUS_STATE					7		// return to the previous state
#define GS_EVENT_OPTIONS_MENU					8		// go to the options menu
#define GS_EVENT_BARRACKS_MENU					9		// go to the barracks menu
#define GS_EVENT_TRAINING_MENU					10		// go to the training menu
#define GS_EVENT_TECH_MENU						11		// go to the tech room menu
#define GS_EVENT_LOAD_MISSION_MENU				12		// go to the load mission menu
#define GS_EVENT_SHIP_SELECTION					13		// Show ship selection menu
#define GS_EVENT_TOGGLE_FULLSCREEN				14		//	toggle fullscreen mode
#define GS_EVENT_START_BRIEFING					15		// go to the briefing for the current mission
#define GS_EVENT_DEBUG_PAUSE_GAME				16
#define GS_EVENT_HUD_CONFIG						17		// start the HUD configuration screen
#define GS_EVENT_MULTI_JOIN_GAME				18		// start multiplayer join game screen
#define GS_EVENT_CONTROL_CONFIG					19		// get user to choose what type of controller to config
#define GS_EVENT_EVENT_DEBUG					20		 // an event debug trace scroll list display screen
#define GS_EVENT_WEAPON_SELECTION				21		// Do weapon loadout 
#define GS_EVENT_MISSION_LOG_SCROLLBACK			22		// scrollback screen for message log entries
#define GS_EVENT_GAMEPLAY_HELP					23		// show help for the gameplay
#define GS_EVENT_DEATH_DIED						24		//	Player just died
#define GS_EVENT_DEATH_BLEW_UP					25		//	Saw ship explode.
#define GS_EVENT_NEW_CAMPAIGN					26
#define GS_EVENT_CREDITS						27		// Got to the credits
#define GS_EVENT_SHOW_GOALS						28		// Show the goal status screen
#define GS_EVENT_HOTKEY_SCREEN					29		// Show the hotkey assignment screen
#define GS_EVENT_VIEW_MEDALS					30		// Go to the View Medals screen
#define GS_EVENT_MULTI_HOST_SETUP				31		// host setup for multiplayer
#define GS_EVENT_MULTI_CLIENT_SETUP				32		// client setup for multiplayer
#define GS_EVENT_DEBRIEF						33		// go to debriefing
#define GS_EVENT_GOTO_VIEW_CUTSCENES_SCREEN  	34    // go to the management screen
#define GS_EVENT_MULTI_STD_WAIT					35    // standalone wait state
#define GS_EVENT_STANDALONE_MAIN				36    // the main do-nothing state of the standalone
#define GS_EVENT_MULTI_PAUSE				    37    // pause your multiplayer game
#define GS_EVENT_TEAM_SELECT					38		// team selection for multiplayer
#define GS_EVENT_TRAINING_PAUSE					39		// pause game while training message is displayed
#define GS_EVENT_INGAME_PRE_JOIN				40    // go to ship selection screen for ingame join
#define GS_EVENT_PLAYER_WARPOUT_START			41		// player hit 'j' to warp out
#define GS_EVENT_PLAYER_WARPOUT_START_FORCED	42		// player is being forced out of mission no matter what
#define GS_EVENT_PLAYER_WARPOUT_STOP			43		// player hit 'esc' or something to cancel warp out
#define GS_EVENT_PLAYER_WARPOUT_DONE_STAGE1		44		// player ship got up to speed
#define GS_EVENT_PLAYER_WARPOUT_DONE_STAGE2		45		// player ship got through the warp effect
#define GS_EVENT_PLAYER_WARPOUT_DONE			46		// warp effect went away
#define GS_EVENT_STANDALONE_POSTGAME			47	   // debriefing, etc
#define GS_EVENT_INITIAL_PLAYER_SELECT			48		// initial screen where player selects from multi/single player pilots
#define GS_EVENT_GAME_INIT						49
#define GS_EVENT_MULTI_MISSION_SYNC				50    // sychronize/transfer/load any mission specific data in multiplayer
#define GS_EVENT_MULTI_START_GAME				51		// immediately before the create game screen for the host to set the game variables
#define GS_EVENT_MULTI_HOST_OPTIONS				52		// options the host can set while in the create game scree
#define GS_EVENT_MULTI_DOGFIGHT_DEBRIEF			53		// multiplayer furball debriefing screen (replaces normal debriefing)
#define GS_EVENT_CAMPAIGN_ROOM					54
#define GS_EVENT_CMD_BRIEF						55		// switch to command briefing screen
#define GS_EVENT_TOGGLE_GLIDE					56		//	GS_EVENT_TOGGLE_GLIDE
#define GS_EVENT_RED_ALERT						57		// go to red alert screen
#define GS_EVENT_SIMULATOR_ROOM					58
#define GS_EVENT_END_CAMPAIGN					59		// end of the whole thang.
#define GS_EVENT_LOOP_BRIEF						61		// campaign loop brief
#define GS_EVENT_CAMPAIGN_CHEAT					62		// skip to a mission in a campaign
#define GS_EVENT_PXO							63
#define GS_EVENT_LAB							64		// WMC - I-FRED concept
#define GS_EVENT_PXO_HELP						65
#define GS_EVENT_FICTION_VIEWER					66
#define GS_EVENT_SCRIPTING						67

// IMPORTANT:  When you add a new event, update the initialization for GS_event_text[]
//             which is done in GameSequence.cpp
//
extern char *GS_event_text[];		// text description for the GS_EVENT_* #defines above


// defines for game sequencing states
//
// IMPORTANT:  When you add a new state, update the initialization for GS_state_text[]
//             which is done in GameSequence.cpp
#define GS_STATE_MAIN_MENU							1
#define GS_STATE_GAME_PLAY							2
#define GS_STATE_GAME_PAUSED						3
#define GS_STATE_QUIT_GAME							4
#define GS_STATE_OPTIONS_MENU						5
#define GS_STATE_BARRACKS_MENU						6
#define GS_STATE_TECH_MENU							7
#define GS_STATE_TRAINING_MENU						8
#define GS_STATE_LOAD_MISSION_MENU					9
#define GS_STATE_BRIEFING							10
#define GS_STATE_SHIP_SELECT						11
#define GS_STATE_DEBUG_PAUSED						12
#define GS_STATE_HUD_CONFIG							13
#define GS_STATE_MULTI_JOIN_GAME					14
#define GS_STATE_CONTROL_CONFIG						15
#define GS_STATE_WEAPON_SELECT						16
#define GS_STATE_MISSION_LOG_SCROLLBACK				17
#define GS_STATE_DEATH_DIED							18		//	Player just died
#define GS_STATE_DEATH_BLEW_UP						19		//	Saw ship explode.
#define GS_STATE_SIMULATOR_ROOM						20
#define GS_STATE_CREDITS							21
#define GS_STATE_SHOW_GOALS							22
#define GS_STATE_HOTKEY_SCREEN						23
#define GS_STATE_VIEW_MEDALS						24		// Go to the View Medals screen
#define GS_STATE_MULTI_HOST_SETUP					25		// state where host sets up multiplayer game
#define GS_STATE_MULTI_CLIENT_SETUP					26		// client setup for multiplayer game
#define GS_STATE_DEBRIEF							27
#define GS_STATE_VIEW_CUTSCENES						28
#define GS_STATE_MULTI_STD_WAIT						29
#define GS_STATE_STANDALONE_MAIN					30
#define GS_STATE_MULTI_PAUSED						31
#define GS_STATE_TEAM_SELECT						32
#define GS_STATE_TRAINING_PAUSED					33		 // game is paused while training msg is being read.
#define GS_STATE_INGAME_PRE_JOIN					34		 // go to ship selection screen for ingame join
#define GS_STATE_EVENT_DEBUG						35		 // an event debug trace scroll list display screen
#define GS_STATE_STANDALONE_POSTGAME				36		 // debriefing, etc.
#define GS_STATE_INITIAL_PLAYER_SELECT				37
#define GS_STATE_MULTI_MISSION_SYNC					38
#define GS_STATE_MULTI_START_GAME					39
#define GS_STATE_MULTI_HOST_OPTIONS					40
#define GS_STATE_MULTI_DOGFIGHT_DEBRIEF				41
#define GS_STATE_CAMPAIGN_ROOM						42
#define GS_STATE_CMD_BRIEF							43		// command briefing screen
#define GS_STATE_RED_ALERT							44		// red alert screen
#define GS_STATE_END_OF_CAMPAIGN					45		// end of main campaign -- only applicable in single player
#define GS_STATE_GAMEPLAY_HELP						46
#define GS_STATE_LOOP_BRIEF							48
#define GS_STATE_PXO								49
#define GS_STATE_LAB								50
#define GS_STATE_PXO_HELP							51
#define GS_STATE_START_GAME							52
#define GS_STATE_FICTION_VIEWER						53
#define GS_STATE_SCRIPTING							54

#define GS_NUM_STATES							55			//Last one++

// IMPORTANT:  When you add a new state, update the initialization for GS_state_text[]
//             which is done in GameSequence.cpp
//
extern struct script_hook GS_state_hooks[];	//WMC-for scripting
extern char *GS_state_text[];		// text description for the GS_STATE_* #defines above
extern int Num_gs_event_text;
extern int Num_gs_state_text;		//WMC - for scripting


// function prototypes
//
void gameseq_init();
int gameseq_process_events( void );		// returns current game state
int gameseq_get_state( int depth = 0 );
void gameseq_post_event( int event );
int gameseq_get_event( void );

void gameseq_set_state(int new_state, int override = 0);
void gameseq_push_state( int new_state );
void gameseq_pop_state( void );
int gameseq_get_pushed_state();
int gameseq_get_depth();
int gameseq_get_previous_state();
void gameseq_pop_and_discard_state(void);


// Called by the sequencing code when things happen.
void game_process_event(int current_state, int event);
void game_leave_state(int old_state,int new_state);
void game_enter_state(int old_state,int new_state);
void game_do_state(int current_state);

// Kazan
bool GameState_Stack_Valid();

//WMC
int gameseq_get_event_idx(char *s);
int gameseq_get_state_idx(char *s);

//zookeeper
int gameseq_get_state_idx(int state);

#endif /* __GAMESEQUENCE_H__ */