X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=mvm_cmds.c;h=3168bbf445ac3de706a2a149b9d7d4a0c9287bd9;hb=debe81f9f63b498dc6b1fd48d1478170d5d9fff3;hp=df6497fa2437ea5c85a5da14632db698d0f23d5f;hpb=5727c9874e7f3539ed042a638a7b4850f79d9aa8;p=xonotic%2Fdarkplaces.git diff --git a/mvm_cmds.c b/mvm_cmds.c index df6497fa..3168bbf4 100644 --- a/mvm_cmds.c +++ b/mvm_cmds.c @@ -10,46 +10,48 @@ //============================================================================ // Menu -const char *vm_m_extensions = -"BX_WAL_SUPPORT " -"DP_CINEMATIC_DPV " -"DP_COVERAGE " -"DP_CRYPTO " -"DP_CSQC_BINDMAPS " -"DP_GFX_FONTS " -"DP_GFX_FONTS_FREETYPE " -"DP_UTF8 " -"DP_FONT_VARIABLEWIDTH " -"DP_MENU_EXTRESPONSEPACKET " -"DP_QC_ASINACOSATANATAN2TAN " -"DP_QC_AUTOCVARS " -"DP_QC_CMD " -"DP_QC_CRC16 " -"DP_QC_CVAR_TYPE " -"DP_QC_CVAR_DESCRIPTION " -"DP_QC_DIGEST " -"DP_QC_DIGEST_SHA256 " -"DP_QC_FINDCHAIN_TOFIELD " -"DP_QC_I18N " -"DP_QC_LOG " -"DP_QC_RENDER_SCENE " -"DP_QC_SPRINTF " -"DP_QC_STRFTIME " -"DP_QC_STRINGBUFFERS " -"DP_QC_STRINGBUFFERS_CVARLIST " -"DP_QC_STRINGBUFFERS_EXT_WIP " -"DP_QC_STRINGCOLORFUNCTIONS " -"DP_QC_STRING_CASE_FUNCTIONS " -"DP_QC_STRREPLACE " -"DP_QC_TOKENIZEBYSEPARATOR " -"DP_QC_TOKENIZE_CONSOLE " -"DP_QC_UNLIMITEDTEMPSTRINGS " -"DP_QC_URI_ESCAPE " -"DP_QC_URI_GET " -"DP_QC_URI_POST " -"DP_QC_WHICHPACK " -"FTE_STRINGS " -; +const char *vm_m_extensions[] = { +"BX_WAL_SUPPORT", +"DP_CINEMATIC_DPV", +"DP_COVERAGE", +"DP_CRYPTO", +"DP_CSQC_BINDMAPS", +"DP_GFX_FONTS", +"DP_GFX_FONTS_FREETYPE", +"DP_UTF8", +"DP_FONT_VARIABLEWIDTH", +"DP_MENU_EXTRESPONSEPACKET", +"DP_QC_ASINACOSATANATAN2TAN", +"DP_QC_AUTOCVARS", +"DP_QC_CMD", +"DP_QC_CRC16", +"DP_QC_CVAR_TYPE", +"DP_QC_CVAR_DESCRIPTION", +"DP_QC_DIGEST", +"DP_QC_DIGEST_SHA256", +"DP_QC_FINDCHAIN_TOFIELD", +"DP_QC_I18N", +"DP_QC_LOG", +"DP_QC_RENDER_SCENE", +"DP_QC_SPRINTF", +"DP_QC_STRFTIME", +"DP_QC_STRINGBUFFERS", +"DP_QC_STRINGBUFFERS_CVARLIST", +"DP_QC_STRINGBUFFERS_EXT_WIP", +"DP_QC_STRINGCOLORFUNCTIONS", +"DP_QC_STRING_CASE_FUNCTIONS", +"DP_QC_STRREPLACE", +"DP_QC_TOKENIZEBYSEPARATOR", +"DP_QC_TOKENIZE_CONSOLE", +"DP_QC_UNLIMITEDTEMPSTRINGS", +"DP_QC_URI_ESCAPE", +"DP_QC_URI_GET", +"DP_QC_URI_POST", +"DP_QC_WHICHPACK", +"FTE_STRINGS", +"DP_QC_FS_SEARCH_PACKFILE", +NULL +}; /* ========= @@ -597,7 +599,7 @@ refreshserverlist() */ static void VM_M_refreshserverlist(prvm_prog_t *prog) { - qboolean do_reset = false; + qbool do_reset = false; VM_SAFEPARMCOUNTRANGE( 0, 1, VM_M_refreshserverlist ); if (prog->argc >= 1 && PRVM_G_FLOAT(OFS_PARM0)) do_reset = true; @@ -834,7 +836,7 @@ static void VM_M_crypto_getidstatus(prvm_prog_t *prog) { lhnetaddress_t addr; const char *s; - qboolean issigned; + qbool issigned; VM_SAFEPARMCOUNT(1,VM_M_crypto_getidstatus); @@ -910,7 +912,7 @@ static void VM_M_crypto_getmyidfp(prvm_prog_t *prog) static void VM_M_crypto_getmyidstatus(prvm_prog_t *prog) { int i; - qboolean issigned; + qbool issigned; VM_SAFEPARMCOUNT(1, VM_M_crypto_getmyidstatus); @@ -930,6 +932,123 @@ static void VM_M_crypto_getmyidstatus(prvm_prog_t *prog) } } +// CL_Video interface functions + +/* +======================== +VM_cin_open + +float cin_open(string file, string name) +======================== +*/ +void VM_cin_open(prvm_prog_t *prog) +{ + const char *file; + const char *name; + + VM_SAFEPARMCOUNT( 2, VM_cin_open ); + + file = PRVM_G_STRING( OFS_PARM0 ); + name = PRVM_G_STRING( OFS_PARM1 ); + + VM_CheckEmptyString(prog, file ); + VM_CheckEmptyString(prog, name ); + + if( CL_OpenVideo( file, name, MENUOWNER, "" ) ) + PRVM_G_FLOAT( OFS_RETURN ) = 1; + else + PRVM_G_FLOAT( OFS_RETURN ) = 0; +} + +/* +======================== +VM_cin_close + +void cin_close(string name) +======================== +*/ +void VM_cin_close(prvm_prog_t *prog) +{ + const char *name; + + VM_SAFEPARMCOUNT( 1, VM_cin_close ); + + name = PRVM_G_STRING( OFS_PARM0 ); + VM_CheckEmptyString(prog, name ); + + CL_CloseVideo( CL_GetVideoByName( name ) ); +} + +/* +======================== +VM_cin_setstate +void cin_setstate(string name, float type) +======================== +*/ +void VM_cin_setstate(prvm_prog_t *prog) +{ + const char *name; + clvideostate_t state; + clvideo_t *video; + + VM_SAFEPARMCOUNT( 2, VM_cin_setstate ); + + name = PRVM_G_STRING( OFS_PARM0 ); + VM_CheckEmptyString(prog, name ); + + state = (clvideostate_t)((int)PRVM_G_FLOAT( OFS_PARM1 )); + + video = CL_GetVideoByName( name ); + if( video && state > CLVIDEO_UNUSED && state < CLVIDEO_STATECOUNT ) + CL_SetVideoState( video, state ); +} + +/* +======================== +VM_cin_getstate + +float cin_getstate(string name) +======================== +*/ +void VM_cin_getstate(prvm_prog_t *prog) +{ + const char *name; + clvideo_t *video; + + VM_SAFEPARMCOUNT( 1, VM_cin_getstate ); + + name = PRVM_G_STRING( OFS_PARM0 ); + VM_CheckEmptyString(prog, name ); + + video = CL_GetVideoByName( name ); + if( video ) + PRVM_G_FLOAT( OFS_RETURN ) = (int)video->state; + else + PRVM_G_FLOAT( OFS_RETURN ) = 0; +} + +/* +======================== +VM_cin_restart + +void cin_restart(string name) +======================== +*/ +void VM_cin_restart(prvm_prog_t *prog) +{ + const char *name; + clvideo_t *video; + + VM_SAFEPARMCOUNT( 1, VM_cin_restart ); + + name = PRVM_G_STRING( OFS_PARM0 ); + VM_CheckEmptyString(prog, name ); + + video = CL_GetVideoByName( name ); + if( video ) + CL_RestartVideo( video ); +} + prvm_builtin_t vm_m_builtins[] = { NULL, // #0 NULL function (not callable) VM_checkextension, // #1 @@ -994,7 +1113,7 @@ VM_argv, // #59 VM_isserver, // #60 VM_clientcount, // #61 VM_clientstate, // #62 -VM_clcommand, // #63 +NULL, // #63 FIXME VM_changelevel, // #64 VM_localsound, // #65 VM_M_getmousepos, // #66