Пример #1
0
    /// <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);
    }
Пример #2
0
    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);
    }
Пример #3
0
    /// <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()}";
    }
Пример #4
0
    /// <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);
    }
Пример #5
0
 private void OnChatMessageReceived(ChatPayload payload)
 {
     Debug.LogFormat("Received: {0}", payload);
     _counterText.text = $"Message Count: {++_msgCount}";
 }
Пример #6
0
    private bool ChatMessageFilter(ChatPayload payload)
    {
        var accepted = payload != null && _counterText != null;

        return(accepted);
    }