61 lines
1.4 KiB
C#
61 lines
1.4 KiB
C#
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
public class LevelChooser : MonoBehaviour
|
|
{
|
|
[SerializeField] private List<LevelModel> _levels;
|
|
[SerializeField] private Image _levelImage;
|
|
|
|
[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;
|
|
|
|
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);
|
|
}
|
|
} |