예제 #1
0
 void TimerFunc(object obj)
 {
     lock (_MessageQueue)
     {
         UDPFrameData data = new UDPFrameData();
         data.FrameNumber = _FrameNumber;
         Console.WriteLine("====================_MessageQueue.Count=" + _MessageQueue.Count);
         while (_MessageQueue.Count > 0)
         {
             var msg = _MessageQueue.Dequeue();
             data.Msgs.Add(ByteString.CopyFrom(msg));
         }
         Facade.Instance._GameServer.Send(data, _UserIds);
         _FrameNumber++;
     }
 }
예제 #2
0
 void OnProcessMsg(UDPFrameData message)
 {
     //Debug.LogError("OnProcessMsg(UDPFrameData message) frame number=" + message.FrameNumber);
     if (_FrameMessages.Count > 0)
     {
         int lastFrame = _FrameMessages.ElementAt(_FrameMessages.Count - 1).Value.FrameNumber;
         //Debug.LogError("lastFrame=" + lastFrame + ", message.FrameNumber=" + message.FrameNumber);
         if (message.FrameNumber >= lastFrame + 1)
         //if (message.FrameNumber > lastFrame + 1)
         //{
         //    // supply frame
         //    _PartialFrameMessages.Add(message.FrameNumber, message);
         //    // request frame [lastFrame+1, message.FrameNumber-1]
         //}
         //else if (message.FrameNumber == lastFrame + 1)
         {
             _FrameMessages.Add(message.FrameNumber, message);
         }
         // message.FrameNumber <= lastFrame
         // use the newest message.
         else
         {
             int firstFrame = _FrameMessages.ElementAt(0).Value.FrameNumber;
             if (message.FrameNumber >= firstFrame)
             {
                 _FrameMessages[message.FrameNumber] = message;
             }
         }
     }
     else
     {
         if (message.FrameNumber >= CurGameFrame + 1)
         //if (message.FrameNumber > CurGameFrame + 1)
         //{
         //_PartialFrameMessages.Add(message.FrameNumber, message);
         //}
         //else if (message.FrameNumber == CurGameFrame + 1)
         {
             _FrameMessages.Add(message.FrameNumber, message);
         }
     }
 }