Ejemplo n.º 1
0
        public async Task CreateAccount(ICreateAccountParameters createAccountParameters)
        {
            var paramsValidationResult = _accountActions.CheckAccountCreateParameters(createAccountParameters);

            if (paramsValidationResult.FaultingParameter != WhichParameter.None)
            {
                _accountDialogDisplayActions.ShowCreateParameterValidationError(paramsValidationResult);
                return;
            }

            var checkNameOperation = _networkOperationFactory.CreateSafeBlockingOperation(
                async() => await _accountActions.CheckAccountNameWithServer(createAccountParameters.AccountName),
                SetInitialStateAndShowError,
                SetInitialStateAndShowError);

            if (!await checkNameOperation.Invoke())
            {
                return;
            }

            var nameResult = checkNameOperation.Result;

            if (nameResult != AccountReply.Continue)
            {
                _accountDialogDisplayActions.ShowCreateAccountServerError(nameResult);
                return;
            }

            var result = await _accountDialogDisplayActions.ShowCreatePendingDialog();

            if (result == XNADialogResult.Cancel)
            {
                return;
            }

            var createAccountOperation = _networkOperationFactory.CreateSafeBlockingOperation(
                async() => await _accountActions.CreateAccount(createAccountParameters),
                SetInitialStateAndShowError,
                SetInitialStateAndShowError);

            if (!await createAccountOperation.Invoke())
            {
                return;
            }

            var accountResult = createAccountOperation.Result;

            if (accountResult != AccountReply.Created)
            {
                _accountDialogDisplayActions.ShowCreateAccountServerError(accountResult);
                return;
            }

            _gameStateActions.ChangeToState(GameStates.Initial);
            _accountDialogDisplayActions.ShowSuccessMessage();
        }
Ejemplo n.º 2
0
 private bool AnyFieldsStillEmpty(ICreateAccountParameters parameters)
 {
     return(new[]
     {
         parameters.AccountName,
         parameters.Password,
         parameters.ConfirmPassword,
         parameters.RealName,
         parameters.Location,
         parameters.Email
     }.Any(x => x.Length == 0));
 }
Ejemplo n.º 3
0
        public CreateAccountParameterResult CheckAccountCreateParameters(ICreateAccountParameters parameters)
        {
            if (AnyFieldsStillEmpty(parameters))
            {
                return(new CreateAccountParameterResult(WhichParameter.All, DialogResourceID.ACCOUNT_CREATE_FIELDS_STILL_EMPTY));
            }

            if (_createAccountParameterValidator.AccountNameIsNotLongEnough(parameters.AccountName))
            {
                return(new CreateAccountParameterResult(WhichParameter.AccountName, DialogResourceID.ACCOUNT_CREATE_NAME_TOO_SHORT));
            }

            if (_createAccountParameterValidator.AccountNameIsTooObvious(parameters.AccountName))
            {
                return(new CreateAccountParameterResult(WhichParameter.AccountName, DialogResourceID.ACCOUNT_CREATE_NAME_TOO_OBVIOUS));
            }

            if (_createAccountParameterValidator.PasswordMismatch(parameters.Password, parameters.ConfirmPassword))
            {
                return(new CreateAccountParameterResult(WhichParameter.Confirm, DialogResourceID.ACCOUNT_CREATE_PASSWORD_MISMATCH));
            }

            if (_createAccountParameterValidator.PasswordIsTooShort(parameters.Password))
            {
                return(new CreateAccountParameterResult(WhichParameter.Password, DialogResourceID.ACCOUNT_CREATE_PASSWORD_TOO_SHORT));
            }

            if (_createAccountParameterValidator.PasswordIsTooObvious(parameters.Password))
            {
                return(new CreateAccountParameterResult(WhichParameter.Password, DialogResourceID.ACCOUNT_CREATE_PASSWORD_TOO_OBVIOUS));
            }

            if (_createAccountParameterValidator.EmailIsInvalid(parameters.Email))
            {
                return(new CreateAccountParameterResult(WhichParameter.Email, DialogResourceID.ACCOUNT_CREATE_EMAIL_INVALID));
            }

            return(new CreateAccountParameterResult(WhichParameter.None));
        }
Ejemplo n.º 4
0
        public async Task <AccountReply> CreateAccount(ICreateAccountParameters parameters)
        {
            var createAccountPacket = new PacketBuilder(PacketFamily.Account, PacketAction.Create)
                                      .AddShort(1337) //eoserv doesn't
                                      .AddByte(42)    //validate these values
                                      .AddBreakString(parameters.AccountName)
                                      .AddBreakString(parameters.Password)
                                      .AddBreakString(parameters.Location)
                                      .AddBreakString(parameters.Location)
                                      .AddBreakString(parameters.Email)
                                      .AddBreakString(Dns.GetHostName())
                                      .AddBreakString(_hdSerialNumberService.GetHDSerialNumber())
                                      .Build();

            var response = await _packetSendService.SendEncodedPacketAndWaitAsync(createAccountPacket);

            if (IsInvalidResponse(response))
            {
                throw new EmptyPacketReceivedException();
            }

            return((AccountReply)response.ReadShort());
        }