#pragma once

#define MAX_CMD_INPUT   128
#define MAX_CMDS		144
#define MAX_CMD_STRLEN  32

typedef void (__cdecl *CMDPROC)(PCHAR);

//----------------------------------------------------

class CCmdWindow
{
private:

	IDirect3DDevice9 *m_pD3DDevice;
	CDXUTDialog		*m_pGameUI;
	CDXUTIMEEditBox	*m_pEditControl;

public:

	CMDPROC		m_pCmds[MAX_CMDS];
	CHAR        m_szCmdNames[MAX_CMDS][MAX_CMD_STRLEN+1];
	int			m_iCmdCount;

	BOOL		m_bEnabled;

	char		m_szInputBuffer[MAX_CMD_INPUT + 1];
	char field_1565[1290];
	char field_1A6F[129];
	int field_1AF0;
	int field_1AF4;
	CMDPROC		m_pDefaultCmd;	 // used when no command specifier was
								 // used (ie. a normal chat message)

	void GetDialogSize(RECT *pRect);

	void Enable();
	void Disable();

	void ProcessInput();

	CMDPROC GetCmdHandler(PCHAR szCmdName);
	void AddDefaultCmdProc(CMDPROC cmdDefault);
	void AddCmdProc(PCHAR szCmdName, CMDPROC cmdHandler);

	void ResetDialogControls(CDXUTDialog *pGameUI);
	CCmdWindow(IDirect3DDevice9 *pD3DDevice);
	~CCmdWindow();
};

//----------------------------------------------------
// EOF