Esempio n. 1
0
        public async Task <ValuePair <TokenVm, string> > UserIdPasswordCreateTokenPairAsync(long userId, string password,
                                                                                            string deviceTokenId)
        {
            byte[] passwordHash = CreateUsersService.GetSha512Hash(password);
            using (MessengerDbContext context = contextFactory.Create())
            {
                User targetUser =
                    await context.Users.FirstOrDefaultAsync(user => user.Id == userId && user.Sha512Password.SequenceEqual(passwordHash) && !user.Deleted)
                    .ConfigureAwait(false);

                if (targetUser != null)
                {
                    string accessToken  = RandomExtensions.NextString(64);
                    string refreshToken = RandomExtensions.NextString(64);
                    Token  tokenPair    = new Token()
                    {
                        UserId       = userId,
                        AccessToken  = accessToken,
                        RefreshToken = refreshToken,
                        AccessTokenExpirationTime  = DateTime.UtcNow.AddHours(ACCESS_LIFETIME_HOUR).ToUnixTime(),
                        RefreshTokenExpirationTime = DateTime.UtcNow.AddHours(REFRESH_LIFETIME_HOUR).ToUnixTime(),
                        DeviceTokenId = deviceTokenId
                    };
                    string newPassword = RandomExtensions.NextString(CreateUsersService.PASSWORD_LENGTH);
                    targetUser.Sha512Password = CreateUsersService.GetSha512Hash(newPassword);
                    context.Users.Update(targetUser);
                    await context.Tokens.AddAsync(tokenPair).ConfigureAwait(false);

                    await context.SaveChangesAsync().ConfigureAwait(false);

                    return(new ValuePair <TokenVm, string>(TokenConverter.GetTokenVm(tokenPair), newPassword));
                }
            }
            throw new UserNotFoundException();
        }
Esempio n. 2
0
 public void RandomString_InvalidArgument_ThrowsException()
 {
     Assert.ThrowsException <ArgumentNullException>(() => RandomExtensions.RandomString(null, s_chars, 2));
     Assert.ThrowsException <ArgumentNullException>(() => _random.RandomString(null, 4));
     Assert.ThrowsException <ArgumentException>(() => _random.RandomString(Array.Empty <char>(), 4));
     Assert.ThrowsException <ArgumentOutOfRangeException>(() => _random.RandomString(s_chars, -1));
 }
Esempio n. 3
0
        public async Task <TokenVm> RefreshTokenPairAsync(long userId, string refreshToken)
        {
            using (MessengerDbContext context = contextFactory.Create())
            {
                Token target = await context.Tokens
                               .FirstOrDefaultAsync(token => token.RefreshToken == refreshToken && token.UserId == userId && !token.User.Deleted)
                               .ConfigureAwait(false);

                if (target != null)
                {
                    target.AccessToken  = RandomExtensions.NextString(64);
                    target.RefreshToken = RandomExtensions.NextString(64);
                    target.AccessTokenExpirationTime  = DateTime.UtcNow.AddHours(ACCESS_LIFETIME_HOUR).ToUnixTime();
                    target.RefreshTokenExpirationTime = DateTime.UtcNow.AddHours(REFRESH_LIFETIME_HOUR).ToUnixTime();
                    context.Tokens.Update(target);
                    await context.SaveChangesAsync().ConfigureAwait(false);

                    return(TokenConverter.GetTokenVm(target));
                }
                else
                {
                    throw new InvalidTokenException();
                }
            }
        }
Esempio n. 4
0
        public static bool FindTwinNumbers(Random rand)
        {
            List <int>            randomList = RandomExtensions.GenerateRandomList(rand, -1000, 10000, 10000);
            Dictionary <int, int> numbers    = new Dictionary <int, int>();

            //ShowList(randomList);

            foreach (var item in randomList)
            {
                if (numbers.ContainsKey(item))
                {
                    if (numbers.ContainsKey(item * -1))
                    {
                        Console.WriteLine("Found first Pair that sums to zero: " + item + " & " + (item * -1));
                        return(true);
                    }
                }
                else
                {
                    numbers.Add(item, 1);
                }
            }
            Console.WriteLine("No Pair found that sums to zero");
            return(false);
        }
