Exemple #1
0
void CCmdWindow::ProcessInput()
{
	PCHAR szCmdEndPos;
	CMDPROC cmdHandler;

	if(!m_pEditControl) return;

	strncpy(m_szInputBuffer,m_pEditControl->GetText(),MAX_CMD_INPUT);
	m_szInputBuffer[MAX_CMD_INPUT] = '\0';
    
	// don't process 0 length input
	if(!strlen(m_szInputBuffer)) {
		if(m_bEnabled) Disable();
		return;
	}

    // remember this command for later use in the recalls.	
    AddToRecallBuffer(m_szInputBuffer);
	m_iCurrentRecallAt = -1;

	if(*m_szInputBuffer != CMD_CHARACTER) { 
		// chat type message	
		if(m_pDefaultCmd) {
			m_pDefaultCmd(m_szInputBuffer);
		}
	}
	else 
	{// possible valid command
		// find the end of the name
		szCmdEndPos = m_szInputBuffer + 1;
		while(*szCmdEndPos && *szCmdEndPos != ' ') szCmdEndPos++;
		if(*szCmdEndPos == '\0') {
			// Possible command with no params.
			cmdHandler = GetCmdHandler(m_szInputBuffer + 1);
			// If valid then call it.
			if(cmdHandler) {
				cmdHandler("");
			}
			else {
				if (pNetGame) {
					SendToServer(m_szInputBuffer);
				}
				else {
					pChatWindow->AddDebugMessage("I don't know that command.");
				}
			}
		}
		else {
			char szCopiedBuffer[MAX_CMD_INPUT+1];
			strcpy(szCopiedBuffer, m_szInputBuffer);

			*szCmdEndPos='\0'; // null terminate it
			szCmdEndPos++; // rest is the parameters.
			cmdHandler = GetCmdHandler(m_szInputBuffer + 1);
			// If valid then call it with the param string.
			if(cmdHandler) {
				cmdHandler(szCmdEndPos);
			}
			else {
				if (pNetGame) {
					SendToServer(szCopiedBuffer);
				}
				else {
					pChatWindow->AddDebugMessage("I don't know that command.");
				}
			}
		}
	}

	*m_szInputBuffer ='\0';	
	m_pEditControl->SetText("",false);

	if(m_bEnabled) Disable();
}
Exemple #2
0
void CCmdWindow::ProcessInput()
{
	PCHAR szCmdEndPos;
	CMDPROC cmdHandler;
	char command[2048];

	if(m_bEnabled) {
		if(m_szInputBuffer[0] != '\0')
		{
			if(m_szInputBuffer[0] != CMD_CHARACTER) { 
				// chat type message	
				if(m_pDefaultCmd) {
					m_pDefaultCmd(m_szInputBuffer);
				}
			}
			else 
			{// possible valid command
				bool bSendToServer = true;

				// find the end of the command
				szCmdEndPos = &m_szInputBuffer[1];
				strcpy((char*)&command, (char*)&m_szInputBuffer);
				while(*szCmdEndPos && *szCmdEndPos != ' ') szCmdEndPos++;
				if(*szCmdEndPos == '\0') {
					// Possible command with no params.
					cmdHandler = GetCmdHandler(&m_szInputBuffer[1]);
					// If valid then call it.
					if(cmdHandler) {
						cmdHandler("");
						bSendToServer = false;
					}
				}
				else {
					*szCmdEndPos='\0'; // null terminate it
					szCmdEndPos++; // rest is the parameters.
					cmdHandler = GetCmdHandler(&m_szInputBuffer[1]);
					// If valid then call it with the param string.
					if(cmdHandler) {
						cmdHandler(szCmdEndPos);
						bSendToServer = false;
					}
				}
				if(bSendToServer) {
					if(pNetowkManager->IsConnected()) {
											RakNet::BitStream bsSend;
											BYTE byteTextLen = strlen(command);
											bsSend.Write(byteTextLen);
											bsSend.Write(command,byteTextLen);
											pNetowkManager->GetRPC4()->Call("ChatCommand",&bsSend,HIGH_PRIORITY,RELIABLE,0,UNASSIGNED_SYSTEM_ADDRESS,TRUE);
									} else {
											pChatWindow->AddInfoMessage("Not connected");
									}
				}
			}
		}

		m_szInputBuffer[0] = '\0';

		Disable();
	}
}