Exemplo n.º 1
0
    void OnUpdateUserStatus(string userId, FriendsController.UserStatus status)
    {
        if (!friendsController.isInitialized)
        {
            return;
        }

        FriendTracker friend;

        if (!friends.TryGetValue(userId, out friend))
        {
            friend = new FriendTracker(userId, friendColors[Random.Range(0, friendColors.Length)]);
            friends.Add(userId, friend);
        }

        friend.SetStatus(status);

        if (!friend.IsOnline())
        {
            friend.RemoveAllListeners();
        }
        else
        {
            ProcessFriendLocation(friend, new Vector2Int((int)status.position.x, (int)status.position.y));
        }
    }
Exemplo n.º 2
0
    void ProcessFriendLocation(FriendTracker friend, Vector2Int coords)
    {
        if (!friend.HasChangedLocation(coords))
        {
            return;
        }

        friend.RemoveAllListeners();

        using (var listenersIterator = listeners.GetEnumerator())
        {
            while (listenersIterator.MoveNext())
            {
                if (listenersIterator.Current.Value.ContainCoords(coords))
                {
                    friend.AddListener(listenersIterator.Current.Value);
                }
            }
        }
    }
Exemplo n.º 3
0
    void OnFriendsInitialized()
    {
        friendsController.OnInitialized -= OnFriendsInitialized;

        using (var friendsIterator = friendsController.GetFriends().GetEnumerator())
        {
            while (friendsIterator.MoveNext())
            {
                FriendTracker friend = new FriendTracker(friendsIterator.Current.Key, friendColors[Random.Range(0, friendColors.Length)]);
                friend.SetStatus(friendsIterator.Current.Value);
                friends.Add(friendsIterator.Current.Key, friend);
            }
        }

        using (var listenersIterator = listeners.GetEnumerator())
        {
            while (listenersIterator.MoveNext())
            {
                ProcessNewListener(listenersIterator.Current.Value);
            }
        }
    }