Esempio n. 5
0
        public async Task <QRCodeContent> CreateQRCodeAsync(long userId, long nodeId)
        {
            var    sequence    = RandomExtensions.NextBytes(192);
            string sequenceStr = Convert.ToBase64String(sequence);

            QRCode qrCode = new QRCode
            {
                UserId       = userId,
                SequenceHash = GetSequenceHashSha512(sequenceStr)
            };

            using (MessengerDbContext context = contextFactory.Create())
            {
                bool isUserExists = await context.Users.AnyAsync(user => user.Id == userId).ConfigureAwait(false);

                if (!isUserExists)
                {
                    throw new ObjectDoesNotExistsException($"User with Id: {userId} does not found.");
                }

                await context.QRCodes.AddAsync(qrCode).ConfigureAwait(false);

                await context.SaveChangesAsync().ConfigureAwait(false);

                return(new QRCodeContent(qrCode.Id, qrCode.UserId, nodeId, sequenceStr));
            }
        }
Esempio n. 6
0
        public static void DrawGrid(Model model, Grid2d grid, List <Vector3> uPoints, List <Vector3> vPoints)
        {
            foreach (var cell in grid.GetCells())
            {
                var polygon = (Polygon)cell.GetCellGeometry();
                foreach (var vertex in polygon.Vertices)
                {
                    Debug.DrawPoint(model, vertex, MagentaMaterial);
                }
                var color = RandomExtensions.NextColor(random);
                foreach (var cellPiece in cell.GetTrimmedCellGeometry())
                {
                    var material = new Material(color.ToString(), new Color(color.Red, color.Green, color.Blue, 0.5), unlit: true);
                    var poly     = (Polygon)cellPiece;
                    if (poly.Vertices.Count >= 3)
                    {
                        model.AddElement(new Panel(poly, material: material));
                    }
                }
            }

            foreach (var pt in vPoints)
            {
                Debug.DrawPoint(model, pt, MagentaMaterial);
            }
            foreach (var pt in uPoints)
            {
                Debug.DrawPoint(model, pt, MagentaMaterial);
            }
        }
        public ObjectBuildRecord CreateRecord(Type type, IBuilder builder, BuildSession session)
        {
            var list = new List <TType>();

            RandomExtensions.Shuffle <TType>(list, _entries(builder, session), session.Random);
            return(new ObjectBuildRecord(type, list, false));
        }
Esempio n. 8
0
    IEnumerator Move()
    {
        while (this._isAlive)
        {
            yield return(Wait(0.5f));

            if (!this._isAlive)
            {
                yield break;
            }

            if (Body.velocity.sqrMagnitude >= MinSqrMagnitudeToMove)
            {
                continue;
            }

            var preferedRegion = UnityExtensions.CreateRectFromCamera(_camera, PreferedScreenPercentage);

            Vector2 moveDirection;

            if (preferedRegion.Contains(transform.position))
            {
                moveDirection = Random.insideUnitCircle;
            }
            else
            {
                var targetPosition = RandomExtensions.PointInsideRect(preferedRegion);
                moveDirection = targetPosition - new Vector2(transform.position.x, transform.position.y);
            }

            var impulse = Random.Range(MinImpulseForce, MaxImpulseForce);
            this.Body.AddForce(moveDirection.normalized * impulse, ForceMode2D.Impulse);
        }
    }
