Forest_Client/Forest/Assets/Scripts/Gameplay/LevelLoadingExecutor.cs

63 lines
2.1 KiB
C#

using PhxhSDK;
using Framework.UI;
using Gameplay.Level;
using Gameplay.Manager;
using Framework.Manager;
using Framework.Constants;
using Cysharp.Threading.Tasks;
using Gameplay.ForestLevel;
using UnityEngine.SceneManagement;
using UnityEngine.AddressableAssets;
namespace Gameplay.LoadingExecutor
{
public class LevelLoadingExecutor : LoadingExecutorWithUILoadingController
{
private string _levelID;
protected override async UniTask _DoLoading()
{
await Addressables.LoadSceneAsync(PathConstants.SceneLevelPath, LoadSceneMode.Single).ToUniTask();
_destProgress = 10f;
await LevelManager.Instance.LoadLevel(_levelID);
_destProgress = 20f;
KongManager.Instance.Init();
_destProgress = 30f;
await KongManager.Instance.PreLoadLevelItem();
_destProgress = 40f;
await UniTask.Delay(20);
PlankManager.Instance.Init();
_destProgress = 50f;
await PlankManager.Instance.PreLoadLevelItem();
_destProgress = 70f;
await LevelManager.Instance.Init();
_destProgress = 90f;
await InitLevelUI();
_destProgress = 100f;
}
public LevelLoadingExecutor(string levelID)
{
_levelID = levelID;
}
private async UniTask InitLevelUI()
{
UIManager.Instance.CloseWindow(UIConstants.UIWinPanel);
UIManager.Instance.CloseWindow(UIConstants.UILosePanel);
await UIManager.Instance.OpenWindow(UIConstants.UILevelPanel);
var window = UIManager.Instance.GetOpenedWindowByPath<UILevelPanelController>(UIConstants.UILevelPanel);
window?.ReloadWindow();
CommonUIUtils.DestroyScreenshot();
}
protected override void _OnEnd()
{
LevelManager.Instance.IsInGame = true;
LevelManager.Instance.ReportEnterLevel();
AudioManager.Instance.PlayMusic(AudioType.MUSIC, AudioManager.Instance.BGMInLevel, new UnityAudio(true));
}
}
}