64 lines
2.0 KiB
C#
64 lines
2.0 KiB
C#
using DG.Tweening;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.SceneManagement;
|
|
using UnityEngine.UI;
|
|
|
|
namespace MainMenu
|
|
{
|
|
public class LevelManager : MonoBehaviour
|
|
{
|
|
[SerializeField] private LevelData _data;
|
|
[SerializeField] private LevelView LevelImage;
|
|
[SerializeField] private GameObject loadUI;
|
|
[SerializeField] private Transform parantLevelView;
|
|
[SerializeField] private ScrollerPage _scrollerPage;
|
|
private int index = 0;
|
|
private TMP_Text _percentText;
|
|
private bool _isLoadingLevel = false;
|
|
private LevelData.Level _curLevel;
|
|
private AsyncOperation _loadOpertion;
|
|
|
|
private void Start()
|
|
{
|
|
loadUI.GetComponent<Image>().DOFade(0f, 0f);
|
|
_curLevel = _data.Levels[0];
|
|
_data.Levels.ForEach(level =>
|
|
{
|
|
var lev = Object.Instantiate(LevelImage, parantLevelView);
|
|
lev.LevelImage.sprite = level.levelSprite;
|
|
});
|
|
|
|
_scrollerPage.Init();
|
|
_scrollerPage.OnLevelChanged += SelectLevel;
|
|
_percentText = loadUI.GetComponentInChildren<TMP_Text>();
|
|
}
|
|
|
|
|
|
private void SelectLevel(int curentMenu)
|
|
{
|
|
_curLevel = _data.Levels[curentMenu];
|
|
}
|
|
|
|
public void LoadLevel()
|
|
{
|
|
loadUI.SetActive(true);
|
|
loadUI.GetComponent<Image>().DOFade(1f, 0.3f).OnComplete(() =>
|
|
{
|
|
_loadOpertion = SceneManager.LoadSceneAsync(_curLevel.sceneName);
|
|
_isLoadingLevel = true;
|
|
}).SetEase(Ease.InQuad);
|
|
Debug.Log(_curLevel.sceneName);
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (_isLoadingLevel && !_loadOpertion.isDone)
|
|
{
|
|
float progressValue = Mathf.Clamp01(_loadOpertion.progress / 0.9f);
|
|
|
|
_percentText.text = Mathf.Round(progressValue * 100) + " %";
|
|
}
|
|
}
|
|
}
|
|
} |