Esempio n. 9
0
        public void StartMoving(float speed)
        {
            float startPos = movementProperties.LeftXPosition;
            float endPos   = movementProperties.RightXPosition;

            // Randomize starting side
            if (RandomExtensions.RandomBoolean())
            {
                startPos = movementProperties.RightXPosition;
                endPos   = movementProperties.LeftXPosition;
            }

            //bar.position = bar.position.With(x: startPos);

            float totalDist   = movementProperties.DistanceBetweenPositions;
            float currentDist = Vector2.Distance(bar.localPosition, bar.localPosition.With(x: startPos));
            float percentage  = currentDist / totalDist;
            float duration    = speed * percentage;

            bar.DOMoveX(startPos, duration)
            .SetEase(movementProperties.Easing)
            .OnComplete(() =>
                        bar.DOMoveX(endPos, speed)
                        .SetEase(movementProperties.Easing)
                        .SetLoops(-1, LoopType.Yoyo));

            //bar.DOMoveX(endPos, speed)
            //    .SetEase(movementProperties.Easing)
            //    .SetLoops(-1, LoopType.Yoyo);
        }
        private static Material _nextMaterial()
        {
            var color          = RandomExtensions.NextColor(_random);
            var colorWithAlpha = new Color(color.Red, color.Green, color.Blue, 0.7);

            return(new Material(color.ToString(), colorWithAlpha, unlit: true));
        }
    private void ScrollBackground(float duration, Ease easing)
    {
        float randomDistance = RandomExtensions.RandomGaussian(distance, variation);

        transform.DOKill();
        transform.DOMoveY(transform.position.y - randomDistance, duration, false).SetEase(ease).OnComplete(ResetPosition);
    }
Esempio n. 12
0
        public async Task CreateOrEditChannel()
        {
            var editableChannel = fillTestDbHelper.Channels.FirstOrDefault();
            var validUser       = editableChannel.ChannelUsers.FirstOrDefault(channelUser => channelUser.ChannelUserRole >= ChannelUserRole.Administrator);
            var invalidUser     = editableChannel.ChannelUsers.FirstOrDefault(channelUser => channelUser.ChannelUserRole == ChannelUserRole.Subscriber);

            editableChannel.ChannelName = "Edited channel name";
            var actualChannel = await createChannelsService.CreateOrEditChannelAsync(ChannelConverter.GetChannel(editableChannel), validUser.UserId, null);

            Assert.True(editableChannel.ChannelName == actualChannel.ChannelName);
            await Assert.ThrowsAsync <PermissionDeniedException>(async() =>
                                                                 await createChannelsService.CreateOrEditChannelAsync(ChannelConverter.GetChannel(editableChannel), invalidUser.UserId, null));

            var users              = fillTestDbHelper.Users.Skip(1);
            var creator            = fillTestDbHelper.Users.FirstOrDefault();
            var newExpectedChannel = new ChannelVm
            {
                About        = RandomExtensions.NextString(10),
                ChannelName  = "Created channel",
                ChannelUsers = users.Select(user => new ChannelUserVm
                {
                    UserId          = user.Id,
                    ChannelUserRole = ChannelUserRole.Subscriber
                }).ToList()
            };
            var newActualChannel = await createChannelsService.CreateOrEditChannelAsync(newExpectedChannel, creator.Id, newExpectedChannel.ChannelUsers);

            Assert.True(newExpectedChannel.ChannelUsers.Count() + 1 == newActualChannel.ChannelUsers.Count());
        }
    /// <summary>
    /// 生成新密钥、初始向量(IV)、验证标记。
    /// </summary>
    /// <param name="keyMaxSize">给定的密钥最大尺寸(默认以位为单位)。</param>
    /// <param name="nonceMaxSize">给定的初始向量(IV)最大尺寸(默认以位为单位)。</param>
    /// <param name="tagMaxSize">给定的验证标记最大尺寸(默认以位为单位)。</param>
    public virtual void Generate(int keyMaxSize, int nonceMaxSize, int tagMaxSize)
    {
        base.Generate(keyMaxSize, nonceMaxSize);

        Tag        = RandomExtensions.GenerateByteArray(GetKeyByteArrayLength(tagMaxSize));
        TagMaxSize = tagMaxSize;
    }
