Beispiel #1
0
        public void TopicMessageList(INTopicId topic, NTopicMessagesListMessage.Builder message,
                                     bool appendList = false, uint maxMessages = 100)
        {
            _client.Send(message.Build(), messages =>
            {
                if (!appendList)
                {
                    StateManager.Instance.ChatMessages[topic].Clear();
                }

                foreach (var chatMessage in messages.Results)
                {
                    // check to see if ChatMessages has 'maxMessages' messages.
                    if (StateManager.Instance.ChatMessages[topic].Count >= maxMessages)
                    {
                        return;
                    }

                    StateManager.Instance.ChatMessages[topic].Add(chatMessage.MessageId, chatMessage);
                }

                // Recursively fetch the next set of groups and append
                if (messages.Cursor != null && messages.Cursor.Value != "")
                {
                    message.Cursor(messages.Cursor);
                    TopicMessageList(topic, message, true);
                }
            }, ErrorHandler);
        }
Beispiel #2
0
        private void FetchHistoricMessages()
        {
            var topic   = StateManager.Instance.Topics[RoomName];
            var builder = new NTopicMessagesListMessage.Builder();

            builder.TopicRoom(RoomName);
            NakamaManager.Instance.TopicMessageList(topic, builder);
        }
        private void FetchHistoricMessages(INUser user)
        {
            var topic   = StateManager.Instance.Topics[user.Id];
            var builder = new NTopicMessagesListMessage.Builder();

            builder.TopicDirectMessage(user.Id);
            NakamaManager.Instance.TopicMessageList(topic, builder);
        }
Beispiel #4
0
    private void GetPreviousMatchesFromRoom()
    {
        ManualResetEvent historyEvent = new ManualResetEvent(false);

        client = NakamaData.Singleton.Client;
        byte[] roomByte = Encoding.UTF8.GetBytes("match-list");
        IList <INTopicMessage> msgsReturned = null;

        var message = new NTopicMessagesListMessage.Builder()
                      .TopicRoom(roomByte)
                      .Forward(false)
                      .Limit(100)
                      .Build();

        client.Send(message, (INResultSet <INTopicMessage> msgs) =>
        {
            // Each message in the result set is a `INTopicMessage` identical
            // to messages received through `OnTopicMessage` realtime delivery.
            msgsReturned = msgs.Results;
            Debug.Log("Successfully listed messages from topic. msgs.Results.Count: " + msgs.Results.Count + " msgsReturned.Count: " + msgsReturned.Count);
            historyEvent.Set();
        }, (INError error) => {
            Debug.LogErrorFormat("Could not list messages from topic: '{0}'.", error.Message);
            historyEvent.Set();
        });
        historyEvent.WaitOne(1000, false);

        if (msgsReturned.Count < 1)
        {
            return;
        }

        //GO through the messages as if they were just recieved
        foreach (INTopicMessage topicMessage in msgsReturned)
        {
            Debug.Log("topicMessage.Data.ToString(): " + topicMessage.Data.ToString());
            var  bytesAsString = Encoding.ASCII.GetString(topicMessage.Data);
            var  chatJson      = JsonUtility.FromJson <MatchRoomClass>(bytesAsString);
            Guid tempMatchID   = new Guid(chatJson.matchIDGUID);

            MatchSettings newSettings = new MatchSettings();
            newSettings.matchCreator = chatJson.userName;
            newSettings.maxHealth    = chatJson.matchMaxHealth;
            newSettings.matchName    = chatJson.matchName;

            if (chatJson.addRemove == "add")
            {
                Debug.Log("Adding previous match: " + chatJson.matchName);
                newSettings.matchStatus = "open";
                //matchNameMatchGuid.Add(chatJson.matchName, tempMatchID.ToByteArray());
                if (matchGuidMatchSettings.ContainsKey(tempMatchID))
                {
                    return;
                }
                matchGuidMatchSettings.Add(tempMatchID, newSettings);
                Debug.Log("Added matchGuidMatchSettings.Count: " + matchGuidMatchSettings.Count); //match matchNameMatchGuid.Count: " + matchNameMatchGuid.Count + " matchGuidMatchSettings.Count: " + matchGuidMatchSettings.Count);
            }
            else
            {
                Debug.Log("Removing matchGuidMatchSettings.Count: " + matchGuidMatchSettings.Count); //match matchNameMatchGuid.Count: " + matchNameMatchGuid.Count + " matchGuidMatchSettings.Count: " + matchGuidMatchSettings.Count);
                //matchNameMatchGuid.Remove(chatJson.matchName);
                //matchGuidMatchSettings.Remove(chatJson.matchName);
                if (matchGuidMatchSettings.ContainsKey(tempMatchID))
                {
                    matchGuidMatchSettings[tempMatchID].matchStatus = "closed";
                }
                else
                {
                    newSettings.matchStatus = "closed";
                    matchGuidMatchSettings.Add(tempMatchID, newSettings);                           //Only reason we add, is so if it comes up again in message
                }
                Debug.Log("Removed matchGuidMatchSettings.Count: " + matchGuidMatchSettings.Count); //match matchNameMatchGuid.Count: " + matchNameMatchGuid.Count + " matchGuidMatchSettings.Count: " + matchGuidMatchSettings.Count);
            }
        }
    }