INPUT HANDLING
Written by Deathblade, 4-Sep-94.
[ note: I’m still working on this, but this should serve as a
quick description of input handling until I can get this completed. ]
GUElib uses an input system that is quite a bit different from most other mudlibs. There are two main changes: the parser and the modal input system. The input system is discussed here, see /doc/std/parser for more information on the GUElib parser.
The objective of the input system is to deal with nested input modes. A classic example is performing a “more” from within another. On many muds, this will fail due to the non-reentrant usage of input_to() and non-reentrancy in whatever is performing the “more” functionality (it is quite common to have the player object perform this function and it is usually done with non-reentrant code).
The new input system centers around three functions on the player object:
void modal_push(string func, int secure) void modal_pop() void modal_func(string func, int secure)
The first function sets up the calling object as a modal input handler. All input will then be passed to the given function until a modal_pop() is sent. The function receiving the input may be changed with the modal_func() function. Both modal_push() and modal_func() take a second parameter indicating whether the input should be hidden (as in a password).
- need more here. discuss MORE_OB and EDIT_OB as helpful pieces
- of code.
- Beek: This *really* needs a few examples of how to do simple
things so we don’t have to pile through tons of docs just to do the equivalent of input_to :)
-Beek