Esempio n. 14
0
    void LateUpdate()
    {
        foreach (SpawnInfo spawnInfo in spawnInfos)
        {
            if (Time.time >= spawnInfo.nextSpawn && spawnInfo.spawned.Count < spawnInfo.maxSpawned)
            {
                GameObject prefab = RandomExtensions.RandomElement(spawnInfo.prefabs);
                // TODO: Set position properly so it doesn't spawn inside the camera's view
                Vector2           position  = RandomExtensions.RandomInsideBounds(spawnBounds);
                GameObject        instance  = Instantiate(prefab, position, Quaternion.identity);
                FloatingComponent component = instance.GetComponent <FloatingComponent>();
                component.SpawnTag = new SpawnTag()
                {
                    spawnInfo = spawnInfo, spawner = this
                };

                // Note, after instantiating this object, start won't be called until next frame. To prevent other objects from running
                // into trouble trying to use a non-initialised floating component, the script execution of the spawner is set to be after
                // everything else.

                // Add as spawned by this spawner
                Add(component);

                spawnInfo.nextSpawn = Time.time + spawnInfo.spawnRate;
            }
        }
    }
Esempio n. 15
0
        public async Task CreateUser()
        {
            string password = RandomExtensions.NextString(10);
            UserVm user     = new UserVm
            {
                NameFirst  = RandomExtensions.NextString(20),
                NameSecond = RandomExtensions.NextString(20),
                About      = RandomExtensions.NextString(50),
                Photo      = RandomExtensions.NextString(100),
                Phones     = new List <UserPhoneVm>
                {
                    new UserPhoneVm
                    {
                        CountryCode      = 7,
                        SubscriberNumber = 9131743886,
                        IsMain           = true,
                        UserId           = 1000
                    }
                },
                Emails = new List <string>
                {
                    "*****@*****.**"
                }
            };
            var actualUser = await createUsersService.CreateNewUserAsync(user, 1, true, password);

            Assert.Equal(user.NameFirst, actualUser.FirstValue.NameFirst);
            Assert.Equal(user.NameSecond, actualUser.FirstValue.NameSecond);
            Assert.Equal(user.About, actualUser.FirstValue.About);
            Assert.Equal(user.Photo, actualUser.FirstValue.Photo);
            Assert.Equal(user.Phones.FirstOrDefault().FullNumber, actualUser.FirstValue.Phones.FirstOrDefault().FullNumber);
            Assert.Equal(user.Emails, actualUser.FirstValue.Emails);
            Assert.Equal(password, actualUser.SecondValue);
        }
Esempio n. 16
0
    // Update is called once per frame
    void Update()
    {
        if (structure.Weapon)
        {
            if (acquireTargetCooldown.Check(Time.time))
            {
                ShipStructure[] potentialTargets = shipManager.FindNearbyShips(structure, maxAcquireDistance).ToArray();
                if (potentialTargets.Length > 0)
                {
                    currentTarget = RandomExtensions.RandomElement(potentialTargets);
                    loseTargetCooldown.Reset(Time.time);
                }
            }

            if (currentTarget && loseTargetCooldown.Check(Time.time) && structure.DistanceTo(currentTarget) > maxAcquireDistance)
            {
                currentTarget = null;
            }

            if (currentTarget)
            {
                structure.Weapon.Aim(currentTarget.transform.position);
                structure.Weapon.Fire();
            }
        }
    }
