jkxr/Projects/Android/jni/OpenJK/codemp/ui/ui_public.h

395 lines
16 KiB
C

/*
===========================================================================
Copyright (C) 1999 - 2005, Id Software, Inc.
Copyright (C) 2000 - 2013, Raven Software, Inc.
Copyright (C) 2001 - 2013, Activision, Inc.
Copyright (C) 2013 - 2015, OpenJK contributors
This file is part of the OpenJK source code.
OpenJK is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License version 2 as
published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, see <http://www.gnu.org/licenses/>.
===========================================================================
*/
#pragma once
#define UI_API_VERSION 3
#define UI_LEGACY_API_VERSION 7
typedef struct uiClientState_s {
connstate_t connState;
int connectPacketCount;
int clientNum;
char servername[MAX_STRING_CHARS];
char updateInfoString[MAX_STRING_CHARS];
char messageString[MAX_STRING_CHARS];
} uiClientState_t;
typedef enum uiMenuCommand_e {
UIMENU_NONE,
UIMENU_MAIN,
UIMENU_INGAME,
UIMENU_PLAYERCONFIG,
UIMENU_TEAM,
UIMENU_POSTGAME,
UIMENU_PLAYERFORCE,
UIMENU_SIEGEMESSAGE,
UIMENU_SIEGEOBJECTIVES,
UIMENU_VOICECHAT,
UIMENU_CLOSEALL,
UIMENU_CLASSSEL
} uiMenuCommand_t;
#define SORT_HOST 0
#define SORT_MAP 1
#define SORT_CLIENTS 2
#define SORT_GAME 3
#define SORT_PING 4
typedef enum uiImportLegacy_e {
UI_ERROR,
UI_PRINT,
UI_MILLISECONDS,
UI_CVAR_SET,
UI_CVAR_VARIABLEVALUE,
UI_CVAR_VARIABLESTRINGBUFFER,
UI_CVAR_SETVALUE,
UI_CVAR_RESET,
UI_CVAR_CREATE,
UI_CVAR_INFOSTRINGBUFFER,
UI_ARGC,
UI_ARGV,
UI_CMD_EXECUTETEXT,
UI_FS_FOPENFILE,
UI_FS_READ,
UI_FS_WRITE,
UI_FS_FCLOSEFILE,
UI_FS_GETFILELIST,
UI_R_REGISTERMODEL,
UI_R_REGISTERSKIN,
UI_R_REGISTERSHADERNOMIP,
UI_R_SHADERNAMEFROMINDEX,
UI_R_CLEARSCENE,
UI_R_ADDREFENTITYTOSCENE,
UI_R_ADDPOLYTOSCENE,
UI_R_ADDLIGHTTOSCENE,
UI_R_RENDERSCENE,
UI_R_SETCOLOR,
UI_R_DRAWSTRETCHPIC,
UI_UPDATESCREEN,
UI_CM_LERPTAG,
UI_CM_LOADMODEL,
UI_S_REGISTERSOUND,
UI_S_STARTLOCALSOUND,
UI_KEY_KEYNUMTOSTRINGBUF,
UI_KEY_GETBINDINGBUF,
UI_KEY_SETBINDING,
UI_KEY_ISDOWN,
UI_KEY_GETOVERSTRIKEMODE,
UI_KEY_SETOVERSTRIKEMODE,
UI_KEY_CLEARSTATES,
UI_KEY_GETCATCHER,
UI_KEY_SETCATCHER,
UI_GETCLIPBOARDDATA,
UI_GETGLCONFIG,
UI_GETCLIENTSTATE,
UI_GETCONFIGSTRING,
UI_LAN_GETPINGQUEUECOUNT,
UI_LAN_CLEARPING,
UI_LAN_GETPING,
UI_LAN_GETPINGINFO,
UI_CVAR_REGISTER,
UI_CVAR_UPDATE,
UI_MEMORY_REMAINING,
UI_GET_CDKEY,
UI_SET_CDKEY,
UI_VERIFY_CDKEY,
UI_R_REGISTERFONT,
UI_R_FONT_STRLENPIXELS,
UI_R_FONT_STRLENCHARS,
UI_R_FONT_STRHEIGHTPIXELS,
UI_R_FONT_DRAWSTRING,
UI_LANGUAGE_ISASIAN,
UI_LANGUAGE_USESSPACES,
UI_ANYLANGUAGE_READCHARFROMSTRING,
UI_R_MODELBOUNDS,
UI_PC_ADD_GLOBAL_DEFINE,
UI_PC_LOAD_SOURCE,
UI_PC_FREE_SOURCE,
UI_PC_READ_TOKEN,
UI_PC_SOURCE_FILE_AND_LINE,
UI_PC_LOAD_GLOBAL_DEFINES,
UI_PC_REMOVE_ALL_GLOBAL_DEFINES,
UI_S_STOPBACKGROUNDTRACK,
UI_S_STARTBACKGROUNDTRACK,
UI_REAL_TIME,
UI_LAN_GETSERVERCOUNT,
UI_LAN_GETSERVERADDRESSSTRING,
UI_LAN_GETSERVERINFO,
UI_LAN_MARKSERVERVISIBLE,
UI_LAN_UPDATEVISIBLEPINGS,
UI_LAN_RESETPINGS,
UI_LAN_LOADCACHEDSERVERS,
UI_LAN_SAVECACHEDSERVERS,
UI_LAN_ADDSERVER,
UI_LAN_REMOVESERVER,
UI_CIN_PLAYCINEMATIC,
UI_CIN_STOPCINEMATIC,
UI_CIN_RUNCINEMATIC,
UI_CIN_DRAWCINEMATIC,
UI_CIN_SETEXTENTS,
UI_R_REMAP_SHADER,
UI_LAN_SERVERSTATUS,
UI_LAN_GETSERVERPING,
UI_LAN_SERVERISVISIBLE,
UI_LAN_COMPARESERVERS,
UI_MEMSET = 100,
UI_MEMCPY,
UI_STRNCPY,
UI_SIN,
UI_COS,
UI_ATAN2,
UI_SQRT,
UI_MATRIXMULTIPLY,
UI_ANGLEVECTORS,
UI_PERPENDICULARVECTOR,
UI_FLOOR,
UI_CEIL,
UI_TESTPRINTINT,
UI_TESTPRINTFLOAT,
UI_ACOS,
UI_ASIN,
UI_SP_GETNUMLANGUAGES,
UI_SP_GETLANGUAGENAME,
UI_SP_GETSTRINGTEXTSTRING = 200,
UI_G2_LISTSURFACES,
UI_G2_LISTBONES,
UI_G2_SETMODELS,
UI_G2_HAVEWEGHOULMODELS,
UI_G2_GETBOLT,
UI_G2_GETBOLT_NOREC,
UI_G2_GETBOLT_NOREC_NOROT,
UI_G2_INITGHOUL2MODEL,
UI_G2_COLLISIONDETECT,
UI_G2_COLLISIONDETECTCACHE,
UI_G2_CLEANMODELS,
UI_G2_ANGLEOVERRIDE,
UI_G2_PLAYANIM,
UI_G2_GETBONEANIM,
UI_G2_GETBONEFRAME, //trimmed down version of GBA, so I don't have to pass all those unused args across the VM-exe border
UI_G2_GETGLANAME,
UI_G2_COPYGHOUL2INSTANCE,
UI_G2_COPYSPECIFICGHOUL2MODEL,
UI_G2_DUPLICATEGHOUL2INSTANCE,
UI_G2_HASGHOUL2MODELONINDEX,
UI_G2_REMOVEGHOUL2MODEL,
UI_G2_ADDBOLT,
UI_G2_SETBOLTON,
UI_G2_SETROOTSURFACE,
UI_G2_SETSURFACEONOFF,
UI_G2_SETNEWORIGIN,
UI_G2_GETTIME,
UI_G2_SETTIME,
UI_G2_SETRAGDOLL,
UI_G2_ANIMATEG2MODELS,
UI_G2_SETBONEIKSTATE,
UI_G2_IKMOVE,
UI_G2_GETSURFACENAME,
UI_G2_SETSKIN,
UI_G2_ATTACHG2MODEL,
} uiImportLegacy_t;
typedef enum uiExportLegacy_e {
UI_GETAPIVERSION = 0,
UI_INIT,
UI_SHUTDOWN,
UI_KEY_EVENT,
UI_MOUSE_EVENT,
UI_REFRESH,
UI_IS_FULLSCREEN,
UI_SET_ACTIVE_MENU,
UI_CONSOLE_COMMAND,
UI_DRAW_CONNECT_SCREEN,
UI_HASUNIQUECDKEY,
UI_MENU_RESET
} uiExportLegacy_t;
typedef struct uiImport_s {
void (*Print) ( const char *msg, ... );
NORETURN_PTR void (*Error)( int level, const char *fmt, ... );
int (*Milliseconds) ( void );
int (*RealTime) ( qtime_t *qtime );
int (*MemoryRemaining) ( void );
void (*Cvar_Create) ( const char *var_name, const char *var_value, uint32_t flags );
void (*Cvar_InfoStringBuffer) ( int bit, char *buffer, int bufsize );
void (*Cvar_Register) ( vmCvar_t *cvar, const char *var_name, const char *value, uint32_t flags );
void (*Cvar_Reset) ( const char *name );
void (*Cvar_Set) ( const char *var_name, const char *value );
void (*Cvar_SetValue) ( const char *var_name, float value );
void (*Cvar_Update) ( vmCvar_t *cvar );
void (*Cvar_VariableStringBuffer) ( const char *var_name, char *buffer, int bufsize );
float (*Cvar_VariableValue) ( const char *var_name );
int (*Cmd_Argc) ( void );
void (*Cmd_Argv) ( int n, char *buffer, int bufferLength );
void (*Cmd_ExecuteText) ( int exec_when, const char *text );
void (*FS_Close) ( fileHandle_t f );
int (*FS_GetFileList) ( const char *path, const char *extension, char *listbuf, int bufsize );
int (*FS_Open) ( const char *qpath, fileHandle_t *f, fsMode_t mode );
int (*FS_Read) ( void *buffer, int len, fileHandle_t f );
int (*FS_Write) ( const void *buffer, int len, fileHandle_t f );
void (*GetClientState) ( uiClientState_t *state );
void (*GetClipboardData) ( char *buf, int bufsize );
int (*GetConfigString) ( int index, char *buff, int buffsize );
void (*GetGlconfig) ( glconfig_t *glconfig );
void (*UpdateScreen) ( void );
void (*Key_ClearStates) ( void );
void (*Key_GetBindingBuf) ( int keynum, char *buf, int buflen );
qboolean (*Key_IsDown) ( int keynum );
void (*Key_KeynumToStringBuf) ( int keynum, char *buf, int buflen );
void (*Key_SetBinding) ( int keynum, const char *binding );
int (*Key_GetCatcher) ( void );
qboolean (*Key_GetOverstrikeMode) ( void );
void (*Key_SetCatcher) ( int catcher );
void (*Key_SetOverstrikeMode) ( qboolean state );
int (*PC_AddGlobalDefine) ( char *define );
int (*PC_FreeSource) ( int handle );
int (*PC_LoadGlobalDefines) ( const char* filename );
int (*PC_LoadSource) ( const char *filename );
int (*PC_ReadToken) ( int handle, pc_token_t *pc_token );
void (*PC_RemoveAllGlobalDefines) ( void );
int (*PC_SourceFileAndLine) ( int handle, char *filename, int *line );
void (*CIN_DrawCinematic) ( int handle );
int (*CIN_PlayCinematic) ( const char *arg0, int xpos, int ypos, int width, int height, int bits );
e_status (*CIN_RunCinematic) ( int handle );
void (*CIN_SetExtents) ( int handle, int x, int y, int w, int h );
e_status (*CIN_StopCinematic) ( int handle );
int (*LAN_AddServer) ( int source, const char *name, const char *addr );
void (*LAN_ClearPing) ( int n );
int (*LAN_CompareServers) ( int source, int sortKey, int sortDir, int s1, int s2 );
void (*LAN_GetPing) ( int n, char *buf, int buflen, int *pingtime );
void (*LAN_GetPingInfo) ( int n, char *buf, int buflen );
int (*LAN_GetPingQueueCount) ( void );
void (*LAN_GetServerAddressString) ( int source, int n, char *buf, int buflen );
int (*LAN_GetServerCount) ( int source );
void (*LAN_GetServerInfo) ( int source, int n, char *buf, int buflen );
int (*LAN_GetServerPing) ( int source, int n );
void (*LAN_LoadCachedServers) ( void );
void (*LAN_MarkServerVisible) ( int source, int n, qboolean visible );
void (*LAN_RemoveServer) ( int source, const char *addr );
void (*LAN_ResetPings) ( int n );
void (*LAN_SaveCachedServers) ( void );
int (*LAN_ServerIsVisible) ( int source, int n );
int (*LAN_ServerStatus) ( const char *serverAddress, char *serverStatus, int maxLen );
qboolean (*LAN_UpdateVisiblePings) ( int source );
void (*S_StartBackgroundTrack) ( const char *intro, const char *loop, qboolean bReturnWithoutStarting );
void (*S_StartLocalSound) ( sfxHandle_t sfx, int channelNum );
void (*S_StopBackgroundTrack) ( void );
sfxHandle_t (*S_RegisterSound) ( const char *sample );
void (*SE_GetLanguageName) ( const int languageIndex, char *buffer );
int (*SE_GetNumLanguages) ( void );
qboolean (*SE_GetStringTextString) ( const char *text, char *buffer, int bufferLength );
qboolean (*R_Language_IsAsian) ( void );
qboolean (*R_Language_UsesSpaces) ( void );
unsigned int (*R_AnyLanguage_ReadCharFromString) ( const char *psText, int *piAdvanceCount, qboolean *pbIsTrailingPunctuation );
void (*R_AddLightToScene) ( const vec3_t org, float intensity, float r, float g, float b );
void (*R_AddPolysToScene) ( qhandle_t hShader, int numVerts, const polyVert_t *verts, int num );
void (*R_AddRefEntityToScene) ( const refEntity_t *re );
void (*R_ClearScene) ( void );
void (*R_DrawStretchPic) ( float x, float y, float w, float h, float s1, float t1, float s2, float t2, qhandle_t hShader );
int (*R_Font_StrLenPixels) ( const char *text, const int iFontIndex, const float scale );
int (*R_Font_StrLenChars) ( const char *text );
int (*R_Font_HeightPixels) ( const int iFontIndex, const float scale );
void (*R_Font_DrawString) ( int ox, int oy, const char *text, const float *rgba, const int setIndex, int iCharLimit, const float scale );
int (*R_LerpTag) ( orientation_t *tag, clipHandle_t mod, int startFrame, int endFrame, float frac, const char *tagName );
void (*R_ModelBounds) ( clipHandle_t model, vec3_t mins, vec3_t maxs );
qhandle_t (*R_RegisterModel) ( const char *name );
qhandle_t (*R_RegisterSkin) ( const char *name );
qhandle_t (*R_RegisterShaderNoMip) ( const char *name );
qhandle_t (*R_RegisterFont) ( const char *fontName );
void (*R_RemapShader) ( const char *oldShader, const char *newShader, const char *timeOffset );
void (*R_RenderScene) ( const refdef_t *fd );
void (*R_SetColor) ( const float *rgba );
void (*R_ShaderNameFromIndex) ( char *name, int index );
void (*G2_ListModelSurfaces) ( void *ghlInfo );
void (*G2_ListModelBones) ( void *ghlInfo, int frame );
void (*G2_SetGhoul2ModelIndexes) ( void *ghoul2, qhandle_t *modelList, qhandle_t *skinList );
qboolean (*G2_HaveWeGhoul2Models) ( void *ghoul2 );
qboolean (*G2API_GetBoltMatrix) ( void *ghoul2, const int modelIndex, const int boltIndex, mdxaBone_t *matrix, const vec3_t angles, const vec3_t position, const int frameNum, qhandle_t *modelList, vec3_t scale );
qboolean (*G2API_GetBoltMatrix_NoReconstruct) ( void *ghoul2, const int modelIndex, const int boltIndex, mdxaBone_t *matrix, const vec3_t angles, const vec3_t position, const int frameNum, qhandle_t *modelList, vec3_t scale );
qboolean (*G2API_GetBoltMatrix_NoRecNoRot) ( void *ghoul2, const int modelIndex, const int boltIndex, mdxaBone_t *matrix, const vec3_t angles, const vec3_t position, const int frameNum, qhandle_t *modelList, vec3_t scale );
int (*G2API_InitGhoul2Model) ( void **ghoul2Ptr, const char *fileName, int modelIndex, qhandle_t customSkin, qhandle_t customShader, int modelFlags, int lodBias );
void (*G2API_CollisionDetect) ( CollisionRecord_t *collRecMap, void* ghoul2, const vec3_t angles, const vec3_t position, int frameNumber, int entNum, vec3_t rayStart, vec3_t rayEnd, vec3_t scale, int traceFlags, int useLod, float fRadius );
void (*G2API_CollisionDetectCache) ( CollisionRecord_t *collRecMap, void* ghoul2, const vec3_t angles, const vec3_t position, int frameNumber, int entNum, vec3_t rayStart, vec3_t rayEnd, vec3_t scale, int traceFlags, int useLod, float fRadius );
void (*G2API_CleanGhoul2Models) ( void **ghoul2Ptr );
qboolean (*G2API_SetBoneAngles) ( void *ghoul2, int modelIndex, const char *boneName, const vec3_t angles, const int flags, const int up, const int right, const int forward, qhandle_t *modelList, int blendTime , int currentTime );
qboolean (*G2API_SetBoneAnim) ( void *ghoul2, const int modelIndex, const char *boneName, const int startFrame, const int endFrame, const int flags, const float animSpeed, const int currentTime, const float setFrame, const int blendTime );
qboolean (*G2API_GetBoneAnim) ( void *ghoul2, const char *boneName, const int currentTime, float *currentFrame, int *startFrame, int *endFrame, int *flags, float *animSpeed, int *modelList, const int modelIndex );
qboolean (*G2API_GetBoneFrame) ( void *ghoul2, const char *boneName, const int currentTime, float *currentFrame, int *modelList, const int modelIndex );
void (*G2API_GetGLAName) ( void *ghoul2, int modelIndex, char *fillBuf );
int (*G2API_CopyGhoul2Instance) ( void *g2From, void *g2To, int modelIndex );
void (*G2API_CopySpecificGhoul2Model) ( void *g2From, int modelFrom, void *g2To, int modelTo );
void (*G2API_DuplicateGhoul2Instance) ( void *g2From, void **g2To );
qboolean (*G2API_HasGhoul2ModelOnIndex) ( void *ghlInfo, int modelIndex );
qboolean (*G2API_RemoveGhoul2Model) ( void *ghlInfo, int modelIndex );
int (*G2API_AddBolt) ( void *ghoul2, int modelIndex, const char *boneName );
void (*G2API_SetBoltInfo) ( void *ghoul2, int modelIndex, int boltInfo );
qboolean (*G2API_SetRootSurface) ( void *ghoul2, const int modelIndex, const char *surfaceName );
qboolean (*G2API_SetSurfaceOnOff) ( void *ghoul2, const char *surfaceName, const int flags );
qboolean (*G2API_SetNewOrigin) ( void *ghoul2, const int boltIndex );
int (*G2API_GetTime) ( void );
void (*G2API_SetTime) ( int time, int clock );
void (*G2API_SetRagDoll) ( void *ghoul2, sharedRagDollParams_t *params );
void (*G2API_AnimateG2Models) ( void *ghoul2, int time, sharedRagDollUpdateParams_t *params );
qboolean (*G2API_SetBoneIKState) ( void *ghoul2, int time, const char *boneName, int ikState, sharedSetBoneIKStateParams_t *params );
qboolean (*G2API_IKMove) ( void *ghoul2, int time, sharedIKMoveParams_t *params );
void (*G2API_GetSurfaceName) ( void *ghoul2, int surfNumber, int modelIndex, char *fillBuf );
qboolean (*G2API_SetSkin) ( void *ghoul2, int modelIndex, qhandle_t customSkin, qhandle_t renderSkin );
qboolean (*G2API_AttachG2Model) ( void *ghoul2From, int modelIndexFrom, void *ghoul2To, int toBoltIndex, int toModel );
struct {
float (*R_Font_StrLenPixels) ( const char *text, const int iFontIndex, const float scale );
void (*AddCommand) ( const char *cmd_name );
void (*RemoveCommand) ( const char *cmd_name );
} ext;
} uiImport_t;
typedef struct uiExport_s {
void (*Init) ( qboolean inGameLoad );
void (*Shutdown) ( void );
void (*KeyEvent) ( int key, qboolean down );
void (*MouseEvent) ( int dx, int dy );
void (*Refresh) ( int realtime );
qboolean (*IsFullscreen) ( void );
void (*SetActiveMenu) ( uiMenuCommand_t menu );
qboolean (*ConsoleCommand) ( int realTime );
void (*DrawConnectScreen) ( qboolean overlay );
void (*MenuReset) ( void );
} uiExport_t;
//linking of ui library
typedef uiExport_t* (QDECL *GetUIAPI_t)( int apiVersion, uiImport_t *import );