コード例 #1
0
 private static FindMatchResponse GetMatchFoundResponse(RtSession s)
 {
     return(new FindMatchResponse(new GSRequestData()
                                  .AddString("host", s.HostUrl)
                                  .AddNumber("port", (double)s.PortId)
                                  .AddString("accessToken", s.AccessToken)));
 }
コード例 #2
0
 private void OnStartRtSession(RtSession s)
 {
     foreach (var l in _startSessionListeners)
     {
         l(s);
     }
 }
コード例 #3
0
        private void OnMatchFound(MatchFoundMessage m)
        {
            var s = new RtSession(m);

            foreach (var l in _onMatchFoundListeners)
            {
                l(s);
            }
        }
コード例 #4
0
        /**
         * <summary>Given RtSession details will establish the Real Time Session connection</summary>
         * <param name="s">RtSession details of the Real Time session to connect to</param>
         */
        public void ConnectSession(RtSession s)
        {
            _gameSparksRtUnity.Configure(
                new FindMatchResponse(new GSRequestData()                        // In order to create a new RtSession
                                      .AddString("host", s.HostUrl)              // we need a 'FindMatchResponse' that
                                      .AddNumber("port", (double)s.PortId)       // we can then us to configure a Real
                                      .AddString("accessToken", s.AccessToken)), // Time Session from

                // OnPlayerConnected / Disconnected Callbacks
                peerId => { OnLogEntry(LogEntryFactory.CreatePeerConnectedLogEntry(peerId)); },
                peerId => { OnLogEntry(LogEntryFactory.CreatePeerDisconnectedLogEntry(peerId)); },

                state => // OnRtReady Callback
            {
                OnLogEntry(LogEntryFactory.CreateSessionStateLogEntry(state));
                foreach (var l in _onRtReady)
                {
                    l(state);
                }
            },

                packet => // OnPacketReceived Callback
            {
                switch (packet.OpCode)
                {
                case (int)OpCode.Ping:
                    OnPingReceived(packet);
                    break;

                case (int)OpCode.Pong:
                    OnPongReceived(packet);
                    break;

                default:
                    OnPacketReceived(packet);
                    break;
                }
            });

            _rtConnected = true;
            _gameSparksRtUnity.Connect(); // Connect
            OnLogEntry(LogEntryFactory.CreateSessionJoinLogEntry());
        }
コード例 #5
0
        /**
         * <summary>Given RtSession details will establish the Real Time Session connection</summary>
         * <param name="s">RtSession details of the Real Time session to connect to</param>
         */
        public void ConnectSession(RtSession s)
        {
            _gameSparksRtUnity.Configure(

                // Note a MatchFoundMessage can also be used here.
                // Gets the message needed to configure a real time session.
                GetMatchFoundResponse(s),

                // OnPlayerConnected / Disconnected Callbacks
                peerId => { OnLogEntry(LogEntryFactory.CreatePeerConnectedLogEntry(peerId)); },
                peerId => { OnLogEntry(LogEntryFactory.CreatePeerDisconnectedLogEntry(peerId)); },

                state => // OnRtReady Callback
            {
                _rtConnected = state;
                foreach (var l in _onRtReady)
                {
                    l(state);
                }
                OnLogEntry(LogEntryFactory.CreateSessionStateLogEntry(state));
            },

                packet => // OnPacketReceived Callback
            {
                switch (packet.OpCode)
                {
                case (int)OpCode.Ping:
                    OnPingReceived(packet);
                    return;

                case (int)OpCode.Pong:
                    OnPongReceived(packet);
                    return;

                default:
                    OnPacketReceived(packet);
                    return;
                }
            });

            _gameSparksRtUnity.Connect(); // Connect
            OnLogEntry(LogEntryFactory.CreateSessionJoinLogEntry());
        }
コード例 #6
0
 public static ILogEntry CreateMatchFoundLogEntry(RtSession rtSession)
 {
     return(new MatchFoundLog(rtSession));
 }
コード例 #7
0
 public MatchFoundLog(RtSession rtSession)
 {
     _rtSession = rtSession;
     _createdAt = DateTime.UtcNow;
 }