From f603e392a4dc9b7da2732bc3c14585d54de99b7e Mon Sep 17 00:00:00 2001 From: cloudwalk Date: Tue, 20 Apr 2021 13:24:11 +0000 Subject: [PATCH] menu: Partially implement MQC built-in #352 (registercommand). Not enabled yet due to design considerations. git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@13128 d7cf8633-e32d-0410-b094-e92efae38249 --- menu.h | 2 ++ mvm_cmds.c | 15 ++++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/menu.h b/menu.h index d0b3189e..38a034f6 100644 --- a/menu.h +++ b/menu.h @@ -72,6 +72,8 @@ void MP_Draw (void); void MP_ToggleMenu (int mode); void MP_Shutdown (void);*/ +qbool MP_ConsoleCommand(const char *text); + // // menu router // diff --git a/mvm_cmds.c b/mvm_cmds.c index 3168bbf4..337d196b 100644 --- a/mvm_cmds.c +++ b/mvm_cmds.c @@ -53,6 +53,12 @@ const char *vm_m_extensions[] = { NULL }; +qbool MP_ConsoleCommand(const char *text) +{ + prvm_prog_t *prog = MVM_prog; + return PRVM_ConsoleCommand(prog, text, &prog->funcoffsets.GameCommand, false, -1, 0, prog->loaded, "QC function GameCommand is missing"); +} + /* ========= VM_M_setmousetarget @@ -1049,6 +1055,13 @@ void VM_cin_restart(prvm_prog_t *prog) CL_RestartVideo( video ); } +static void VM_M_registercommand(prvm_prog_t *prog) +{ + VM_SAFEPARMCOUNT(1, VM_M_registercommand); + if(!Cmd_Exists(cmd_client, PRVM_G_STRING(OFS_PARM0))) + Cmd_AddCommand(CF_CLIENT, PRVM_G_STRING(OFS_PARM0), NULL, "console command created by QuakeC"); +} + prvm_builtin_t vm_m_builtins[] = { NULL, // #0 NULL function (not callable) VM_checkextension, // #1 @@ -1429,7 +1442,7 @@ NULL, // #348 VM_CL_isdemo, // #349 NULL, // #350 NULL, // #351 -NULL, // #352 +VM_M_registercommand, // #352 void(string cmdname) VM_wasfreed, // #353 float(entity ent) wasfreed NULL, // #354 VM_CL_videoplaying, // #355 -- 2.39.2