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("Создание сущностей для кораблей окончено"); }
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); } }
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); } }); }
private void AddAwardSpawnCommand(AwardTypeEnum awardTypeEnum, int quantity, DateTime spawnStartTime) { LobbyUiEntity entity = lobbyUiContext.CreateEntity(); entity.AddCommandToCreateAwardImages(quantity, awardTypeEnum, spawnStartTime); }
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; } } }