SmaugWizard/Backup/
SmaugWizard/Backup/L/
SmaugWizard/Boards/
SmaugWizard/Building/
SmaugWizard/Corpses/
SmaugWizard/Councils/
SmaugWizard/Deity/
SmaugWizard/Gods/
SmaugWizard/MudProgs/
SmaugWizard/Player/L/
SmaugWizard/Src/
SmaugWizard/Src/res/
// help.h

#ifndef		HELP_H
#define		HELP_H

extern void		LoadAllHelp (FILE *fp);


class CHelpData {
friend class CHelpList;
public:
				CHelpData () { memset (this, 0, sizeof (CHelpData)); }
				~CHelpData ();

	CString		GetKey () { return m_pKey; }
	void		SetKey (char* k) { STRFREE (m_pKey); m_pKey = k; }
	CString		GetText () { return m_pText; }
	void		SetText (char* t) { STRFREE (m_pText); m_pText = t; }
	short		GetLevel () { return m_Level; }
	void		SetLevel (short l) { m_Level = l; }

	const char	*GetTextPtr () { return m_pText; }
	BOOL		IsLastKey ()
				{ return m_pKey [0] == 0 || m_pKey [0] == '$'; }
	BOOL		IsEmpty ()
				{ if (! m_pKey || ! m_pText) return TRUE;
				  return m_pKey [0] == 0 || m_pText [0] == 0; }

	BOOL		operator== (CHelpData& in);
	BOOL		operator> (CHelpData& in);
	BOOL		operator< (CHelpData& in);

protected:
	short		m_Level;
	char		*m_pKey;
	char		*m_pText;				// STRALLOC
};


class CHelpList : public CPtrList {
public:
	void		Add (CHelpData *pHelp);
	CHelpData	*Find (const char* key, int level, int TrustLevel);
	void		Remove (CHelpData* pHelp);
	void		RemoveAll ();				// override of CPtrList RemoveAll
	CHelpData	*GetNext (POSITION& pos)
				{ return (CHelpData*) CPtrList::GetNext (pos); }
};

extern	CHelpList	HelpList;

#ifdef SMAUGSERVER_CPP
	CHelpList	HelpList;
#endif

#endif