#include "main.h"

extern CGame		*pGame;
extern CConfig		*pConfig;

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

CCmdWindow::CCmdWindow(IDirect3DDevice9 *pD3DDevice)
{
	m_bEnabled				= FALSE;
	m_pD3DDevice			= pD3DDevice;
	m_iCmdCount				= 0;
	field_1AF4				= 0;
	m_pEditControl			= NULL;
	field_1AF0				= -1;

	memset(&field_1565[0],0,1290);
	memset(&m_szInputBuffer[0],0,(MAX_CMD_INPUT+1));
	memset(&field_1A6F[0],0,129);
}

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

CCmdWindow::~CCmdWindow()
{
}

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

void CCmdWindow::ResetDialogControls(CDXUTDialog *pGameUI)
{
	m_pGameUI = pGameUI;

	if(pGameUI) {
		pGameUI->AddIMEEditBox(IDC_CMDEDIT,"",10,175,570,40,true,&m_pEditControl);
		if(pConfig->GetIntVariable("ime")) {
			CDXUTIMEEditBox::EnableImeSystem(true);
			CDXUTIMEEditBox::StaticOnCreateDevice();
		}
		m_pEditControl->GetElement(0)->TextureColor.Init(D3DCOLOR_ARGB( 240, 5, 5, 5 ));
		m_pEditControl->SetTextColor(D3DCOLOR_ARGB( 255, 255, 255, 255 ));
		m_pEditControl->SetCaretColor(D3DCOLOR_ARGB( 255, 150, 150, 150 ));
		m_pEditControl->SetSelectedBackColor(D3DCOLOR_ARGB( 255, 185, 34, 40 ));
		m_pEditControl->SetSelectedTextColor(D3DCOLOR_ARGB( 255, 10, 10, 15 ));
		m_pEditControl->SetEnabled(false);
		m_pEditControl->SetVisible(false);
	}
}

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

void CCmdWindow::GetDialogSize(RECT *pRect)
{
	memset(pRect,0,sizeof(RECT));

	if(m_pGameUI) {
		pRect->right = m_pGameUI->GetWidth();
		pRect->bottom = m_pGameUI->GetHeight();
	}
}

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

void CCmdWindow::Enable()
{
	if(m_bEnabled) return;

	if(m_pEditControl) {
		RECT rect;
		GetClientRect(pGame->GetMainWindowHwnd(), &rect);

		m_pEditControl->SetEnabled(true);
		m_pEditControl->SetVisible(true);

		// TODO: CCmdWindow::Enable()
	}

	m_bEnabled = TRUE;
}

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

void CCmdWindow::Disable()
{
	if(!m_bEnabled) return;

	if(m_pEditControl) {
		m_pEditControl->OnFocusOut();
		m_pEditControl->SetEnabled(false);
		m_pEditControl->SetVisible(false);
	}
	pGame->ToggleKeyInputsDisabled(0, TRUE);
	m_bEnabled = FALSE;
}

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





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

void CCmdWindow::ProcessInput()
{
	if(!m_pEditControl) return;

	strncpy(m_szInputBuffer,m_pEditControl->GetTextA(),MAX_CMD_INPUT);
	m_szInputBuffer[MAX_CMD_INPUT] = '\0';

	// TODO: CCmdWindow::ProcessInput()
}

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

CMDPROC CCmdWindow::GetCmdHandler(PCHAR szCmdName)
{
	int x=0;
	while(x!=m_iCmdCount) {
		if(!stricmp(szCmdName,m_szCmdNames[x])) {
			return m_pCmds[x];
		}
		x++;
	}
	return NULL;
}

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

void CCmdWindow::AddDefaultCmdProc(CMDPROC cmdDefault)
{
	m_pDefaultCmd = cmdDefault;
}

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

void CCmdWindow::AddCmdProc(PCHAR szCmdName, CMDPROC cmdHandler)
{
	if(m_iCmdCount < MAX_CMDS && (strlen(szCmdName) < MAX_CMD_STRLEN)) {
		m_pCmds[m_iCmdCount] = cmdHandler;
		strcpy(m_szCmdNames[m_iCmdCount],szCmdName);
		m_iCmdCount++;
	}
}

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