Example #1
0
    public void NG_GenerateButton()
    {
        selectedGameMode    = GameMode.Survival;
        chunkPrepareAction  = ChunkPreparingAction.Generate;
        chunkGenerationMode = availableGenerationModes[generationTypeDropdown.value];

        terrainPresetsPanel.SetActive(false);
        terrainSavenames = null;
        usePresetsButtonImage.overrideSprite = null;
        generationPanel.SetActive(true);
        generateButtonImage.overrideSprite = overridingSprite;
        gameStartButton.interactable       = true;
        terrainGenerationEnabled           = true;
    }
Example #2
0
    public void NG_SelectTerrain(int index)
    {
        if (terrainSavenames == null || terrainSavenames.Length <= index)
        {
            selectedSaveName             = string.Empty;
            gameStartButton.interactable = false;
        }
        else
        {
            selectedSaveName   = terrainSavenames[index];
            chunkPrepareAction = ChunkPreparingAction.Load;

            gameStartButton.interactable = true;
            Transform buttonsHolder = terrainPresetsPanel.transform.GetChild(0).GetChild(0);
            for (int i = 0; i < buttonsHolder.childCount; i++)
            {
                buttonsHolder.GetChild(i).GetComponent <Image>().overrideSprite = ((i == index) ? overridingSprite : null);
            }
        }
    }
Example #3
0
    public void NG_UsePresetButton()
    {
        selectedSaveName   = string.Empty;
        selectedGameMode   = GameMode.Survival;
        chunkPrepareAction = ChunkPreparingAction.Load;

        generationPanel.SetActive(false);
        generateButtonImage.overrideSprite = null;
        gameStartButton.interactable       = false;

        //preparing terrains list
        string        directoryPath  = SaveSystemUI.GetTerrainsPath();
        Transform     contentHolder  = terrainPresetsPanel.transform.GetChild(0).GetChild(0);
        RectTransform zeroButton     = contentHolder.GetChild(0).GetComponent <RectTransform>();
        bool          no_saves_found = true;

        if (Directory.Exists(directoryPath))
        {
            terrainSavenames = Directory.GetFiles(directoryPath, "*." + SaveSystemUI.TERRAIN_FNAME_EXTENSION);
            if (terrainSavenames.Length != 0)
            {
                no_saves_found = false;
                int c = contentHolder.childCount;
                int i = 0;
                zeroButton.GetComponent <Button>().interactable = true;
                for (; i < terrainSavenames.Length; i++)
                {
                    string s            = terrainSavenames[i];
                    int    lastSlashPos = s.LastIndexOf('\\'); // в редакторе так
                    if (lastSlashPos == -1)
                    {
                        lastSlashPos = s.LastIndexOf('/');
                    }
                    terrainSavenames[i] = s.Substring(lastSlashPos + 1, s.Length - lastSlashPos - 5); //  от последнего слеша до ".sav"
                    Transform t;
                    if (i < c)
                    {
                        t = contentHolder.GetChild(i); // 0 - example
                    }
                    else
                    {
                        t = Instantiate(zeroButton, contentHolder).transform;
                        t.transform.localPosition = zeroButton.localPosition + Vector3.down * (zeroButton.rect.height * i + 16);
                    }
                    t.gameObject.SetActive(true);
                    t.GetComponent <Button>().onClick.RemoveAllListeners(); // т.к. на example тоже может висеть listener
                    t.GetChild(0).GetComponent <Text>().text = terrainSavenames[i];
                    int index = i;
                    t.GetComponent <Button>().onClick.AddListener(() =>
                    {
                        this.NG_SelectTerrain(index);
                    });
                    t.GetComponent <Image>().overrideSprite = null;
                }
                if (i < c)
                {
                    i++;
                    for (; i < c; i++)
                    {
                        contentHolder.GetChild(i).gameObject.SetActive(false);
                    }
                }
            }
        }
        if (no_saves_found)
        {
            terrainSavenames = null;
            zeroButton.GetChild(0).GetComponent <Text>().text = Localization.GetPhrase(LocalizedPhrase.NoSavesFound);
            zeroButton.GetComponent <Button>().interactable   = false;
            zeroButton.GetComponent <Image>().overrideSprite  = null;
            zeroButton.gameObject.SetActive(true);
            if (contentHolder.childCount > 1)
            {
                while (contentHolder.childCount > 1)
                {
                    Destroy(contentHolder.GetChild(1));
                }
            }
        }
        terrainPresetsPanel.SetActive(true);
        usePresetsButtonImage.overrideSprite = overridingSprite;
        terrainGenerationEnabled             = false;
    }