|
|
1.1 ! root 1: /* ! 2: Copyright (C) 1996-1997 Id Software, Inc. ! 3: ! 4: This program is free software; you can redistribute it and/or ! 5: modify it under the terms of the GNU General Public License ! 6: as published by the Free Software Foundation; either version 2 ! 7: of the License, or (at your option) any later version. ! 8: ! 9: This program is distributed in the hope that it will be useful, ! 10: but WITHOUT ANY WARRANTY; without even the implied warranty of ! 11: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ! 12: ! 13: See the GNU General Public License for more details. ! 14: ! 15: You should have received a copy of the GNU General Public License ! 16: along with this program; if not, write to the Free Software ! 17: Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ! 18: ! 19: */ ! 20: ! 21: // cmd.h -- Command buffer and command execution ! 22: ! 23: //=========================================================================== ! 24: ! 25: /* ! 26: ! 27: Any number of commands can be added in a frame, from several different sources. ! 28: Most commands come from either keybindings or console line input, but remote ! 29: servers can also send across commands and entire text files can be execed. ! 30: ! 31: The + command line options are also added to the command buffer. ! 32: ! 33: The game starts with a Cbuf_AddText ("exec quake.rc\n"); Cbuf_Execute (); ! 34: ! 35: */ ! 36: ! 37: ! 38: void Cbuf_Init (void); ! 39: // allocates an initial text buffer that will grow as needed ! 40: ! 41: void Cbuf_AddText (char *text); ! 42: // as new commands are generated from the console or keybindings, ! 43: // the text is added to the end of the command buffer. ! 44: ! 45: void Cbuf_InsertText (char *text); ! 46: // when a command wants to issue other commands immediately, the text is ! 47: // inserted at the beginning of the buffer, before any remaining unexecuted ! 48: // commands. ! 49: ! 50: void Cbuf_Execute (void); ! 51: // Pulls off \n terminated lines of text from the command buffer and sends ! 52: // them through Cmd_ExecuteString. Stops when the buffer is empty. ! 53: // Normally called once per frame, but may be explicitly invoked. ! 54: // Do not call inside a command function! ! 55: ! 56: //=========================================================================== ! 57: ! 58: /* ! 59: ! 60: Command execution takes a null terminated string, breaks it into tokens, ! 61: then searches for a command or variable that matches the first token. ! 62: ! 63: */ ! 64: ! 65: typedef void (*xcommand_t) (void); ! 66: ! 67: void Cmd_Init (void); ! 68: ! 69: void Cmd_AddCommand (char *cmd_name, xcommand_t function); ! 70: // called by the init functions of other parts of the program to ! 71: // register commands and functions to call for them. ! 72: // The cmd_name is referenced later, so it should not be in temp memory ! 73: // if function is NULL, the command will be forwarded to the server ! 74: // as a clc_stringcmd instead of executed locally ! 75: ! 76: qboolean Cmd_Exists (char *cmd_name); ! 77: // used by the cvar code to check for cvar / command name overlap ! 78: ! 79: char *Cmd_CompleteCommand (char *partial); ! 80: // attempts to match a partial command for automatic command line completion ! 81: // returns NULL if nothing fits ! 82: ! 83: int Cmd_Argc (void); ! 84: char *Cmd_Argv (int arg); ! 85: char *Cmd_Args (void); ! 86: // The functions that execute commands get their parameters with these ! 87: // functions. Cmd_Argv () will return an empty string, not a NULL ! 88: // if arg > argc, so string operations are allways safe. ! 89: ! 90: int Cmd_CheckParm (char *parm); ! 91: // Returns the position (1 to argc-1) in the command's argument list ! 92: // where the given parameter apears, or 0 if not present ! 93: ! 94: void Cmd_TokenizeString (char *text); ! 95: // Takes a null terminated string. Does not need to be /n terminated. ! 96: // breaks the string up into arg tokens. ! 97: ! 98: void Cmd_ExecuteString (char *text); ! 99: // Parses a single line of text into arguments and tries to execute it ! 100: // as if it was typed at the console ! 101: ! 102: void Cmd_ForwardToServer (void); ! 103: // adds the current command line as a clc_stringcmd to the client message. ! 104: // things like godmode, noclip, etc, are commands directed to the server, ! 105: // so when they are typed in at the console, they will need to be forwarded. ! 106: ! 107: void Cmd_StuffCmds_f (void);
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.