X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=mvm_cmds.c;h=80d238c0720c527c427af2e7c1034bb359d0bb5b;hp=834e838360e3cf13c7623c6f1c1c839c670c9a65;hb=a2535521709ba873592188925ed1c9c170eb662c;hpb=52346e02f29e08dd01f1b723245d06a214700a26 diff --git a/mvm_cmds.c b/mvm_cmds.c index 834e8383..80d238c0 100644 --- a/mvm_cmds.c +++ b/mvm_cmds.c @@ -1,6 +1,7 @@ #include "quakedef.h" #include "prvm_cmds.h" +#include "clvm_cmds.h" #include "menu.h" //============================================================================ @@ -19,6 +20,12 @@ char *vm_m_extensions = "DP_QC_CMD " "DP_QC_STRREPLACE " "DP_FONT_VARIABLEWIDTH " +"DP_GECKO_SUPPORT " +"DP_QC_RENDER_SCENE " +"DP_QC_STRINGBUFFERS " +"DP_QC_CRC16 " +"FTE_STRINGS " +"DP_QC_CVAR_TYPE " ; /* @@ -85,6 +92,10 @@ void VM_M_setkeydest(void) // key_menu key_dest = key_menu; break; + case 3: + // key_menu_grabbed + key_dest = key_menu_grabbed; + break; case 1: // key_message // key_dest = key_message @@ -105,7 +116,7 @@ void VM_M_getkeydest(void) { VM_SAFEPARMCOUNT(0,VM_M_getkeydest); - // key_game = 0, key_message = 1, key_menu = 2, unknown = 3 + // key_game = 0, key_message = 1, key_menu = 2, key_menu_grabbed = 3, unknown = -1 switch(key_dest) { case key_game: @@ -114,12 +125,15 @@ void VM_M_getkeydest(void) case key_menu: PRVM_G_FLOAT(OFS_RETURN) = 2; break; + case key_menu_grabbed: + PRVM_G_FLOAT(OFS_RETURN) = 3; + break; case key_message: // not supported // PRVM_G_FLOAT(OFS_RETURN) = 1; // break; default: - PRVM_G_FLOAT(OFS_RETURN) = 3; + PRVM_G_FLOAT(OFS_RETURN) = -1; } } @@ -861,9 +875,9 @@ VM_altstr_ins, // #86 VM_findflags, // #87 VM_findchainflags, // #88 VM_cvar_defstring, // #89 -NULL, // #90 -NULL, // #91 -NULL, // #92 +VM_CL_setmodel, // #90 void(entity e, string m) setmodel (QUAKE) +VM_CL_precache_model, // #91 void(string s) precache_model (QUAKE) +VM_CL_setorigin, // #92 void(entity e, vector o) setorigin (QUAKE) NULL, // #93 NULL, // #94 NULL, // #95 @@ -993,12 +1007,12 @@ NULL, // #218 NULL, // #219 NULL, // #220 VM_strstrofs, // #221 float(string str, string sub[, float startpos]) strstrofs (FTE_STRINGS) -NULL, // #222 -NULL, // #223 -NULL, // #224 -NULL, // #225 -NULL, // #226 -NULL, // #227 +VM_str2chr, // #222 float(string str, float ofs) str2chr (FTE_STRINGS) +VM_chr2str, // #223 string(float c, ...) chr2str (FTE_STRINGS) +VM_strconv, // #224 string(float ccase, float calpha, float cnum, string s, ...) strconv (FTE_STRINGS) +VM_strpad, // #225 string(float chars, string s, ...) strpad (FTE_STRINGS) +VM_infoadd, // #226 string(string info, string key, string value, ...) infoadd (FTE_STRINGS) +VM_infoget, // #227 string(string info, string key) infoget (FTE_STRINGS) VM_strncmp, // #228 float(string s1, string s2, float len) strncmp (FTE_STRINGS) VM_strncasecmp, // #229 float(string s1, string s2) strcasecmp (FTE_STRINGS) VM_strncasecmp, // #230 float(string s1, string s2, float len) strncasecmp (FTE_STRINGS) @@ -1071,19 +1085,21 @@ NULL, // #296 NULL, // #297 NULL, // #298 NULL, // #299 -NULL, // #300 -NULL, // #301 -NULL, // #302 -NULL, // #303 -NULL, // #304 -NULL, // #305 -NULL, // #306 -NULL, // #307 -NULL, // #308 -NULL, // #309 -NULL, // #310 -NULL, // #311 -NULL, // #312 +// CSQC range #300-#399 +VM_CL_R_ClearScene, // #300 void() clearscene (DP_QC_RENDER_SCENE) +VM_CL_R_AddEntities, // #301 void(float mask) addentities (DP_QC_RENDER_SCENE) +VM_CL_R_AddEntity, // #302 void(entity ent) addentity (DP_QC_RENDER_SCENE) +VM_CL_R_SetView, // #303 float(float property, ...) setproperty (DP_QC_RENDER_SCENE) +VM_CL_R_RenderScene, // #304 void() renderscene (DP_QC_RENDER_SCENE) +VM_CL_R_AddDynamicLight, // #305 void(vector org, float radius, vector lightcolours) adddynamiclight (DP_QC_RENDER_SCENE) +VM_CL_R_PolygonBegin, // #306 void(string texturename, float flag[, float is2d, float lines]) R_BeginPolygon (DP_QC_RENDER_SCENE) +VM_CL_R_PolygonVertex, // #307 void(vector org, vector texcoords, vector rgb, float alpha) R_PolygonVertex (DP_QC_RENDER_SCENE) +VM_CL_R_PolygonEnd, // #308 void() R_EndPolygon +NULL/*VM_CL_R_LoadWorldModel*/, // #309 void(string modelname) R_LoadWorldModel +// TODO: rearrange and merge all builtin lists and share as many extensions as possible between all VM instances [1/27/2008 Andreas] +VM_CL_setattachment, // #310 void(entity e, entity tagentity, string tagname) setattachment (DP_GFX_QUAKE3MODELTAGS) (DP_QC_RENDER_SCENE) +VM_CL_gettagindex, // #311 float(entity ent, string tagname) gettagindex (DP_QC_GETTAGINFO) (DP_QC_RENDER_SCENE) +VM_CL_gettaginfo, // #312 vector(entity ent, float tagindex) gettaginfo (DP_QC_GETTAGINFO) (DP_QC_RENDER_SCENE) NULL, // #313 NULL, // #314 NULL, // #315 @@ -1211,16 +1227,16 @@ NULL, // #436 NULL, // #437 NULL, // #438 NULL, // #439 -NULL, // #440 -NULL, // #441 -NULL, // #442 -NULL, // #443 -NULL, // #444 -NULL, // #445 -NULL, // #446 -NULL, // #447 -NULL, // #448 -NULL, // #449 +VM_buf_create, // #440 float() buf_create (DP_QC_STRINGBUFFERS) +VM_buf_del, // #441 void(float bufhandle) buf_del (DP_QC_STRINGBUFFERS) +VM_buf_getsize, // #442 float(float bufhandle) buf_getsize (DP_QC_STRINGBUFFERS) +VM_buf_copy, // #443 void(float bufhandle_from, float bufhandle_to) buf_copy (DP_QC_STRINGBUFFERS) +VM_buf_sort, // #444 void(float bufhandle, float sortpower, float backward) buf_sort (DP_QC_STRINGBUFFERS) +VM_buf_implode, // #445 string(float bufhandle, string glue) buf_implode (DP_QC_STRINGBUFFERS) +VM_bufstr_get, // #446 string(float bufhandle, float string_index) bufstr_get (DP_QC_STRINGBUFFERS) +VM_bufstr_set, // #447 void(float bufhandle, float string_index, string str) bufstr_set (DP_QC_STRINGBUFFERS) +VM_bufstr_add, // #448 float(float bufhandle, string str, float order) bufstr_add (DP_QC_STRINGBUFFERS) +VM_bufstr_free, // #449 void(float bufhandle, float string_index) bufstr_free (DP_QC_STRINGBUFFERS) NULL, // #450 VM_iscachedpic, // #451 draw functions... VM_precache_pic, // #452 @@ -1258,23 +1274,15 @@ NULL, // #483 VM_strreplace, // #484 string(string search, string replace, string subject) strreplace (DP_QC_STRREPLACE) VM_strireplace, // #485 string(string search, string replace, string subject) strireplace (DP_QC_STRREPLACE) NULL, // #486 -#ifdef SUPPORT_GECKO -VM_gecko_create, // #487 -VM_gecko_destroy, // #488 -VM_gecko_navigate, // #489 -VM_gecko_keyevent, // #490 -VM_gecko_movemouse, // #491 -#else -NULL, // #487 -NULL, // #488 -NULL, // #489 -NULL, // #490 -NULL, // #491 -#endif -NULL, // #492 -NULL, // #493 -NULL, // #494 -NULL, // #495 +VM_gecko_create, // #487 float gecko_create( string name ) +VM_gecko_destroy, // #488 void gecko_destroy( string name ) +VM_gecko_navigate, // #489 void gecko_navigate( string name, string URI ) +VM_gecko_keyevent, // #490 float gecko_keyevent( string name, float key, float eventtype ) +VM_gecko_movemouse, // #491 void gecko_mousemove( string name, float x, float y ) +VM_gecko_resize, // #492 void gecko_resize( string name, float w, float h ) +VM_gecko_get_texture_extent, // #493 vector gecko_get_texture_extent( string name ) +VM_crc16, // #494 float(float caseinsensitive, string s, ...) crc16 = #494 (DP_QC_CRC16) +VM_cvar_type, // #495 float(string name) cvar_type = #495; (DP_QC_CVAR_TYPE) NULL, // #496 NULL, // #497 NULL, // #498 @@ -1380,41 +1388,57 @@ NULL, // #597 NULL, // #598 NULL, // #599 NULL, // #600 -VM_M_setkeydest, // #601 menu functions... -VM_M_getkeydest, // #602 -VM_M_setmousetarget, // #603 -VM_M_getmousetarget, // #604 -VM_M_callfunction, // #605 -VM_writetofile, // #606 -VM_M_isfunction, // #607 -VM_M_getresolution, // #608 -VM_keynumtostring, // #609 -VM_M_findkeysforcommand, // #610 -VM_M_getserverliststat, // #611 -VM_M_getserverliststring, // #612 -VM_parseentitydata, // #613 -VM_stringtokeynum, // #614 -VM_M_resetserverlistmasks, // #615 -VM_M_setserverlistmaskstring, // #616 -VM_M_setserverlistmasknumber, // #617 -VM_M_resortserverlist, // #618 -VM_M_setserverlistsort, // #619 -VM_M_refreshserverlist, // #620 -VM_M_getserverlistnumber, // #621 -VM_M_getserverlistindexforkey,// #622 -VM_M_addwantedserverlistkey, // #623 -VM_M_getextresponse // #624 +VM_M_setkeydest, // #601 void setkeydest(float dest) +VM_M_getkeydest, // #602 float getkeydest(void) +VM_M_setmousetarget, // #603 void setmousetarget(float trg) +VM_M_getmousetarget, // #604 float getmousetarget(void) +VM_M_callfunction, // #605 void callfunction(...) +VM_writetofile, // #606 void writetofile(float fhandle, entity ent) +VM_M_isfunction, // #607 float isfunction(string function_name) +VM_M_getresolution, // #608 vector getresolution(float number) +VM_keynumtostring, // #609 string keynumtostring(float keynum) +VM_M_findkeysforcommand, // #610 string findkeysforcommand(string command) +VM_M_getserverliststat, // #611 float gethostcachevalue(float type) +VM_M_getserverliststring, // #612 string gethostcachestring(float type, float hostnr) +VM_parseentitydata, // #613 void parseentitydata(entity ent, string data) +VM_stringtokeynum, // #614 float stringtokeynum(string key) +VM_M_resetserverlistmasks, // #615 void resethostcachemasks(void) +VM_M_setserverlistmaskstring, // #616 void sethostcachemaskstring(float mask, float fld, string str, float op) +VM_M_setserverlistmasknumber, // #617 void sethostcachemasknumber(float mask, float fld, float num, float op) +VM_M_resortserverlist, // #618 void resorthostcache(void) +VM_M_setserverlistsort, // #619 void sethostcachesort(float fld, float descending) +VM_M_refreshserverlist, // #620 void refreshhostcache(void) +VM_M_getserverlistnumber, // #621 float gethostcachenumber(float fld, float hostnr) +VM_M_getserverlistindexforkey,// #622 float gethostcacheindexforkey(string key) +VM_M_addwantedserverlistkey, // #623 void addwantedhostcachekey(string key) +VM_M_getextresponse // #624 string getextresponse(void) }; const int vm_m_numbuiltins = sizeof(vm_m_builtins) / sizeof(prvm_builtin_t); void VM_M_Cmd_Init(void) { + r_refdef_scene_t *scene; + VM_Cmd_Init(); + VM_Polygons_Reset(); + + scene = R_GetScenePointer( RST_MENU ); + + memset (scene, 0, sizeof (*scene)); + + scene->maxtempentities = 128; + scene->tempentities = (entity_render_t*) Mem_Alloc(prog->progs_mempool, sizeof(entity_render_t) * scene->maxtempentities); + + scene->maxentities = MAX_EDICTS + 256 + 512; + scene->entities = (entity_render_t **)Mem_Alloc(prog->progs_mempool, sizeof(entity_render_t *) * scene->maxentities); } void VM_M_Cmd_Reset(void) { + // note: the menu's render entities are automatically freed when the prog's pool is freed + //VM_Cmd_Init(); VM_Cmd_Reset(); + VM_Polygons_Reset(); }