void ParseMessage_ProtocolOne(string[] segments)
    {
        int commandIndex = NetworkCommand.GetCommandIndex(segments[1]);

        switch (commandIndex)
        {
        case (int)NetworkCommandType.AccountCreated:
        {
            NotifyAccountCreated_One();
            break;
        }

        case (int)NetworkCommandType.AccountCreationFailed:
        {
            NotifyAccountCreationFailed_One(segments);
            break;
        }

        case (int)NetworkCommandType.LoginSuccess:
        {
            HandleLoginSuccess_One(segments);
            break;
        }

        case (int)NetworkCommandType.LoginFail:
        {
            HandleLoginFail_One(segments);
            break;
        }

        case (int)NetworkCommandType.LobbyMessage:
        {
            HandleLobbyMessage_One(segments);
            break;
        }

        case (int)NetworkCommandType.SyncForeignAccount:
        {
            SyncForeignAccount_One(segments);
            break;
        }

        case (int)NetworkCommandType.Heartbeat:
        {
            ReturnCirculation_One();
            break;
        }

        case (int)NetworkCommandType.PrivateMessage:
        {
            ProcessPrivateMessage_One(segments);
            break;
        }

        case (int)NetworkCommandType.SyncFriend:
        {
            SyncFriend_One(segments);
            break;
        }

        case (int)NetworkCommandType.FriendRequest:
        {
            HandleFriendRequest_One(segments);
            break;
        }

        case (int)NetworkCommandType.AddFriend:
        {
            AddFriend_One(segments);
            break;
        }

        case (int)NetworkCommandType.RemoveFriend:
        {
            RemoveFriend_One(segments);
            break;
        }

        case (int)NetworkCommandType.MatchCreated:
        {
            HandleMatchCreatedMessage_One(segments);
            break;
        }

        case (int)NetworkCommandType.EndMatch:
        {
            HandleMatchEnded_One(segments);
            break;
        }

        case (int)NetworkCommandType.SyncMatchParticipants:
        {
            SyncMatchState_One(segments);
            break;
        }

        case (int)NetworkCommandType.JoinMatchResult:
        {
            HandleJoinResult_One(segments);
            break;
        }

        case (int)NetworkCommandType.SyncMatchSpectator:
        {
            HandleSpectatorSync_One(segments);
            break;
        }

        case (int)NetworkCommandType.SpectateMatchResult:
        {
            HandleSpectateResult_One(segments);
            break;
        }

        case (int)NetworkCommandType.RemoveSpectator:
        {
            HandleSpectatorDeparture_One(segments);
            break;
        }

        case (int)NetworkCommandType.MatchMessage:
        {
            HandleMatchChatMessage_One(segments);
            break;
        }

        case (int)NetworkCommandType.UserLeftMatchInProg:
        {
            HandleMatchInProgLeft_One(segments);
            break;
        }

        case (int)NetworkCommandType.SyncGamePiece:
        {
            HandleGamePieceSync_One(segments);
            break;
        }

        case (int)NetworkCommandType.EndGamePieceSync:
        {
            HandlePieceSyncComplete_One(segments);
            break;
        }

        case (int)NetworkCommandType.NetworkPieceMoveEvent:
        {
            HandleNetworkPieceMoveEvent_One(segments);
            break;
        }

        case (int)NetworkCommandType.StartMatch:
        {
            HandleStartMatch_One(segments);
            break;
        }

        case (int)NetworkCommandType.TurnStateSync:
        {
            HandleTurnSync_One(segments);
            break;
        }

        case (int)NetworkCommandType.ProcessAttack:
        {
            HandleProcessAttack_One(segments);
            break;
        }

        default:
        {
            EventSink.InvokeStandardLogEvent
                (new LogEventArgs("Unknown Message: " + segments[1]));
            break;
        }
        }
    }
        private void ParseMessage_ProtocolOne(string clientId, string[] segments)
        {
            if (ServerCore.DebugMode)
            {
                Console.WriteLine("Processing Command: " + segments[1]);
            }

            //Protocol One Dictates Command Type Comes From Segment One.
            int commandIndex = NetworkCommand.GetCommandIndex(segments[1]);

            switch (commandIndex)
            {
            case (int)NetworkCommandType.Login:
            {
                HandleAccountLoginRequest_One(clientId, segments);
                break;
            }

            case (int)NetworkCommandType.CreateAccount:
            {
                HandleAccountCreationRequest_One(clientId, segments);
                break;
            }

            case (int)NetworkCommandType.LobbyMessage:
            {
                HandleLobbyMessage_One(clientId, segments);
                break;
            }

            case (int)NetworkCommandType.LogOut:
            {
                HandleLogout_One(clientId);
                break;
            }

            case (int)NetworkCommandType.Heartbeat:
            {
                HandleCirculation_One(clientId);
                break;
            }

            case (int)NetworkCommandType.PrivateMessage:
            {
                HandlePrivateMessage_One(segments);
                break;
            }

            case (int)NetworkCommandType.AddFriend:
            {
                HandleFriendAddition_One(clientId, segments);
                break;
            }

            case (int)NetworkCommandType.FriendRequest:
            {
                HandleFriendRequest_One(clientId, segments);
                break;
            }

            case (int)NetworkCommandType.RemoveFriend:
            {
                HandleFriendRemoval_One(clientId, segments);
                break;
            }

            case (int)NetworkCommandType.CreateMatch:
            {
                AttemptMatchCreation_One(clientId, segments);
                break;
            }

            case (int)NetworkCommandType.EndMatch:
            {
                EndMatch_One(segments);
                break;
            }

            case (int)NetworkCommandType.AttemptJoinMatch:
            {
                ProcessJoinMatchAttempt_One(clientId, segments);
                break;
            }

            case (int)NetworkCommandType.SpectateMatch:
            {
                ProcessSpectateMatchRequest_One(clientId, segments);
                break;
            }

            case (int)NetworkCommandType.MatchMessage:
            {
                HandleMatchMessage_One(segments);
                break;
            }

            case (int)NetworkCommandType.SyncGamePiece:
            {
                HandleGamePieceSync_One(segments);
                break;
            }

            case (int)NetworkCommandType.EndGamePieceSync:
            {
                HandleEndPieceSync_One(segments);
                break;
            }

            case (int)NetworkCommandType.NetworkPieceMoveEvent:
            {
                HandleNetworkPieceMove_One(segments);
                break;
            }

            case (int)NetworkCommandType.TurnStateUpdate:
            {
                HandleTurnStateUpdate_One(segments);
                break;
            }

            case (int)NetworkCommandType.SyncAttackTarget:
            {
                HandleSyncAttackTarget_One(segments);
                break;
            }

            case (int)NetworkCommandType.ProcessAttack:
            {
                ProcessAttackSyncComplete_One(segments);
                break;
            }

            default:
            {
                Console.WriteLine
                    ("Unknown Network Command: {0}", segments[1]);
                break;
            }
            }
        }