/// <summary> /// Приводит текст к стандартному отображению после выбора варианта ответа /// </summary> private Text RedrawMainText(Text firstTextComponent, GameObject textPanel) { var newText = Instantiate(firstTextComponent); var CGD = gameObject.GetComponent <ClearGameData>() ?? gameObject.AddComponent <ClearGameData>(); textPanel.GetComponent <GridLayoutGroup>().enabled = false; ClearGameData.ClearChildren(textPanel); newText.transform.SetParent(textPanel.transform, false); var paddingVal = (firstTextComponent.transform.parent.GetComponent <RectTransform>().rect.width - firstTextComponent.GetComponent <RectTransform>().rect.width) / 2; var newTextRT = newText.gameObject.GetComponent <RectTransform>(); newTextRT.anchorMin = Vector2.zero; newTextRT.anchorMax = Vector2.one; newTextRT.sizeDelta = new Vector2(-2 * paddingVal, -2 * paddingVal); firstTextComponent = newText; cleaningIsNeeded = false; // Позволяет переключать фразу по нажатию в любом месте экрана transform.GetComponentInChildren <Button>().enabled = true; // finds Blocker textPanel.GetComponent <Button>().enabled = true; Destroy(newText.GetComponent <Button>()); return(firstTextComponent); }
/// <summary> /// Restarts mini game /// </summary> public void RestartGame() { var panel = transform.Find("Panel").gameObject; var textSample = panel.transform.Find("TextSample").gameObject; Blocker.SetActive(false); ClearGameData.ClearChildren(GamingPlace); for (var i = 0; i < ElementsCount; i++) { var card = new GameObject($"Card {i}", typeof(Button)); card.AddComponent <Image>().sprite = CardSprite; card.GetComponent <Image>().type = Image.Type.Sliced; card.GetComponent <Image>().pixelsPerUnitMultiplier = 0.5f; card.GetComponent <Image>().color = new Color(1, 0.8f, 0.5f); card.GetComponent <Button>().onClick.AddListener(OnButtonClicked); card.GetComponent <Button>().targetGraphic = card.GetComponent <Image>(); if (SceneManager.GetActiveScene().buildIndex == 4) { currentSeed = ResultPlace.GetComponent <QuantumGrowth>().growingSeed; currentPot = ResultPlace.GetComponent <QuantumGrowth>().Pot; } else { currentSeed = ResultPlace.GetComponent <LabGrowth>().growingSeed; currentPot = ResultPlace.GetComponent <LabGrowth>().Pot; } var GC = CrossingPerformer.GetComponent <GeneCrossing>(); var chances = PlayerPrefs.GetString("SelectionChances" + currentPot.name).Split(); var oppositeStats = PlayerPrefs.GetString("OppositeSeedStats" + currentPot.name).Split(); var cardText = Instantiate(textSample, card.transform); cardText.GetComponent <Text>().text = $"Вкус: {GC.GetNewValueByPossibility(currentSeed.Taste, int.Parse(chances[0]), int.Parse(oppositeStats[0]))}\n" + $"Габитус: {GC.GetNewValueByPossibility(currentSeed.Gabitus, int.Parse(chances[1]), int.Parse(oppositeStats[1]))}\n" + $"Время роста: {GC.GetNewValueByPossibility(currentSeed.GrowTime, int.Parse(chances[2]), int.Parse(oppositeStats[2]))}"; var scaleFactor = 1 / 47.34849f; card.transform.localScale = new Vector2(scaleFactor, scaleFactor); card.transform.SetParent(GamingPlace.transform); } }
/// <summary> /// Отрисовывыет существующие задачи /// </summary> /// <param name="isPreview">Указать true, если необходимо отрисовать только предпросмотр задач</param> /// <param name="placeForRender">Место для отрисовки предпросмотра</param> /// <param name="seedName">Название семечка, к которому относится предпросмотр</param> /// <param name="itemsCount">Количество плодов, которые могут быть добавлены в задачу</param> private void RenderCurrentTasks( bool isPreview = false, GameObject placeForRender = null, string seedName = null, int itemsCount = 0) { var reader = QSReader.Create("Tasks"); var renderedTasks = new List <GameObject>(); var allKeys = reader.GetAllKeys(); ClearGameData.ClearChildren(isPreview ? placeForRender : gameObject); foreach (var key in allKeys) { var success = reader.TryRead <TaskDetails>(key, out var details); if (!success || details.AmountToComplete <= 0 || details.TaskCategory == null || isPreview && (details.TaskCategory != "Grow" || details.Key != seedName || details.IsCompleted)) { continue; } var newTask = Instantiate(isPreview ? previewPrefab : taskPrefab, isPreview ? placeForRender.transform : transform); renderedTasks.Add(newTask); var taskComp = newTask.GetComponent <Task>(); taskComp.Load(details); taskComp.AmountToAdd = itemsCount; if (isPreview) { taskComp.UpdatePreview(); } else { taskComp.UpdateView(); } } renderedTasks.Sort((taskObj1, taskObj2) => { var taskDetails1 = taskObj1.GetComponent <Task>().Details; var taskDetails2 = taskObj2.GetComponent <Task>().Details; return((taskDetails1.AmountToComplete - taskDetails1.ProgressAmount) - (taskDetails2.AmountToComplete - taskDetails2.ProgressAmount)); } ); for (var i = 0; i < renderedTasks.Count; i++) { renderedTasks[i].transform.SetSiblingIndex(i); } if (!isPreview) { return; } QuestsPreviewPanel .transform .Find("EmptyListText") .gameObject .SetActive(renderedTasks.Count == 0); }