// +++ event handler ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    void OnMatchPresence(INMatchPresence presences)
    {
        Debug.Log("Match Players updated");

        // Remove all users who left.
        foreach (var user in presences.Leave)
        {
            connectedOpponents.Remove(
                connectedOpponents.SingleOrDefault(x => x.Handle == user.Handle)
                );
        }

        // Add all users who joined.
        foreach (var user in presences.Join)
        {
            if (connectedOpponents.Where(x => x.Handle == user.Handle).Count() > 0)
            {
                // already in list
                continue;
            }
            else
            {
                connectedOpponents.Add(user);
            }
        }

        // lock(connectedOpponents){
        //   LogOpponents(connectedOpponents, localPlayerId, "updated");
        // }

        if (connectedOpponents.Count == 2)
        {
            OnInitMatchComplete();
        }
    }
示例#2
0
        private void OnMatchPresencesUpdated(INMatchPresence presences)
        {
            _matchPresencesUpdated = true;
            foreach (var user in presences.Leave)
            {
                nakamaMatchPresences.Remove(nakamaMatchPresences.Single(x => x.Handle == user.Handle));
            }

            foreach (var user in presences.Join)
            {
                nakamaMatchPresences.Add(user);

                var playerCount = nakamaMatchPresences.Count();
                if (playerCount >= minNumberOfPlayers && playerCount <= maxNumberOfPlayers)
                {
                    Debug.Log("Game is ready");
                    Enqueue(
                        () => nvp_EventManager_scr.INSTANCE.InvokeEvent(GameEvents.OnMatchIsReady, this, nakamaMatchPresences)
                        );
                }
                else
                {
                    var matchIsFullMessage = NMatchDataSendMessage.Default(
                        nakamaMatchId,
                        99L,
                        System.Text.Encoding.UTF8.GetBytes(user.Handle));
                    _nakama.SendDataMessage(matchIsFullMessage);
                }
            }
        }
示例#3
0
 internal NMatchPresenceEventArgs(INMatchPresence matchPresence)
 {
     MatchPresence = matchPresence;
 }
 // +++ event handler ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 private void OnMatchPresence(INMatchPresence presences)
 {
     OnMatchPresencesUpdated(presences);
 }