示例#1
0
      public void Server_StatusChanged(object sender, NetStatusEventArgs e)
      {
         // If a client disconnects, delete it from the list
         switch (e.Connection.Status)
         {
            case NetConnectionStatus.Disconnected:
               if (e.Connection.Tag != null)
               {
                  int id = PlayerList.GetPlayerID(e.Connection);
                  Log.Info("Client " + id + " disconnected : " + e.Reason);

                  // Notify other clients
                  BBMessage msg_back = new BBMessage();
                  msg_back.MsgDelPlayer(id, e.Reason);
                  BroadcastMsgExcept(msg_back.GetNetMessage(), NetChannel.ReliableUnordered, id);

                  // Notify
                  NotifyClientDisconnected(e.Connection);
                  // Delete the player from our list
                  PList.DelPlayer(PlayerList.GetPlayerID(e.Connection));
               }
               break;

            default:
               // display changes
               Log.Info(e.Connection + ": " + e.Connection.Status + " - " + e.Reason);
               break;
         }
      }