This file describes how the conversation system works.

Functions:

DoResponsePhrase(RESPONSE_REF R, RESPONSE_FUNC response_func,
		UNICODE *ConstructStr)
	Adds a line to the list of remarks the player may choose from.
	R - The index for the line in the .txt dialog file.
    response_func - the function where to continue the dialog if this
			remark was chosen.
	ConstructStr - A user-constructed string to display. If it is 0,
			the string from R is used; if it is 0, the string identified
			by R is not displayed, but R is still used to report what choice
			a player made.
			In practice ConstructStr is always the result of a call
			to construct_response() and R is set to the first part of
			the constructed phrase.
	Note: ConstructStr must still be valid after the function calling
			DoResponsePhrase() returns, so it can't be on the stack.
			Also, if there are multiple constructed responses at one
			point in the dialog, they will need separate buffers.
			In practice, a global buffer shared_phrase_buf is used when
			only one buffer is required.
	Note: In practice, when R is 0, the call is always made through the
			macro Response()

Response(RESPONSE_REF R, RESPONSE_FUNC response_func)
	Macro that calls DoResponsePhrase() with 0 for ConstructStr.

construct_response(UNICODE *buf, int R, ...)
	Concatenates strings from a dialog .txt file with strings from
	the source. The arguments after *buf are alternatingly an int R,
	and a UNICODE * str, until either R is -1, or str is NULL.
	buf - the destination
	R   - The index for the line in the .txt dialog file.
	str - A UNICODE * string.

NPCPhrase_cb(int index, TFB_TrackCB cb)
	Display the NPC speech with identifier 'index' (and play the
	associated sample). The callback function 'cb' is called when
	the displaying is done (usually when the sample ends).
	index - The index for the line in the .txt dialog file.
	cb - the callback function to called when the line is over.
			NULL indicates no callback function.

NPCPhrase(int index)
	Display the NPC speech with identifier 'index'.
	This is a macro to NPCPrhase_cb().
	index - The index for the line in the .txt dialog file, or
			GLOBAL_PLAYER_NAME for the name of the captain,
			GLOBAL_SHIP_NAME for the name of the flagship,
			GLOBAL_PLAYER_LOCATION, for the player's hyperspace coordinates,
			GLOBAL_ALLIANCE_NAME, for the name of the new alliance, or
			a negative number for the absolute number as speech

DISABLE_PHRASE(int index)
	Mark a player line as not to be offered as a choice anymore. Not in
	this conversion, nor in any future conversations.
	index - The index for the line in the .txt dialog file.

PHRASE_ENABLED(int index)
	Check if a player phrase was formerly marked as not to be offered anymore
	(by call to DISABLE_PHRASE).
	index - The index for the line in the .txt dialog file.
	
PLAYER_SAID(RESPONSE_REF said, RESPONSE_REF test)
	Test whether a player the player reply 'said' is equal to the reply
	'test'.
	said - the response that the player selected
	test - a response to test 'said' against


Initial version by Serge van den Boom, 2005-01-10

