GUI Scripting: Parsing of Set 'Cmd': Difference between revisions
tweak |
No edit summary |
||
Line 1: | Line 1: | ||
== GUI commands == | == GUI commands == | ||
Commands in the main menu | Commands in the main menu GUI with "cmd" as first parameter | ||
set "mycommand argument1 argument2;" | set "cmd" "mycommand argument1 argument2;" | ||
are handled in <tt>idGameLocal::HandleMainMenuCommands()</tt> in ''game/game_local.cpp''. | are handled in <tt>idGameLocal::HandleMainMenuCommands()</tt> in ''game/game_local.cpp''. | ||
Line 9: | Line 9: | ||
For each of the parts "mycommand", "argument1", "argument2" and sometimes the final ";", the routine is called again. | For each of the parts "mycommand", "argument1", "argument2" and sometimes the final ";", the routine is called again. | ||
One special case is just using "set" "mycommand", this will call <tt>HandleMainMenuCommands()</tt> twice, once with "mycommand" and once with ";" as the ''menuCommand'' parameter | One special case is just using "set" "cmd" "mycommand", this will call <tt>HandleMainMenuCommands()</tt> twice, once with "mycommand" and once with ";" as the ''menuCommand'' parameter. | ||
=== Solution === | === Solution === | ||
Line 30: | Line 24: | ||
set "cmd" "log 'Some text here'"; | set "cmd" "log 'Some text here'"; | ||
set "cmd" "mainmenu_heartbeat"; | set "cmd" "mainmenu_heartbeat"; | ||
== See also == | == See also == |
Revision as of 20:27, 8 September 2011
GUI commands
Commands in the main menu GUI with "cmd" as first parameter
set "cmd" "mycommand argument1 argument2;"
are handled in idGameLocal::HandleMainMenuCommands() in game/game_local.cpp.
For each of the parts "mycommand", "argument1", "argument2" and sometimes the final ";", the routine is called again.
One special case is just using "set" "cmd" "mycommand", this will call HandleMainMenuCommands() twice, once with "mycommand" and once with ";" as the menuCommand parameter.
Solution
The routine there fore predicts how much arguments the current command takes, accumulates them on a stack. And when it has seen enough arguments, handles the command and clears the stack before returning.
Any stray ";" as command is silently skipped.
The routine will also complain if you give not enough arguments to a command.
Examples
set "cmd" "play sound/meta/menu/mnu_hover"; set "cmd" "log 'Some text here'"; set "cmd" "mainmenu_heartbeat";
See also
- Introduction to Doom3 GUIs
- GUI Scripting on modwiki
- The "set" command on modiwki