Пример #1
0
 public static void WriteOpcode(this NetOutgoingMessage msg, NetOpcodes oc)
 {
     msg.Write((byte)oc);
 }
Пример #2
0
 // Handles a relevent data packet
 public void HandlePacket(NetOpcodes oc, NetIncomingMessage msg)
 {
     GameClient client = _netManager.ClientList[msg.SenderConnection];
     switch (oc)
     {
         case NetOpcodes.StationConfirm:
             {
                 if (_clientWaiting[client])
                     _clientWaiting[client] = false;
                 else
                     Debug.LogWarning("The client download status is out of sync with the server.");
             }
             break;
         case NetOpcodes.StationFailure:
             {
                 _clientFails[client]++;
                 string ip = client.NetConnection.RemoteEndPoint.Address.ToString();
                 Debug.LogWarning("Client " + ip + " has had " + _clientFails[client] + " failed download(s).");
                 if (_clientFails[client] < 3)
                 {
                     Debug.LogWarning("Restarting download for client " + ip + ".");
                     _clientWaiting[client] = true;
                     _clientStatus[client] = 0;
                     NetOutgoingMessage mes = _netManager.CreateMessage();
                     mes.WriteOpcode(NetOpcodes.StationSend);
                     mes.Write(_stationData.Count);
                     mes.Write(_totalLength);
                     mes.Write(_checksum);
                     _netManager.SendToClient(mes, client.NetConnection);
                 }
                 else
                 {
                     Debug.LogError("Client " + ip + " has had 3 failed downloads. Disconnecting client.");
                     _clientFails.Remove(client);
                     _clientStatus.Remove(client);
                     _clientWaiting.Remove(client);
                     client.NetConnection.Disconnect("Your download of the station files has failed too many times.");
                 }
             }
             break;
         default:
             Debug.LogWarning("StationProvider was passed an incorrect type of message: " + oc);
             break;
     }
 }