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(); }
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(); } }