sof-sdk/Source/Game/player/player.h
2000-06-15 00:00:00 +00:00

234 lines
No EOL
6.5 KiB
C++

#ifndef __PLAYER_H
#define __PLAYER_H
#include "GSQFile.h"
#include "qcommon.h"
#define PLAYER_API_VERSION 1
typedef struct edict_s edict_t;
typedef struct sharedEdict_s sharedEdict_t;
class inven_c;
class itemSlot_c;
//
// These are the functions exported by the player dll module.
//
typedef struct
{
// If api_version is different, the dll cannot be used.
int api_version;
//
int *isClient;
// Called when the dll is loaded / unloaded.
qboolean (*Init)(void);
void (*Shutdown)(void);
// Pointer to weapInfo array.
void **weapInfo;
// Fire event pointers.
int *fireEvent;
int *altfireEvent;
// View weapon model caching. Should only ever be called from server.
void (*PrecacheViewWeaponModels)(int types);
void (*UncacheViewWeaponModels)(void);
// Creates a new inventory.
inven_c *(*NewInv)(void);
void (*KillInv)(inven_c *inven);
void (*RefreshWeapon)(inven_c *inven);
} player_export_t;
//
// These are the functions imported by the player dll module when it is called
// from the client or server.
//
typedef struct
{
// Cvar stuff.
cvar_t *(*Cvar_Get)(const char *name, const char *value, int flags, cvarcommand_t command = NULL);
cvar_t *(*Cvar_Set)(const char *name, const char *value );
void (*Cvar_SetValue)(const char *name, float value );
// Command processing.
int (*Cmd_Argc) (void);
char *(*Cmd_Argv) (int i);
char *(*Cmd_Args) (void);
// Output to console, etc.
void (*Com_Printf) (char *str, ...);
void (*Com_Sprintf) (char *dest, int size, char *fmt, ...);
void (*Com_DPrintf) (char *fmt, ...);
// File handling.
int (*FS_LoadFile) (char *name, void **buf, bool OverridePak = false);
void (*FS_FreeFile) (void *buf);
// Misc
int (*irand)(int min, int max);
// Ghoul stuff.
cvar_t *ghl_specular;
IPlayerModelInfoC *(*NewPlayerModelInfo)(char *modelname);
int (*FindGSQFile)(char *gsqdir, char *gsqfile, void **buffer);
bool (*ReadGsqEntry)(int &filesize, char **tdata, char *seqname);
void (*PrecacheGSQFile)(char *dirname, char *gsq_file, IGhoulObj *object);
int (*RegisterGSQSequences)(char *gsqdir, char *subclass, IGhoulObj *object);
void (*TurnOffPartsFromGSQFile)(char *dirname, char *poff_file, IGhoulObj *this_object, IGhoulInst *this_inst);
} player_com_import_t;
//
// These are the functions imported by the player dll module when it is called
// from the client.
//
typedef struct
{
// So we can grab the Ghoul pointer we need so badly.
void *(*GetGhoul)();
// Getting level.time for weapon prediction.
float *levelTime;
// Helper functions for weapon firing.
void (*FireHelper)(sharedEdict_t &sh, edict_t &ent, inven_c &inven);
void (*AltfireHelper)(sharedEdict_t &sh, edict_t &ent, inven_c &inven);
void (*WeapSoundHelper)(const void *data);
void (*WeapSoundKill)(void);
void (*WeaponEffectHelper)(const void *data);
// Network stuff.
int (*ReadByte)(void);
int (*ReadShort)(void);
int (*ReadLong)(void);
int (*ReadByteSizebuf)(sizebuf_t *sz);
int (*ReadShortSizebuf)(sizebuf_t *sz);
int (*ReadLongSizebuf)(sizebuf_t *sz);
void (*ReadDataSizebuf)(sizebuf_t *sz, unsigned char *addr, int len);
void (*WriteByteSizebuf)(sizebuf_t *sz,int b);
void (*WriteShortSizebuf)(sizebuf_t *sz,int s);
void (*WriteLongSizebuf)(sizebuf_t *sz,int i);
// Sizebuf stuff.
void (*SZ_Init)(sizebuf_t *buf, byte *data, int length);
void (*SZ_Clear)(sizebuf_t *buf);
void (*SZ_Write)(sizebuf_t *buf, const void *data, int length);
} player_cl_import_t;
//
// These are the functions imported by the player dll module when it is called
// from the server.
//
typedef struct
{
// So we can grab the Ghoul pointer we need so badly.
void *(*GetGhoul)();
// Getting level.time for weapon prediction.
float *levelTime;
// Helper functions for weapon firing, reloading etc.
void (*FireHelper)(sharedEdict_t &sh, edict_t &ent, inven_c &inven);
void (*AltfireHelper)(sharedEdict_t &sh, edict_t &ent, inven_c &inven);
void (*ShowReload)(edict_t *ent);
void (*WeaponDrop)(edict_t *ent,int type, int clipSize);
void (*ShowItemUse)(edict_t *ent, int itemType);
void (*ItemDrop)(edict_t *ent,int type,int ammoCount);
// Helper functions for caching
void (*CacheAttack)(int atkID);
// Helper functions for sound stuff.
int (*EffectIndex)(const char *name);
int (*SoundIndex)(const char *name);
void (*Sound)(edict_t *ent, int channel, int soundindex, float volume, float attenuation, float timeofs, int localize);
// Helper functions for ctf sound stuff.
bool (*DoWeHaveTheFlag)(edict_t *ent);
// Weapon fire synching shit.
float (*getFireEvent)(edict_t *ent);
void (*clearFireEvent)(edict_t *ent);
float (*getAltfireEvent)(edict_t *ent);
void (*clearAltfireEvent)(edict_t *ent);
// Console stuff, used for level changning
void (*AddCommand)(const char *name);
char *(*CvarInfo)(int flag);
// Output to console, etc.
void (*SP_Print)(edict_t *ent, unsigned short ID, ...);
const char *(*SP_GetStringText)(unsigned short ID);
// void (*SP_ColorPrint)(char *color, edict_t *ent, unsigned short ID, ...);
// Helper functions for equipment useage.
bool (*flashpackUse)(edict_t &ent, itemSlot_c &slot);
bool (*neuralGrenadeUse)(edict_t &ent, itemSlot_c &slot);
bool (*c4use)(edict_t &ent, itemSlot_c &slot);
bool (*claymoreuse)(edict_t &ent, itemSlot_c &slot);
bool (*medkituse)(edict_t &ent, itemSlot_c &slot);
bool (*grenadeuse)(edict_t &ent, itemSlot_c &slot);
bool (*goggleuse)(edict_t &ent, itemSlot_c &slot);
// Network stuff.
void (*WriteByteSizebuf)(sizebuf_t *sz,int c);
void (*WriteShortSizebuf)(sizebuf_t *sz,int s);
void (*WriteLongSizebuf)(sizebuf_t *sz,int i);
void (*ReliableWriteByteToClient)(byte b,int clientNum);
void (*ReliableWriteDataToClient)(const void *data,int length,int clientNum);
// Sizebuf stuff.
void (*SZ_Init)(sizebuf_t *buf, byte *data, int length);
void (*SZ_Clear)(sizebuf_t *buf);
void (*SZ_Write)(sizebuf_t *buf, const void *data, int length);
// Savegame stuff
qboolean (*AppendToSavegame)(unsigned long chid, void *data, int length);
int (*ReadFromSavegame)(unsigned long chid, void *address, int length, void **addressptr = NULL);
} player_sv_import_t;
//
// This is the only function actually exported at the linker level.
//
typedef player_export_t (*GetPlayerAPI_t) (player_com_import_t*,player_cl_import_t*,player_sv_import_t*);
#endif // __PLAYER_H