mittorn
7 years ago
12 changed files with 2605 additions and 18 deletions
@ -0,0 +1,205 @@
@@ -0,0 +1,205 @@
|
||||
//---------------------------------------------------------------------------
|
||||
//
|
||||
// S c r i p t e d S e q u e n c e s
|
||||
//
|
||||
//---------------------------------------------------------------------------
|
||||
#ifndef _INCLUDE_SEQUENCE_H_ |
||||
#define _INCLUDE_SEQUENCE_H_ |
||||
|
||||
|
||||
#ifndef _DEF_BYTE_ |
||||
//typedef unsigned char byte;
|
||||
#endif |
||||
|
||||
#ifndef CDLL_INT_H |
||||
//---------------------------------------------------------------------------
|
||||
// client_textmessage_t
|
||||
//---------------------------------------------------------------------------
|
||||
typedef struct client_textmessage_s |
||||
{ |
||||
int effect; |
||||
byte r1, g1, b1, a1; // 2 colors for effects
|
||||
byte r2, g2, b2, a2; |
||||
float x; |
||||
float y; |
||||
float fadein; |
||||
float fadeout; |
||||
float holdtime; |
||||
float fxtime; |
||||
char *pName; |
||||
char *pMessage; |
||||
} client_textmessage_t; |
||||
#endif |
||||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// sequenceCommandEnum_e
|
||||
//
|
||||
// Enumerated sequence command types.
|
||||
//---------------------------------------------------------------------------
|
||||
enum sequenceCommandEnum_ |
||||
{ |
||||
SEQUENCE_COMMAND_ERROR = -1, |
||||
SEQUENCE_COMMAND_PAUSE = 0, |
||||
SEQUENCE_COMMAND_FIRETARGETS, |
||||
SEQUENCE_COMMAND_KILLTARGETS, |
||||
SEQUENCE_COMMAND_TEXT, |
||||
SEQUENCE_COMMAND_SOUND, |
||||
SEQUENCE_COMMAND_GOSUB, |
||||
SEQUENCE_COMMAND_SENTENCE, |
||||
SEQUENCE_COMMAND_REPEAT, |
||||
SEQUENCE_COMMAND_SETDEFAULTS, |
||||
SEQUENCE_COMMAND_MODIFIER, |
||||
SEQUENCE_COMMAND_POSTMODIFIER, |
||||
SEQUENCE_COMMAND_NOOP, |
||||
|
||||
SEQUENCE_MODIFIER_EFFECT, |
||||
SEQUENCE_MODIFIER_POSITION, |
||||
SEQUENCE_MODIFIER_COLOR, |
||||
SEQUENCE_MODIFIER_COLOR2, |
||||
SEQUENCE_MODIFIER_FADEIN, |
||||
SEQUENCE_MODIFIER_FADEOUT, |
||||
SEQUENCE_MODIFIER_HOLDTIME, |
||||
SEQUENCE_MODIFIER_FXTIME, |
||||
SEQUENCE_MODIFIER_SPEAKER, |
||||
SEQUENCE_MODIFIER_LISTENER, |
||||
SEQUENCE_MODIFIER_TEXTCHANNEL, |
||||
}; |
||||
typedef enum sequenceCommandEnum_ sequenceCommandEnum_e; |
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// sequenceDefaultBits_e
|
||||
//
|
||||
// Enumerated list of possible modifiers for a command. This enumeration
|
||||
// is used in a bitarray controlling what modifiers are specified for a command.
|
||||
//---------------------------------------------------------------------------
|
||||
enum sequenceModifierBits |
||||
{ |
||||
SEQUENCE_MODIFIER_EFFECT_BIT = (1 << 1), |
||||
SEQUENCE_MODIFIER_POSITION_BIT = (1 << 2), |
||||
SEQUENCE_MODIFIER_COLOR_BIT = (1 << 3), |
||||
SEQUENCE_MODIFIER_COLOR2_BIT = (1 << 4), |
||||
SEQUENCE_MODIFIER_FADEIN_BIT = (1 << 5), |
||||
SEQUENCE_MODIFIER_FADEOUT_BIT = (1 << 6), |
||||
SEQUENCE_MODIFIER_HOLDTIME_BIT = (1 << 7), |
||||
SEQUENCE_MODIFIER_FXTIME_BIT = (1 << 8), |
||||
SEQUENCE_MODIFIER_SPEAKER_BIT = (1 << 9), |
||||
SEQUENCE_MODIFIER_LISTENER_BIT = (1 << 10), |
||||
SEQUENCE_MODIFIER_TEXTCHANNEL_BIT = (1 << 11), |
||||
}; |
||||
typedef enum sequenceModifierBits sequenceModifierBits_e ; |
||||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// sequenceCommandType_e
|
||||
//
|
||||
// Typeerated sequence command types.
|
||||
//---------------------------------------------------------------------------
|
||||
enum sequenceCommandType_ |
||||
{ |
||||
SEQUENCE_TYPE_COMMAND, |
||||
SEQUENCE_TYPE_MODIFIER, |
||||
}; |
||||
typedef enum sequenceCommandType_ sequenceCommandType_e; |
||||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// sequenceCommandMapping_s
|
||||
//
|
||||
// A mapping of a command enumerated-value to its name.
|
||||
//---------------------------------------------------------------------------
|
||||
typedef struct sequenceCommandMapping_ sequenceCommandMapping_s; |
||||
struct sequenceCommandMapping_ |
||||
{ |
||||
sequenceCommandEnum_e commandEnum; |
||||
const char* commandName; |
||||
sequenceCommandType_e commandType; |
||||
}; |
||||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// sequenceCommandLine_s
|
||||
//
|
||||
// Structure representing a single command (usually 1 line) from a
|
||||
// .SEQ file entry.
|
||||
//---------------------------------------------------------------------------
|
||||
typedef struct sequenceCommandLine_ sequenceCommandLine_s; |
||||
struct sequenceCommandLine_ |
||||
{ |
||||
int commandType; // Specifies the type of command
|
||||
client_textmessage_t clientMessage; // Text HUD message struct
|
||||
char* speakerName; // Targetname of speaking entity
|
||||
char* listenerName; // Targetname of entity being spoken to
|
||||
char* soundFileName; // Name of sound file to play
|
||||
char* sentenceName; // Name of sentences.txt to play
|
||||
char* fireTargetNames; // List of targetnames to fire
|
||||
char* killTargetNames; // List of targetnames to remove
|
||||
float delay; // Seconds 'till next command
|
||||
int repeatCount; // If nonzero, reset execution pointer to top of block (N times, -1 = infinite)
|
||||
int textChannel; // Display channel on which text message is sent
|
||||
int modifierBitField; // Bit field to specify what clientmessage fields are valid
|
||||
sequenceCommandLine_s* nextCommandLine; // Next command (linked list)
|
||||
}; |
||||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// sequenceEntry_s
|
||||
//
|
||||
// Structure representing a single command (usually 1 line) from a
|
||||
// .SEQ file entry.
|
||||
//---------------------------------------------------------------------------
|
||||
typedef struct sequenceEntry_ sequenceEntry_s; |
||||
struct sequenceEntry_ |
||||
{ |
||||
char* fileName; // Name of sequence file without .SEQ extension
|
||||
char* entryName; // Name of entry label in file
|
||||
sequenceCommandLine_s* firstCommand; // Linked list of commands in entry
|
||||
sequenceEntry_s* nextEntry; // Next loaded entry
|
||||
qboolean isGlobal; // Is entry retained over level transitions?
|
||||
}; |
||||
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// sentenceEntry_s
|
||||
// Structure representing a single sentence of a group from a .SEQ
|
||||
// file entry. Sentences are identical to entries in sentences.txt, but
|
||||
// can be unique per level and are loaded/unloaded with the level.
|
||||
//---------------------------------------------------------------------------
|
||||
typedef struct sentenceEntry_ sentenceEntry_s; |
||||
struct sentenceEntry_ |
||||
{ |
||||
char* data; // sentence data (ie "We have hostiles" )
|
||||
sentenceEntry_s* nextEntry; // Next loaded entry
|
||||
qboolean isGlobal; // Is entry retained over level transitions?
|
||||
unsigned int index; // this entry's position in the file.
|
||||
}; |
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// sentenceGroupEntry_s
|
||||
// Structure representing a group of sentences found in a .SEQ file.
|
||||
// A sentence group is defined by all sentences with the same name, ignoring
|
||||
// the number at the end of the sentence name. Groups enable a sentence
|
||||
// to be picked at random across a group.
|
||||
//--------------------------------------------------------------------------
|
||||
typedef struct sentenceGroupEntry_ sentenceGroupEntry_s; |
||||
struct sentenceGroupEntry_ |
||||
{ |
||||
char* groupName; // name of the group (ie CT_ALERT )
|
||||
unsigned int numSentences; // number of sentences in group
|
||||
sentenceEntry_s* firstSentence; // head of linked list of sentences in group
|
||||
sentenceGroupEntry_s* nextEntry; // next loaded group
|
||||
}; |
||||
|
||||
//---------------------------------------------------------------------------
|
||||
// Function declarations
|
||||
//---------------------------------------------------------------------------
|
||||
sequenceEntry_s* Sequence_Get( const char* fileName, const char* entryName ); |
||||
void Sequence_ParseFile( const char* fileName, qboolean isGlobal ); |
||||
void Sequence_OnLevelLoad( const char* mapName ); |
||||
sentenceEntry_s* Sequence_PickSentence( const char *groupName, int pickMethod, int *picked ); |
||||
void Sequence_Init( void ); |
||||
void Sequence_PurgeEntries( qboolean purgeGlobals ); |
||||
sentenceEntry_s *Sequence_GetSentenceByIndex( unsigned int index ); |
||||
|
||||
#endif // _INCLUDE_SEQUENCE_H_
|
Loading…
Reference in new issue