Run-and-capture/Assets/Scripts/LevelChooser.cs
Maxim-Godovikov 144aeada89 Рефакторинг сцены главного меню.
1) Реогранизована иерархия
2) Удалены неиспользуемые элементы
3) Список уровней формируется в GameManagment списком элементов LevelModel
2021-10-20 17:31:01 +03:00

64 lines
1.5 KiB
C#

using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class LevelChooser : MonoBehaviour
{
[SerializeField] private List<LevelModel> _levels;
[SerializeField] private Image _levelImage;
[SerializeField] private TextMeshProUGUI _levelNameText;
[SerializeField] private GameObject _nextButton;
[SerializeField] private GameObject _prevButton;
public LevelModel CurrentLevel => _levels[_currentLevelIndex];
private int _currentLevelIndex;
private void Start()
{
_currentLevelIndex = 0;
UpdateUI();
}
public void ShowPreviousLevel()
{
_currentLevelIndex--;
if (_currentLevelIndex < 0)
{
_currentLevelIndex = 0;
}
UpdateUI();
}
public void ShowNextLevel()
{
_currentLevelIndex++;
if (_currentLevelIndex > _levels.Count - 1)
{
_currentLevelIndex = _levels.Count - 1;
}
UpdateUI();
}
private void UpdateUI()
{
_levelImage.sprite = CurrentLevel.MenuSprite;
_levelNameText.text = CurrentLevel.Name;
UpdateButtonsVisibility();
}
private void UpdateButtonsVisibility()
{
bool isFirstLevel = _currentLevelIndex == 0;
bool isLastLevel = _currentLevelIndex == _levels.Count - 1;
bool hasMultipleLevels = _levels.Count > 1;
_prevButton.SetActive(hasMultipleLevels && !isFirstLevel);
_nextButton.SetActive(hasMultipleLevels && !isLastLevel);
}
}