BOOL CT_Responder (event_t *ev) { if (chatmodeon && ev->type == EV_GUI_Event) { if (ev->subtype == EV_GUI_KeyDown || ev->subtype == EV_GUI_KeyRepeat) { if (ev->data1 == '\r') { ShoveChatStr ((char *)ChatQueue, chatmodeon - 1); CT_Stop (); return true; } else if (ev->data1 == GK_ESCAPE) { CT_Stop (); return true; } else if (ev->data1 == '\b') { CT_BackSpace (); return true; } else if (ev->data1 == 'C' && (ev->data3 & GKM_CTRL)) { I_PutInClipboard ((char *)ChatQueue); return true; } else if (ev->data1 == 'V' && (ev->data3 & GKM_CTRL)) { char *clip = I_GetFromClipboard (); if (clip != NULL) { char *clip_p = clip; strtok (clip, "\n\r\b"); while (*clip_p) { CT_AddChar (*clip_p++); } delete[] clip; } } } else if (ev->subtype == EV_GUI_Char) { // send a macro if (ev->data2 && (ev->data1 >= '0' && ev->data1 <= '9')) { ShoveChatStr (*chat_macros[ev->data1 - '0'], chatmodeon - 1); CT_Stop (); } else { CT_AddChar (ev->data1); } return true; } } return false; }
bool CT_Responder (event_t *ev) { if (chatmodeon && ev->type == EV_GUI_Event) { if (ev->subtype == EV_GUI_KeyDown || ev->subtype == EV_GUI_KeyRepeat) { if (ev->data1 == '\r') { ShoveChatStr ((char *)ChatQueue, chatmodeon - 1); CT_Stop (); return true; } else if (ev->data1 == GK_ESCAPE) { CT_Stop (); return true; } else if (ev->data1 == '\b') { CT_BackSpace (); return true; } else if (ev->data1 == 'C' && (ev->data3 & GKM_CTRL)) { I_PutInClipboard ((char *)ChatQueue); return true; } else if (ev->data1 == 'V' && (ev->data3 & GKM_CTRL)) { CT_PasteChat(I_GetFromClipboard(false)); } } else if (ev->subtype == EV_GUI_Char) { // send a macro if (ev->data2 && (ev->data1 >= '0' && ev->data1 <= '9')) { ShoveChatStr (*chat_macros[ev->data1 - '0'], chatmodeon - 1); CT_Stop (); } else { CT_AddChar (char(ev->data1)); } return true; } #ifdef unix else if (ev->subtype == EV_GUI_MButtonDown) { CT_PasteChat(I_GetFromClipboard(true)); } #endif } return false; }
void CT_PasteChat(const char *clip) { if (clip != NULL && *clip != '\0') { // Only paste the first line. while (*clip != '\0') { if (*clip == '\n' || *clip == '\r' || *clip == '\b') { break; } CT_AddChar (*clip++); } } }
void CT_Ticker(void) { int i; int j; char c; int numplayers; for (i = 0; i < maxplayers; i++) { if (!playeringame[i]) { continue; } if ((c = players[i].cmd.chatchar) != 0) { if (c <= CT_PLR_ALL) { chat_dest[i] = c; continue; } else if (c == CT_ESCAPE) { CT_ClearChatMessage(i); } else if (c == KEY_ENTER) { numplayers = 0; for (j = 0; j < maxplayers; j++) { numplayers += playeringame[j]; } CT_AddChar(i, 0); // set the end of message character if (numplayers > 2) { M_StringCopy(plr_lastmsg[i], CT_FromPlrText[i], sizeof(plr_lastmsg[i])); M_StringConcat(plr_lastmsg[i], chat_msg[i], sizeof(plr_lastmsg[i])); } else { M_StringCopy(plr_lastmsg[i], chat_msg[i], sizeof(plr_lastmsg[i])); } if (i != consoleplayer && (chat_dest[i] == consoleplayer + 1 || chat_dest[i] == CT_PLR_ALL) && *chat_msg[i]) { P_SetMessage(&players[consoleplayer], plr_lastmsg[i], true); S_StartSound(NULL, SFX_CHAT); } else if (i == consoleplayer && (*chat_msg[i])) { if (numplayers <= 1) { P_SetMessage(&players[consoleplayer], "THERE ARE NO OTHER PLAYERS IN THE GAME!", true); S_StartSound(NULL, SFX_CHAT); } } CT_ClearChatMessage(i); } else if (c == KEY_BACKSPACE) { CT_BackSpace(i); } else { CT_AddChar(i, c); } } } return; }
void CT_Ticker(void) { int i; int j; char c; int numplayers; for (i = 0; i < MAXPLAYERS; i++) { if (!playeringame[i]) { continue; } if ((c = players[i].cmd.chatchar) != 0) { if (c <= 5) { chat_dest[i] = c; continue; } else if (c == CT_ESCAPE) { CT_ClearChatMessage(i); } else if (c == KEY_ENTER) { numplayers = 0; for (j = 0; j < MAXPLAYERS; j++) { numplayers += playeringame[j]; } CT_AddChar(i, 0); // set the end of message character if (numplayers > 2) { strncpy(plr_lastmsg[i], DEH_String(CT_FromPlrText[i]), MESSAGESIZE + 9); plr_lastmsg[i][MESSAGESIZE + 8] = '\0'; strcat(plr_lastmsg[i], chat_msg[i]); } else { strcpy(plr_lastmsg[i], chat_msg[i]); } if (i != consoleplayer && (chat_dest[i] == consoleplayer + 1 || chat_dest[i] == CT_PLR_ALL) && *chat_msg[i]) { P_SetMessage(&players[consoleplayer], plr_lastmsg[i], true); S_StartSound(NULL, sfx_chat); } else if (i == consoleplayer && (*chat_msg[i])) { if (numplayers > 1) { P_SetMessage(&players[consoleplayer], DEH_String("-MESSAGE SENT-"), true); S_StartSound(NULL, sfx_chat); } else { P_SetMessage(&players[consoleplayer], DEH_String("THERE ARE NO OTHER PLAYERS IN THE GAME!"), true); S_StartSound(NULL, sfx_chat); } } CT_ClearChatMessage(i); } else if (c == KEY_BACKSPACE) { CT_BackSpace(i); } else { CT_AddChar(i, c); } } } return; }