Esempio n. 17
0
    private IEnumerator SpawnCardEvent()
    {
        SelectCardInDeck(_poolGameCard);
        SelectCardInDeck(_poolCardArea);
        yield return(new WaitForSeconds(0.3f));

        var count       = 1;
        var arrayRarity = new[] { CardRarity.Common, CardRarity.Rare, CardRarity.Legendary };
        var rarity      = arrayRarity[RandomExtensions.GetRandomElementDictionary(DropChance.ChanceEvent)];

        foreach (var card in _poolCardEvent)
        {
            if (count > 3)
            {
                break;
            }
            if (card.activeSelf)
            {
                continue;
            }
            var cardDisplay = card.GetComponent <ActionsWithCards>();
            var randomCard  = _objectStorage.GetRandomCardByType(SubTypeCard.GameEvent, rarity);
            //var randomCard = _objectStorage.GetCardByName("random_event");
            cardDisplay.СhangeCardType(randomCard);
            cardDisplay.SetIdCard(count);
            cardDisplay.CardGame.DisplayCardInGame(card);
            cardDisplay.SetDependecies(_publisher, _animaManager);
            card.SetActive(true);
            _animaManager.SetStateAnimation(card, "dist_num", count);
            yield return(new WaitForSeconds(0.2f));

            ++count;
        }
    }
        public async Task <string> AddNewOperationAsync(long nodeId, long userId)
        {
            using (MessengerDbContext context = contextFactory.Create())
            {
                long currentTime          = DateTime.UtcNow.ToUnixTime();
                var  uncomplededOperation = await context.ChangeUserNodeOperations
                                            .FirstOrDefaultAsync(opt => !opt.Completed && opt.UserId == userId && opt.ExpirationTime > currentTime).ConfigureAwait(false);

                if (uncomplededOperation != null)
                {
                    context.Remove(uncomplededOperation);
                }
                ChangeUserNodeOperation operation = new ChangeUserNodeOperation
                {
                    NodeId         = nodeId,
                    UserId         = userId,
                    OperationId    = RandomExtensions.NextString(64),
                    Completed      = false,
                    RequestTime    = currentTime,
                    ExpirationTime = currentTime + (long)TimeSpan.FromDays(1).TotalSeconds
                };
                await context.AddAsync(operation).ConfigureAwait(false);

                await context.SaveChangesAsync().ConfigureAwait(false);

                return(operation.OperationId);
            }
        }
Esempio n. 19
0
        public async Task <FileInfoVm> SaveFileAsync(long?userId, string filename, string url, long fileSize, byte[] fileHash, string storageType, ImageMetadata imageMetadata = null)
        {
            using (MessengerDbContext context = contextFactory.Create())
            {
                FileInfo newFile = new FileInfo
                {
                    Id            = RandomExtensions.NextString(64),
                    FileName      = filename,
                    Url           = url,
                    UploaderId    = userId,
                    UploadDate    = DateTime.UtcNow.ToUnixTime(),
                    NodeId        = NodeSettings.Configs.Node.Id,
                    Size          = fileSize,
                    Hash          = fileHash,
                    Storage       = storageType,
                    NumericId     = await poolsService.GetFileIdAsync().ConfigureAwait(false),
                    ImageMetadata = imageMetadata
                };
                await context.FilesInfo.AddAsync(newFile).ConfigureAwait(false);

                await context.SaveChangesAsync().ConfigureAwait(false);

                return(FileInfoConverter.GetFileInfoVm(newFile, false));
            }
        }
Esempio n. 20
0
        private async Task <List <Channel> > AddChannelsAsync(int count = 5)
        {
            List <Channel> channels = new List <Channel>();

            for (int i = 0; i < count; i++)
            {
                var channelCreator = await _context.Users.LastOrDefaultAsync();

                channels.Add(new Channel
                {
                    About        = RandomExtensions.NextString(20),
                    Deleted      = false,
                    ChannelName  = "Channel " + i,
                    Tag          = RandomExtensions.NextString(10).ToUpper(),
                    ChannelUsers = _context.Users.ToList().Select(user => new ChannelUser
                    {
                        UserId          = user.Id,
                        Banned          = false,
                        Deleted         = false,
                        SubscribedTime  = DateTime.UtcNow.ToUnixTime(),
                        ChannelUserRole = user.Id == channelCreator.Id ? ChannelUserRole.Creator : ChannelUserRole.Subscriber
                    }).ToList(),
                    NodesId = RandomExtensions.GetRandomInt64Sequence(10, 0)
                });
            }
            await _context.Channels.AddRangeAsync(channels);

            await _context.SaveChangesAsync();

            return(channels);
        }
