2013-04-19 02:52:48 +00:00
|
|
|
// vmachine.h -- virtual machine header for client
|
|
|
|
#ifndef __VMACHINE_H__
|
|
|
|
#define __VMACHINE_H__
|
|
|
|
|
|
|
|
/*
|
|
|
|
==================================================================
|
|
|
|
|
|
|
|
functions exported to the main executable
|
|
|
|
|
|
|
|
==================================================================
|
|
|
|
*/
|
|
|
|
|
|
|
|
typedef enum {
|
|
|
|
CG_INIT,
|
|
|
|
CG_SHUTDOWN,
|
|
|
|
CG_CONSOLE_COMMAND,
|
|
|
|
CG_DRAW_ACTIVE_FRAME,
|
|
|
|
CG_CROSSHAIR_PLAYER,
|
|
|
|
CG_CAMERA_POS,
|
|
|
|
CG_CAMERA_ANG,
|
|
|
|
/*
|
|
|
|
Ghoul2 Insert Start
|
|
|
|
*/
|
|
|
|
|
|
|
|
CG_RESIZE_G2_BOLT,
|
|
|
|
CG_RESIZE_G2,
|
|
|
|
CG_RESIZE_G2_BONE,
|
|
|
|
CG_RESIZE_G2_SURFACE,
|
|
|
|
CG_RESIZE_G2_TEMPBONE,
|
|
|
|
/*
|
|
|
|
Ghoul2 Insert End
|
|
|
|
*/
|
|
|
|
CG_DRAW_DATAPAD_HUD,
|
|
|
|
CG_DRAW_DATAPAD_OBJECTIVES,
|
|
|
|
CG_DRAW_DATAPAD_WEAPONS,
|
|
|
|
CG_DRAW_DATAPAD_INVENTORY,
|
|
|
|
CG_DRAW_DATAPAD_FORCEPOWERS
|
|
|
|
|
|
|
|
} cgameExport_t;
|
|
|
|
|
|
|
|
/*
|
|
|
|
==============================================================
|
|
|
|
|
|
|
|
VIRTUAL MACHINE
|
|
|
|
|
|
|
|
==============================================================
|
|
|
|
*/
|
|
|
|
struct vm_s {
|
|
|
|
int (*entryPoint)( int callNum, ... );
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef struct vm_s vm_t;
|
|
|
|
|
|
|
|
extern vm_t cgvm; // interface to cgame dll or vm
|
|
|
|
extern vm_t uivm; // interface to ui dll or vm
|
|
|
|
|
|
|
|
extern int VM_Call( int callnum, ... );
|
|
|
|
extern int VM_DllSyscall( int arg, ... );
|
|
|
|
extern void CL_ShutdownCGame(void);
|
|
|
|
|
|
|
|
#include "../game/q_shared.h"
|
|
|
|
|
|
|
|
/*
|
|
|
|
================
|
|
|
|
VM_Create
|
|
|
|
|
|
|
|
it will attempt to load as a system dll
|
|
|
|
================
|
|
|
|
*/
|
|
|
|
extern void *Sys_LoadCgame( int (**entryPoint)(int, ...), int (*systemcalls)(int, ...) );
|
|
|
|
|
|
|
|
inline void *VM_Create( const char *module)
|
|
|
|
{
|
|
|
|
void *res;
|
|
|
|
// try to load as a system dll
|
|
|
|
if (!Q_stricmp("cl", module))
|
|
|
|
{
|
|
|
|
res = Sys_LoadCgame( &cgvm.entryPoint, VM_DllSyscall );
|
|
|
|
if ( !res)
|
|
|
|
{
|
|
|
|
//Com_Printf( "Failed.\n" );
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
res = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
return res;
|
|
|
|
}
|
|
|
|
|
2013-04-04 22:35:38 +00:00
|
|
|
#endif //__VMACHINE_H__
|