示例#1
0
        public void OnPlayerPropertiesUpdate(Photon.Realtime.Player targetPlayer, Hashtable changedProps)
        {
            if (targetPlayer.CustomProperties.ContainsKey(PlayerKey.UserId) == false)
            {
                return;
            }

            string userId = targetPlayer.CustomProperties[PlayerKey.UserId].ToString();
            Player player = XRSocialSDK.GetUser(userId);

            if (player == null)
            {
                Debug.Log("Can't find user.");
                return;
            }

            if (changedProps.ContainsKey(PlayerKey.UserId))
            {
                changedProps.Remove(PlayerKey.UserId);
            }

            if (changedProps.ContainsKey(PlayerKey.AllowInvite))
            {
                bool allow = (bool)changedProps[PlayerKey.AllowInvite];
                player.SetAllowInvite(allow, false);

                changedProps.Remove(PlayerKey.AllowInvite);
            }

            var eProp = changedProps.GetEnumerator();

            while (eProp.MoveNext() == true)
            {
                if (eProp.Current.Value == null)
                {
                    player.RemoveUserProperties(eProp.Current.Key.ToString(), false);
                }
                else
                {
                    player.AddUserProperties(new KeyValuePair <object, object>(eProp.Current.Key, eProp.Current.Value), false);
                }
            }
        }
示例#2
0
        public static void OnPhotonCallbackEvent(PhotonEvent photonEvent)
        {
            switch (photonEvent.action)
            {
            case PhotonAction.Connect:
                foreach (var item in new List <SalinCallbacks>(callbacks))
                {
                    item.OnConnectedSocialServer();
                }
                break;

            case PhotonAction.Disconnect:
                foreach (var item in new List <SalinCallbacks>(callbacks))
                {
                    item.OnDisconnectedSocialServer(photonEvent.disconnectCause);
                }
                break;

            case PhotonAction.CreateRoom:
                foreach (var item in new List <SalinCallbacks>(callbacks))
                {
                    item.OnCreateRoom();
                }
                break;

            case PhotonAction.JoinRoom:
                foreach (var item in new List <SalinCallbacks>(callbacks))
                {
                    item.OnJoinRoom();
                }
                break;

            case PhotonAction.LeaveRoom:
                foreach (var item in new List <SalinCallbacks>(callbacks))
                {
                    item.OnLeaveRoom();
                }
                break;

            case PhotonAction.JoinLobby:
                foreach (var item in new List <SalinCallbacks>(callbacks))
                {
                    item.OnJoinedLobby();
                }
                break;

            case PhotonAction.LeaveLobby:
                foreach (var item in new List <SalinCallbacks>(callbacks))
                {
                    item.OnLeftLobby();
                }
                break;

            case PhotonAction.UpdateRoomList:
                foreach (var item in new List <SalinCallbacks>(callbacks))
                {
                    item.OnRoomListUpdate();
                }
                break;

            case PhotonAction.ChangePassword:
                foreach (var item in new List <SalinCallbacks>(callbacks))
                {
                    item.OnChangePassword();
                }
                break;

            case PhotonAction.BlockPlayer:
                foreach (var item in new List <SalinCallbacks>(callbacks))
                {
                    item.OnUserBlock();
                }
                break;

            case PhotonAction.KickPlayer:
                Player kickedPlayer = new Player(photonEvent.pData);
                foreach (var item in new List <SalinCallbacks>(callbacks))
                {
                    item.OnUserKick(kickedPlayer);
                }
                break;

            case PhotonAction.UpdateRoomProperties:
                foreach (var item in new List <SalinCallbacks>(callbacks))
                {
                    item.OnUpdateRoomProperties(photonEvent.prop);
                }
                break;

            case PhotonAction.PlayerEnteredRoom:
                Player enterPlayer = XRSocialSDK.GetUser(photonEvent.data);
                foreach (var item in new List <SalinCallbacks>(callbacks))
                {
                    item.OnPlayerEnteredRoom(enterPlayer);
                }
                break;

            case PhotonAction.PlayerLeftRoom:
                Player leftPlayer = new Player(photonEvent.pData);
                foreach (var item in new List <SalinCallbacks>(callbacks))
                {
                    item.OnPlayerLeftRoom(leftPlayer);
                }
                break;

            case PhotonAction.Message:
                if (string.IsNullOrEmpty(photonEvent.mData.targetrId) == false &&
                    photonEvent.mData.targetrId != UserManager.Instance.userID)
                {
                    return;
                }
                foreach (var item in new List <SalinCallbacks>(callbacks))
                {
                    item.OnReceiveMessage(photonEvent.mData);
                }
                break;
            }
        }