Esempio n. 21
0
 public static NodeVm GetNodeVm(Node node)
 {
     return(node == null
         ? null
         : new NodeVm
     {
         Id = node.Id,
         About = node.About,
         Country = node.Country,
         Domains = node.DomainNodes?.Select(opt => opt?.Domain).ToList(),
         Name = node.Name,
         Photo = node.Photo,
         Routing = node.Routing ?? true,
         StartDay = node.Startday ?? DateTime.MinValue,
         Storage = node.Storage ?? true,
         Tag = node.Tag ?? RandomExtensions.NextString(10, "N"),
         Visible = node.Visible ?? true,
         NodeKey = new NodeKeyVm
         {
             EncPublicKey = node.NodeKeys?.OrderByDescending(opt => opt.GenerationTime).FirstOrDefault()?.PublicKey,
             SignPublicKey = node.NodeKeys?.OrderByDescending(opt => opt.GenerationTime).FirstOrDefault()?.SignPublicKey,
             ExpiredAt = (node.NodeKeys?.OrderByDescending(opt => opt.GenerationTime).FirstOrDefault()?.ExpirationTime).GetValueOrDefault(),
             KeyId = (node.NodeKeys?.OrderByDescending(opt => opt.GenerationTime).FirstOrDefault()?.KeyId).GetValueOrDefault()
         },
         ClientsPort = node.ClientsPort,
         NodesPort = node.NodesPort,
         AdminEmail = node.AdminEmail,
         SupportEmail = node.SupportEmail,
         EncryptionType = node.EncryptionType,
         PermanentlyDeleting = node.PermanentlyDeleting,
         RegistrationMethod = node.RegistrationMethod,
         UserRegistrationAllowed = node.UserRegistrationAllowed
     });
 }
Esempio n. 22
0
    private IEnumerator GoNewEvent()
    {
        yield return(new WaitForSeconds(0.4f));

        var list = new List <GameEventName>()
        {
            GameEventName.GoStageAddCardSpell, GameEventName.GoStageAddCardConsumables
        };
        var newevent = list[RandomExtensions.GetRandomElementDictionary(DropChance.ChanceReward)];

        switch (newevent)
        {
        case GameEventName.GoStageAddCardSpell:
            _stageList.Add(GameEventName.GoStageAddCardSpell);
            _stageList.Add(GameEventName.GoSelectCardSpell);
            _stageList.Add(GameEventName.GoStageAddCardEvent);
            _stageList.Add(GameEventName.GoSelectCardEvent);
            _publisher.Publish(null, new CustomEventArgs(GameEventName.GoSetNextStage));
            Debug.Log("награда");
            break;

        case GameEventName.GoStageAddCardConsumables:
            _stageList.Add(GameEventName.GoStageAddCardConsumables);
            _stageList.Add(GameEventName.GoSelectCardConsumables);
            _stageList.Add(GameEventName.GoStageAddCardEvent);
            _stageList.Add(GameEventName.GoSelectCardEvent);
            _publisher.Publish(null, new CustomEventArgs(GameEventName.GoSetNextStage));
            Debug.Log("награда");
            break;
        }
    }
Esempio n. 23
0
        private async Task <List <Chat> > AddChatsAsync(int count = 5)
        {
            List <Chat> chats = new List <Chat>();

            for (int i = 0; i < count; i++)
            {
                var chatCreator = await _context.Users.FirstOrDefaultAsync();

                chats.Add(new Chat
                {
                    About     = RandomExtensions.NextString(20),
                    Deleted   = false,
                    Name      = "Chat " + i,
                    Tag       = RandomExtensions.NextString(10).ToUpper(),
                    Type      = RandomExtensions.NextInt64() > 0 ? (short)ChatType.Private : (short)ChatType.Public,
                    ChatUsers = _context.Users.Take(3).ToList().Select(user => new ChatUser
                    {
                        UserId   = user.Id,
                        Banned   = false,
                        Deleted  = false,
                        IsMuted  = false,
                        UserRole = user.Id == chatCreator.Id ? UserRole.Creator : UserRole.User
                    }).ToList()
                });
            }
            await _context.Chats.AddRangeAsync(chats);

            await _context.SaveChangesAsync();

            return(chats);
        }
Esempio n. 24
0
        public void VerifyGetString()
        {
            var _string = RandomExtensions.GetString();

            _string.Should().BeOfType(typeof(string));
            _string.Should().NotBeNull();
        }
