/// <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);
    }
Exemple #2
0
    /// <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);
    }