Esempio n. 1
0
    // +++ handler for nakama events ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    async void OnChannelPresence(object sender, IChannelPresenceEvent presenceChange)
    {
        _connectedUsers.AddRange(presenceChange.Joins);
        foreach (var leave in presenceChange.Leaves)
        {
            _connectedUsers.RemoveAll(item => item.SessionId.Equals(leave.SessionId));
        }
        ;

        // Print connected presences.
        var presences = _connectedUsers.Select(x => x.Username).ToArray();

        Debug.Log(presences);

        IApiUsers result = await _client.GetUsersAsync(_session, null, presences, null);

        this.OnChannelPresencesChanged(this, result.Users.ToList());
    }
        // -------------------------------------------

        /*
         * OnReceivedChannelPresence
         */
        private async void OnReceivedChannelPresence(IChannelPresenceEvent m)
        {
            if (m.Leaves.ToArray().Length == 0)
            {
                m_isInLobby = true;
                if (DEBUG)
                {
                    Debug.LogError("RECEIVED CHANNEL PRESENCE::ChannelId=" + m.ChannelId + "::SENDING ROOMS=" + RoomsBuffer);
                }
                if (NakamaConnection.ConnectedToMainChat)
                {
                    await NakamaConnection.SendMainChatMessage(ROOMS_CHAT_MESSAGE, RoomsBuffer);
                }
                else
                {
                    BasicSystemEventController.Instance.DelayBasicSystemEvent(EVENT_NAKAMACONTROLLER_SEND_INITIAL_ROOMS, 1);
                }
            }
        }
Esempio n. 3
0
 private void _socket_OnChannelPresence(object sender, IChannelPresenceEvent e)
 {
     Debug.Log("Call to socket_OnChannelPresence");
 }
Esempio n. 4
0
 /// <summary>
 /// Dispatches <see cref="ReceiveChannelPresence(string, IEnumerable{IUserPresence}, IEnumerable{IUserPresence})"/> to be runned in main thread
 /// </summary>
 private void ReceiveChannelPresence(IChannelPresenceEvent presenceEvent)
 {
     UnityMainThreadDispatcher.Instance().Enqueue(() => ReceiveChannelPresence(presenceEvent.ChannelId, presenceEvent.Joins, presenceEvent.Leaves));
 }
 private void ActionReceivedChannelPresence(IChannelPresenceEvent m)
 {
     m_mainThread.Enqueue(() => OnReceivedChannelPresence(m));
 }