Bricklayer.Client.Networking.MessageHandler.ProcessNetworkMessages C# (CSharp) Method

ProcessNetworkMessages() public method

The process network messages such as player's joining, moving, etc
public ProcessNetworkMessages ( ) : void
return void
        public void ProcessNetworkMessages()
        {
            NetIncomingMessage im; //Holder for the incoming message

            while ((im = NetManager.ReadMessage()) != null)
            {
                Debug.WriteLine(im.ToString());
                switch (im.MessageType)
                {
                    case NetIncomingMessageType.VerboseDebugMessage:
                    case NetIncomingMessageType.DebugMessage:
                    case NetIncomingMessageType.WarningMessage:
                    case NetIncomingMessageType.ErrorMessage:
                        Debug.WriteLine(im.ToString());
                        break;
                    case NetIncomingMessageType.StatusChanged:
                        switch ((NetConnectionStatus)im.ReadByte())
                        {
                                //When connected to the server
                            case NetConnectionStatus.Connected:
                                {
                                    Debug.WriteLine("{0} Connected", im.SenderEndPoint);
                                    //Once connected, switch to the lobby screen
                                    MainWindow.ScreenManager.SwitchScreen(new LobbyScreen());
                                    Game.CurrentGameState = GameState.Lobby;
                                    break;
                                }
                                //When disconnected from the server
                            case NetConnectionStatus.Disconnected:
                                {
                                    Debug.WriteLine("{0} Disconnected", im.SenderEndPoint);
                                    if (Game.CurrentGameState != GameState.Login)
                                    {
                                        Game.CurrentGameState = GameState.Login;
                                        if (Game.CurrentGameState == GameState.Game)
                                        {
                                            (MainWindow.ScreenManager.Current as GameScreen).SystemChat("Server connection disconnected.");
                                            (MainWindow.ScreenManager.Current as GameScreen).StatsLabel.Text = "Status: Disconnected.";
                                        }
                                    }
                                    else
                                    {
                                        string reason = im.ReadString();

                                        if (string.IsNullOrWhiteSpace(reason)) //Disconnect
                                        {
                                            if (MainWindow.ScreenManager.Current is LoginScreen)
                                                (MainWindow.ScreenManager.Current as LoginScreen).Login.Disconnected("Could not connect to server.", "[color:Gold]Error[/color]");
                                        }
                                        else //Denied/Kicked/Server Shut Down
                                        {
                                            string[] reasons = reason.Split(':');
                                            if (MainWindow.ScreenManager.Current is LoginScreen)
                                                (MainWindow.ScreenManager.Current as LoginScreen).Login.Disconnected(reasons[0], reasons[1]);
                                        }

                                    }
                                }
                                break;
                            case NetConnectionStatus.RespondedAwaitingApproval:
                                im.SenderConnection.Approve(NetManager.CreateMessage());
                                break;
                        }

                        break;
                    case NetIncomingMessageType.Data:
                        HandleDataMessage(im);

                        break;
                }
                NetManager.Recycle(im);
            }
        }