Example #1
0
        private IEnumerator WarshipAnimation(string warshipPrefabNameArg, int amount)
        {
            // log.Debug($"{nameof(warshipPrefabNameArg)} {warshipPrefabNameArg}");
            //создать кораблик слева за сценой
            GameObject warshipPrefab = Resources.Load <GameObject>($"Prefabs/{warshipPrefabNameArg}");
            Vector3    position      = new Vector3(-4, 0);
            Quaternion quaternion    = Quaternion.identity;
            GameObject warship       = Instantiate(warshipPrefab, position, quaternion, transform);

            warship.transform.localScale = Vector3.one / 2;

            //плавно переместить корабль на центр экрана
            float velocity     = 0.01f;
            float acceleration = 0.005f;

            while (warship.transform.position.x < 0)
            {
                Vector3 tmp = warship.transform.position;
                tmp = new Vector3(tmp.x + velocity, tmp.y);
                warship.transform.position = tmp;
                velocity += acceleration;
                yield return(null);
            }

            //включить систему частиц
            lightningParticleSystem.SetActive(true);

            //создать набор иконок
            Vector3 spawnPosition  = new Vector3(Screen.width / 2, Screen.height / 2);
            Vector3 finishPosition = canvasRect.gameObject.transform.Find("Empty_PowerValueRoot/Image_PowerValue")
                                     .GetComponent <RectTransform>().position;

            var trajectoryFactory = new WppIconTrajectoryFactory();
            var random            = new Random();

            for (int index = 0; index < amount; index++)
            {
                DateTime            spawnStartTime = DateTime.UtcNow;
                var                 entity         = Contexts.sharedInstance.wppAccrual.CreateEntity();
                List <ControlPoint> controlPoints  = trajectoryFactory
                                                     .Create(index, spawnStartTime, spawnPosition, finishPosition, random);

                IconTrajectory iconTrajectory = new IconTrajectory()
                {
                    controlPoints            = controlPoints,
                    currentControlPointIndex = 0
                };
                entity.AddMovingIcon(1, iconTrajectory, AwardTypeEnum.WarshipPowerPoints);
                entity.AddPosition(controlPoints.First().position);
                entity.AddAlpha(0);
                entity.AddScale(new Vector3(1, 1, 1));
            }
        }
Example #2
0
        protected override void Execute(List <LobbyUiEntity> entities)
        {
            const int maxNumberOfImagesPerAwardType = 100;

            foreach (var command in entities.Select(entity => entity.commandToCreateAwardImages))
            {
                AwardTypeEnum awardTypeEnum  = command.awardTypeEnum;
                DateTime      spawnStartTime = command.startSpawnTime;
                int           remainder      = command.quantity;
                int           numberOfImages;

                if (command.quantity > maxNumberOfImagesPerAwardType)
                {
                    numberOfImages = maxNumberOfImagesPerAwardType;
                }
                else
                {
                    numberOfImages = command.quantity;
                }


                int roundedAverageIncrement = (int)Math.Round(((decimal)command.quantity / numberOfImages),
                                                              MidpointRounding.AwayFromZero);
                // log.Debug($"{nameof(roundedAverageIncrement)} {roundedAverageIncrement}");

                int index = 0;
                while (remainder != 0)
                {
                    index++;
                    LobbyUiEntity entity = contextsLobbyUi.CreateEntity();

                    Vector3 spawnPoint  = MovingAwardsUiElementsStorage.Instance().GetStartPoint(awardTypeEnum);
                    Vector3 finishPoint = MovingAwardsUiElementsStorage.Instance().GetFinishPoint(awardTypeEnum);

                    // log.Debug($"finish position {finishPoint.x} {finishPoint.y}");
                    List <ControlPoint> controlPoints = awardTrajectoryFactory
                                                        .Create(index, spawnStartTime, spawnPoint, finishPoint, random, screenHeight);

                    // log.Debug("last control point position "+controlPoints.Last().position.x+" "+controlPoints.Last().position.y);
                    int increment;
                    if (roundedAverageIncrement < remainder)
                    {
                        increment = roundedAverageIncrement;
                    }
                    else
                    {
                        increment = remainder;
                    }
                    IconTrajectory iconTrajectory = new IconTrajectory()
                    {
                        controlPoints            = controlPoints,
                        currentControlPointIndex = 1
                    };
                    entity.AddMovingIcon(increment, iconTrajectory, awardTypeEnum);
                    entity.AddPosition(controlPoints.First().position);
                    entity.AddAlpha(0);
                    entity.AddScale(new Vector3(1, 1, 1));

                    remainder -= increment;
                }
            }
        }