Ranged Search Code
by Justice (Kwon J. Ekstrom)
Updated: June 13, 2006
Special thanks to:
------------------------
Hypereye for the use of his server as a test site.
Samson for information regarding SmaugFUSS and dlsym.
Description:
------------------------
This code was originally written to handle the ranged search capabilities
of a from-scratch C++ codebase. It was ported to SmaugFUSS for distribution
at "http://www.mudbytes.net/".
The purpose of this snippet is to reduce the code necessary for ranged
systems. It does this by delegating an object to handle each room
individually while a separate algorithm determines what rooms are
searched and their order.
The code consists primarily of 3 parts:
algorithms, search_frame, search_callback
Algorithms:
------------------------
The algorithms implement how the search is conducted. Currently there are
3 algorithms implemented which should be sufficient for most ranged searches
for a room based mud.
The search_BFS class implements a "breadth first search" which works similar
to how track does in a standard SMAUG.
The search_LOS class implements a "line of sight search" which works by
expanding outward in any direction available from the start room.
The search_DIR class is similar to search_LOS but only expands in a given
direction.
Search Frame:
------------------------
The search_frame class stores the current state of the search.
Search Callback:
------------------------
The callback objects are where you would implement the purpose behind any
given search. It defines only one abstract method. It takes a search frame
as input and returns true if the target is "found" or false to keep searching.
Examples:
------------------------
Included with the source are 2 examples. A basic scan function and a mini-map.