Esempio n. 25
0
        public async Task UpdateSessionKeyAsync()
        {
            byte[] oldKey     = new byte[symmetricKey.Length];
            long   oldExpired = expiredAt.GetValueOrDefault();

            Array.Copy(symmetricKey, oldKey, symmetricKey.Length);
            try
            {
                long keyId        = RandomExtensions.NextInt64();
                uint ttl          = (uint)TimeSpan.FromDays(7).TotalSeconds;
                long expired      = DateTime.UtcNow.ToUnixTime() + ttl;
                var  symmetricKey = Encryptor.GetSymmetricKey(256, keyId, ttl, NodeData.Instance.NodeKeys.Password);
                var  encryptedKey = Encryptor.AsymmetricDataEncrypt(
                    symmetricKey,
                    licensorPublicKey,
                    NodeData.Instance.NodeKeys.SignPrivateKey,
                    NodeData.Instance.NodeKeys.Password);
                var request = new UpdateSessionKeyRequest(encryptedKey, expired);
                await SendRequestAsync(request).ConfigureAwait(false);

                this.symmetricKey = symmetricKey;
                expiredAt         = expired;
                await GetResponseAsync(request);
            }
            catch (Exception ex)
            {
                symmetricKey = oldKey;
                expiredAt    = oldExpired;
                Console.WriteLine($"Update session key error: {ex.Message}");
                Logger.WriteLog(ex);
            }
        }
Esempio n. 26
0
    void Roam_Update()
    {
        // Pick random target to roam to, if no current target.
        if (!movement.MovementTarget.HasValue)
        {
            movement.MovementTarget = RandomExtensions.RandomInsideBounds(shipManager.SpawnVolume);
            if (shipManager.Ships.Count < minShipsRemainingBeforeAggressionBoost)
            {
                // Move toward the player when there's only a few boats left
                GameObject player = GameObject.FindGameObjectWithTag("Player");
                if (player)
                {
                    movement.MovementTarget = (Vector2)player.transform.position + Random.insideUnitCircle * 1;
                }
            }
        }

        CheckForPickup(itemCheckDistance);

        // Check for nearby weak enemies, if any are found, transition to attack
        bool aggressionBoost = shipManager.Ships.Count < minShipsRemainingBeforeAggressionBoost;

        if ((shipStructure.Planks.Count > minPlanksToStartFight || aggressionBoost) &&
            boatCheckCooldown.Check(Time.time) &&
            (attackBackoffTime + attackBackoffTimeout <= Time.time || aggressionBoost) && // Don't attack again too soon, wait for the timeout first
            FindNearbyBoatTarget(out ShipStructure target))
        {
            currentBoatTarget = target;
            fsm.ChangeState(States.Attack);
        }
    }
Esempio n. 27
0
        public void VerifyMaxGetDouble()
        {
            var maxValue = 55.5;
            var number   = RandomExtensions.GetDouble(maxValue);

            number.Should().BeOfType(typeof(double));
            number.Should().BeLessThan(maxValue);
        }
Esempio n. 28
0
 public static Equipment RandomOne()
 {
     return(new Equipment
     {
         type = RandomExtensions.GetRandomEnum <UnitBuffType>(),
         buff = { value = Random.Range(1, 5) }
     });
 }
Esempio n. 29
0
        public async Task UpdateFileInformation()
        {
            var file       = fillTestDbHelper.Files.FirstOrDefault();
            var newFileUrl = RandomExtensions.NextString(10);
            await filesService.UpdateFileInformationAsync(newFileUrl, file.Id);

            Assert.True(fillTestDbHelper.Files.FirstOrDefault(opt => opt.Id == file.Id).Url == newFileUrl);
        }
Esempio n. 30
0
        public void VerifyMaxGetNumber()
        {
            var maxValue = 100;
            var number   = RandomExtensions.GetNumber(maxValue);

            number.Should().BeOfType(typeof(int));
            number.Should().BeLessOrEqualTo(maxValue);
        }