/// <summary> /// Publish text message /// </summary> /// <param name="text">The text from input text box</param> private void PublishMessage(string text) { var payload = new ChatPayload { UserId = _userId, // pass current user ID Text = text }; // publish payload Messenger.Default.Publish(payload); }
private unsafe void SendMessageInternal(string message) { var framework = FFXIVClientStructs.FFXIV.Client.System.Framework.Framework.Instance(); var uiModule = framework->GetUiModule(); using var payload = new ChatPayload(message); var payloadPtr = Marshal.AllocHGlobal(400); Marshal.StructureToPtr(payload, payloadPtr, false); this.processChatBox(uiModule, payloadPtr, IntPtr.Zero, 0); Marshal.FreeHGlobal(payloadPtr); }
/// <summary> /// Callback for <see cref="ChatPayload"/> (receiver function) /// </summary> /// <param name="payload"><see cref="ChatPayload"/></param> private void OnChatMessage(ChatPayload payload) { // reset chat text stack if it has reached its maximum if (_chatText.text.Length + payload.Text.Length > MaxChatTextLength) { _chatText.text = string.Empty; } // copy text and ensure that within max allowed range var txt = payload.Text.Length > MaxChatTextLength? payload.Text.Substring(0, MaxChatTextLength) : payload.Text; // append text to current chat texts _chatText.text += $"\r\n{DateTime.Now:t} {payload.UserId}: {txt.Trim()}"; }
/// <summary> /// Returns 'true' if payload can be accepted (filter function)/> /// </summary> /// <param name="payload">Given filter</param> /// <returns>Returns 'true' if payload can be accepted</returns> private bool ChatMessagePredicate(ChatPayload payload) { // check if message is from the same user ID bound to this instance var isSameId = payload.UserId == _userId; // if same user ID, ignore message if (isSameId) { return(false); } // check if message text is null or empty var isEmpty = payload.Text.IsNullOrEmpty(); return(!isEmpty); }
private void OnChatMessageReceived(ChatPayload payload) { Debug.LogFormat("Received: {0}", payload); _counterText.text = $"Message Count: {++_msgCount}"; }
private bool ChatMessageFilter(ChatPayload payload) { var accepted = payload != null && _counterText != null; return(accepted); }