Esempio n. 1
0
        private void CreateWarshipComponents(List <WarshipDto> warships, LobbyUiContext lobbyUiContextArg)
        {
            log.Info("Старт создания сущностей для кораблей");
            for (var i = 0; i < warships.Count; i++)
            {
                log.Info("Создание сущности для корабля " + i);
                WarshipDto warshipDto = warships[i];
                lobbyUiContext.CreateEntity().AddWarship(warshipDto);
            }

            log.Info("Создание сущностей для кораблей окончено");
        }
Esempio n. 2
0
 protected override void Execute(List <LobbyUiEntity> entities)
 {
     foreach (var lobbyUiEntity in entities)
     {
         var     command       = lobbyUiEntity.commandToCreateAwardImages;
         var     textEntity    = lobbyUiContext.CreateEntity();
         Vector3 startPosition = MovingAwardsUiElementsStorage.Instance().GetStartPoint(command.awardTypeEnum);
         textEntity.AddAwardText(command.quantity, MovingAwardsUiElementsStorage.Instance().GetStartPoint(command.awardTypeEnum),
                                 command.startSpawnTime,
                                 command.startSpawnTime + TimeSpan.FromSeconds(1.5)
                                 );
         textEntity.AddPosition(startPosition);
         textEntity.AddAlpha(1);
     }
 }
