COM_Exec_f: By default, insert into command buffer

- Resolves KartKrew/RingRacers#281 under standard operation
- Add `-immediate` parameter for previous, `wait`-ignoring behaviour
    - Used by configfile, EXECCFG
This commit is contained in:
toaster 2024-09-15 17:09:28 +01:00
parent 902b2d5f9a
commit 3ca282c3b4
3 changed files with 16 additions and 5 deletions

View file

@ -855,8 +855,19 @@ static void COM_Exec_f(void)
if (!COM_CheckParm("-silent"))
CONS_Printf(M_GetText("executing %s\n"), COM_Argv(1));
// insert text file into the command buffer
COM_ImmedExecute((char *)buf);
if (COM_CheckParm("-immediate"))
{
// immediately parses and executes all lines
// sidesteps wait from all sources, even self
COM_ImmedExecute((char *)buf);
}
else
{
// insert text file into the command buffer
// delays execution if interpreting wait cmd
COM_BufAddTextEx((char *)buf, com_flags);
COM_BufAddTextEx("\n", com_flags);
}
// free buffer
Z_Free(buf);

View file

@ -3533,7 +3533,7 @@ void readmaincfg(MYFILE *f, boolean mainfile)
else if (fastcmp(word, "EXECCFG"))
{
if (strchr(word2, '.'))
COM_BufAddText(va("exec %s\n", word2));
COM_BufAddText(va("exec \"%s\" -immediate\n", word2));
else
{
lumpnum_t lumpnum;

View file

@ -587,7 +587,7 @@ void Command_LoadConfig_f(void)
CV_InitFilterVar();
// exec the config
COM_BufInsertText(va("exec \"%s\"\n", configfile));
COM_BufInsertText(va("exec \"%s\" -immediate\n", configfile));
// don't filter anymore vars and don't let this convsvar be changed
COM_BufInsertText(va("%s \"%d\"\n", cv_execversion.name, EXECVERSION));
@ -648,7 +648,7 @@ void M_FirstLoadConfig(void)
CV_InitFilterVar();
// load config, make sure those commands doesnt require the screen...
COM_BufInsertText(va("exec \"%s\"\n", configfile));
COM_BufInsertText(va("exec \"%s\" -immediate\n", configfile));
// no COM_BufExecute() needed; that does it right away
// don't filter anymore vars and don't let this convsvar be changed