//unfortunately, have to wrap the docs in a C comment for doxygen
// vim:tw=74:formatoptions-=l
/**
\page dirconf Directory Configuration

QuakeForge allows the structure of the game data directory tree to be
specified at run time. The default configuration is given below, but can be
overridden by setting the \c fs_dirconf Cvar to point to a configuration
file (eg, <code>"~/.quakeforge/gamedir.conf"</code>)

\verbatim
QF = {
	Path = "QF";
};
Quake = {
	Inherit = QF;
	Path = "id1";
	GameCode = "progs.dat";
	HudType = "id";
};
QuakeWorld = {
	Inherit = (Quake);
	Path = "qw";
	SkinPath = "${path}/skins";
	GameCode = "qwprogs.dat";
	HudType = "id";
};
"Hipnotic" = {
	Inherit = (Quake);
	Path = "hipnotic";
	HudType = "hipnotic";
};
"Rogue" = {
	Inherit = (Quake);
	Path = "rogue";
	HudType = "rogue";
};
"qw:qw" = {
	Inherit = (QuakeWorld);
};
"qw:*" = {
	Inherit = (QuakeWorld);
	Path = "$gamedir";
};
"nq:*" = {
	Inherit = (Quake);
	Path = "$gamedir";
};
"hipnotic:*" = {
	Inherit = (Hipnotic);
	Path = "$gamedir";
};
"rogue:*" = {
	Inherit = (Rogue);
	Path = "$gamedir";
};
"abyss" = {
	Inherit = (Quake);
	Path = "abyss";
};
"abyss:*" = {
	Inherit = (abyss);
	Path = "$gamedir";
};
\endverbatim

The directory config is a collection of tags with collections of
attributes. Normally, the tags will be in the form of either
<code>\"[name]\"</code> or <code>\"[name]:*\"</code>. The first form is
usually used for allowing inheritance (via the \c Inherit attribute)

Supported attributes are:
<dl>
	<dt><code>Path</code></dt>
		<dd>The relative path of the mod directory.</dd>
	<dt><code>GameCode</code></dt>
		<dd>The name of the mod progs file. This is relative to the mod
		directory</dd>
	<dt><code>HudType</code></dt>
		<dd>The name of the hud style. Currently, "id", "hipnotic" and
		"rogue" are supported. Has no effect in quakeworld.</dd>
	<dt><code>SkinPath</code></dt>
		<dd>Directory to which downloaded skins will be saved. This is
		relative to the QuakeForge data directory, and thus the default
		configuration uses <code>\${path}</code>. This attribute is ignored
		by nq clients and servers.</dd>
	<dt><code>SoundPath</code></dt>
		<dd>Where to look for sounds. Defaults to
		<code>\${path}/sound</code></dd>
	<dt><code>ModelPath</code></dt>
		<dd>Where to look for models. Defaults to
		<code>\${path}/progs</code></dd>
	<dt><code>MapPath</code></dt>
		<dd>Where to look for maps. Defaults to
		<code>\${path}/maps</code>.</dd>
	<dt><code>ShotsPath</code></dt>
		<dd>Where to write screenshots. Defaults to
		<code>QF</code>.</dd>
</dl>

Attribute allow variable substitution. Variables can take the form of
either <code>\$NAME</code> or <code>\${NAME}</code>, where the latter is
useful when the end of \c NAME is ambiguous (eg,
<code>\${NAME}STUFF</code> vs <code>\$NAME/STUFF</code>).

Supported vars are:
<dl>
	<dt><code>gamedir</code></dt>
		<dd>This is the current mod directory as specified by either
		<code>-game [modname]</code> on the command line (nq) or the
		<code>gamedir [modname]</code> console command.</dd>
	<dt><code>path</code></dt>
		<dd>This is the first directory in the \c Path attribute. If the
		current tag does not set the \c Path attribute, this variable will
		be undefined.</dd>
	<dt><code>\$</code></dt>
		<dd>The way to get <code>\$</code> into an attribute is by using
		<code>\$\$</code></dd>
</dl>
*/
