Пример #1
0
        private void InitializeEvents()
        {
            _photonClient.StateChanged += (oldState, newState) =>
            {
                if (newState != ClientState.Joined)
                {
                    var reason = PhotonUtils.ConvertPhotonDisconnectCause(_photonClient.DisconnectedCause);
                    DisconnectedSubject.OnNext(reason);
                }
            };

            _photonClient.EventReceived += data =>
            {
                switch (data.Code)
                {
                case EventCode.Join:
                    AddClient(new Client((int)data.Parameters[ParameterCode.ActorNr]), true);
                    break;

                case EventCode.Leave:
                    RemoveClient((int)data.Parameters[ParameterCode.ActorNr]);
                    if (data.Parameters.ContainsKey(ParameterCode.MasterClientId))
                    {
                        int newHostId = (int)data.Parameters[ParameterCode.MasterClientId];
                        if (newHostId != Server.ClientId)
                        {
                            MigrateHost(newHostId, Server.ClientId, false);
                        }
                    }
                    break;

                case EventCode.PropertiesChanged:
                    var properties = (Hashtable)data.Parameters[ParameterCode.Properties];
                    if (properties.ContainsKey(GamePropertyKey.MasterClientId))
                    {
                        int newHostId = (int)properties[GamePropertyKey.MasterClientId];
                        MigrateHost(newHostId, Server.ClientId, false);
                    }
                    break;

                case PhotonEventCode:
                    var buffer = (PhotonArrayWrapper)data.Parameters[ParameterCode.Data];
                    var evt    = Serializer.Deserialize(buffer.Array, buffer.Length);
                    EventSubject.OnNext(evt);
                    break;
                }
            };
        }
Пример #2
0
        private void InitializeEvents()
        {
            _photonClient.StateChanged += (oldState, newState) =>
            {
                switch (newState)
                {
                case ClientState.Disconnecting:
                    State = ConnectionState.Disconnecting;
                    break;

                case ClientState.Disconnected:
                    var reason = PhotonUtils.ConvertPhotonDisconnectCause(_photonClient.DisconnectedCause);
                    _disconnectedSubject.OnNext(reason);
                    State = ConnectionState.Disconnected;
                    break;
                }
            };
        }