Esempio n. 3
0
        private void UpdateData(WarshipDto warshipDto)
        {
            //Установить название корабля
            warshipsUiStorage.warshipName.text = warshipDto.WarshipName.ToUpper();
            //Установить тип корабля
            warshipsUiStorage.warshipTypeName.text = warshipDto.CombatRoleName;
            //Установить ранг корабля
            WarshipRankModel rankModel = WarshipRatingScaleStorage.Instance.GetRankModel(warshipDto.Rating);

            warshipsUiStorage.warshipRank.text = rankModel.currentRank.ToString();
            //Установить слайдер для рейтинга
            warshipsUiStorage.trophySlider.value = rankModel.rankProgress;
            //Установить рейтинг корабля
            warshipsUiStorage.trophyText.text = rankModel.ToString();
            //Установить описание корабля
            warshipsUiStorage.warshipDescription.text = warshipDto.Description;
            //Установить уровень силы
            warshipsUiStorage.warshipPowerLevel.text = "POWER " + warshipDto.PowerLevel;
            //TODO Установить характеристики корабля (атаку, защиту, скорость или что там)

            // log.Debug($"attack name "+warshipDto.WarshipCharacteristics.AttackName);
            // log.Debug($"ultimate name "+warshipDto.WarshipCharacteristics.UltimateName);

            var healthParameter = warshipDto.WarshipCharacteristics.DefenceParameters
                                  .SingleOrDefault(p => p.Name == "Health");

            warshipsUiStorage.healthText.text = healthParameter != null?healthParameter.GetCurrentValue(warshipDto.PowerLevel).ToString("0.###") : "undefined";

            var movementSpeed = warshipDto.WarshipCharacteristics.DefenceParameters
                                .SingleOrDefault(p => p.Name == "Movement speed");

            warshipsUiStorage.velocityText.text = movementSpeed != null?movementSpeed.GetCurrentValue(warshipDto.PowerLevel).ToString("0.###") : "undefined";

            warshipsUiStorage.attackNameText.text   = warshipDto.WarshipCharacteristics.AttackName;
            warshipsUiStorage.ultimateNameText.text = warshipDto.WarshipCharacteristics.UltimateName;

            //Проверить на кол-во ресурсов для перехода на новый уровень
            int softCurrency    = lobbyEcsController.GetSoftCurrency();
            var model           = WarshipPowerScale.GetModel(warshipDto.PowerLevel);
            int improvementCost = model.SoftCurrencyCost;
            int maxPowerPoints  = model.PowerPointsCost;

            bool showGreenScale = softCurrency >= improvementCost && warshipDto.PowerPoints >= maxPowerPoints;

            Text powerPointsValueText;

            //Показать нужную шкалу. (Красную или зелёную)
            if (showGreenScale)
            {
                powerPointsValueText = warshipsUiStorage.greenPowerPointsValueText;
                warshipsUiStorage.redScale.SetActive(false);
                warshipsUiStorage.greenScale.SetActive(true);
            }
            else
            {
                warshipsUiStorage.redScale.SetActive(true);
                warshipsUiStorage.greenScale.SetActive(false);
                powerPointsValueText = warshipsUiStorage.powerValueText;
            }

            //Установить кол-во очков силы для текущего уровня
            powerPointsValueText.text = warshipDto.PowerPoints + "/" + maxPowerPoints;

            //Установить слайдер для кол-ва очков силы
            warshipsUiStorage.powerSlider.maxValue = maxPowerPoints;
            warshipsUiStorage.powerSlider.value    = warshipDto.PowerPoints;

            //Установить цену улучшения
            warshipsUiStorage.improveButtonCost.text = improvementCost.ToString();
            //Установить слушатель для кнопки улучшения
            warshipsUiStorage.improveButton.onClick.RemoveAllListeners();
            warshipsUiStorage.improveButton.onClick.AddListener(() =>
            {
                if (warshipDto.PowerPoints < maxPowerPoints)
                {
                    UiSoundsManager.Instance().PlayError();
                    string message = "The warship doesn't have enough power points.";
                    textTooltip.Show(message);
                }
                else if (softCurrency < improvementCost)
                {
                    UiSoundsManager.Instance().PlayError();
                    string message = "There's not enough coins to improve the spaceship.";
                    textTooltip.Show(message);
                }
                else
                {
                    UiSoundsManager.Instance().PlayClick();
                    //показать окно покупки улучшения
                    lobbyEcsController.ShowWarshipImprovementModalWindow(warshipDto);
                }
            });

            string oldSkinName = warshipDto.GetCurrentSkinName();

            //Установить слушатель для кнопки выбора корабля
            warshipsUiStorage.chooseButton.onClick.RemoveAllListeners();
            warshipsUiStorage.chooseButton.onClick.AddListener(() =>
            {
                CurrentWarshipTypeStorage.WriteWarshipType(warshipDto.WarshipTypeEnum);
                // log.Debug("Слушатель работает");
                UiSoundsManager.Instance().PlayClick();
                //заменить скин если нужно
                int actualSkinIndex = lobbyUiContext.warshipOverviewCurrentSkinModel.skinIndex;
                string newSkinName  = warshipDto.GetCurrentSkinName();
                if (oldSkinName != newSkinName)
                {
                    warshipDto.CurrentSkinIndex = actualSkinIndex;
                    int warshipId = warshipDto.Id;
                    var task      = new SkinChangingNotifier().ChangeSkinOnServerAsync(warshipId, newSkinName);
                }
                else
                {
                    log.Info("Скин не был изменён");
                }
                //изменить тип текущего корабля

                lobbyUiContext.ReplaceCurrentWarshipTypeEnum(warshipDto.WarshipTypeEnum);
                //заменть компонент корабля
                lobbyUiContext.CreateEntity().AddWarship(warshipDto);
                //выключить меню обзора корабля
                lobbyUiContext.CreateEntity().messageDisableWarshipOverviewUiLayer = true;
                //выключить меню со списком кораблей
                lobbyUiContext.CreateEntity().messageDisableWarshipListUiLayer = true;
            });

            //Установить стоимость для кнопки покупки улучшения
            warshipsUiStorage.popupWindowCostText.text = improvementCost.ToString();

            //Установить слушатель для кнопки покупки улучшения
            warshipsUiStorage.popupWindowBuyButton.onClick.RemoveAllListeners();
            warshipsUiStorage.popupWindowBuyButton.onClick.AddListener(() =>
            {
                //todo показать окно подтверждения
            });

            //Установить слушатель для меню с характеристиками корабля
            warshipsUiStorage.warshipCharacteristicsButton.onClick.RemoveAllListeners();
            warshipsUiStorage.warshipCharacteristicsButton.onClick.AddListener(() =>
            {
                if (warshipDto.PowerPoints < maxPowerPoints || softCurrency < improvementCost)
                {
                    UiSoundsManager.Instance().PlayClick();
                    lobbyEcsController.ShowWarshipCharacteristics(warshipDto);
                }
                else
                {
                    UiSoundsManager.Instance().PlayClick();
                    //показать окно покупки улучшения
                    lobbyEcsController.ShowWarshipImprovementModalWindow(warshipDto);
                }
            });
        }
Esempio n. 4
0
        private void AddAwardSpawnCommand(AwardTypeEnum awardTypeEnum, int quantity, DateTime spawnStartTime)
        {
            LobbyUiEntity entity = lobbyUiContext.CreateEntity();

            entity.AddCommandToCreateAwardImages(quantity, awardTypeEnum, spawnStartTime);
        }
Esempio n. 5
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;
                }
            }
        }