diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2009-06-15 14:01:36 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2009-06-15 14:01:36 +0000 |
| commit | 7b68ff42773976cafe39b59dc026350cda5c05fd (patch) | |
| tree | a64ff77b56d62f3860e82513df4874436c353621 /src/engine/e_console.c | |
| parent | 0160f2651448c2c2df332d2447629e23d5bd4a9a (diff) | |
| download | zcatch-7b68ff42773976cafe39b59dc026350cda5c05fd.tar.gz zcatch-7b68ff42773976cafe39b59dc026350cda5c05fd.zip | |
fixed chaining of console commands, allows snatching updates of console variables. cleaned up some code
Diffstat (limited to 'src/engine/e_console.c')
| -rw-r--r-- | src/engine/e_console.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/engine/e_console.c b/src/engine/e_console.c index 0f6e6acd..5c0f37f3 100644 --- a/src/engine/e_console.c +++ b/src/engine/e_console.c @@ -428,6 +428,27 @@ static void str_variable_command(void *result, void *user_data) } } +static void console_chain(void *result, void *user_data) +{ + COMMANDCHAIN *info = (COMMANDCHAIN *)user_data; + info->chain_callback(result, info->user_data, info->callback, info->callback_user_data); +} + +void console_chain_command(const char *cmd, COMMANDCHAIN *chaininfo, CONSOLE_CHAIN_CALLBACK cb, void *user) +{ + COMMAND *command = console_get_command(cmd); + + /* store info */ + chaininfo->chain_callback = cb; + chaininfo->callback = command->callback; + chaininfo->callback_user_data = command->user_data; + chaininfo->user_data = user; + + /* chain */ + command->callback = console_chain; + command->user_data = chaininfo; +} + void console_init() { MACRO_REGISTER_COMMAND("echo", "r", CFGFLAG_SERVER|CFGFLAG_CLIENT, con_echo, 0x0, "Echo the text"); |