MiniGame-PushPush/Assets/Scripts/Manage/Scene/IntroSceneController.cs

64 lines
1.7 KiB
C#

using FirstVillain.Converter;
using FirstVillain.Entities;
using FirstVillain.EventBus;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;
public class IntroSceneController : MonoBehaviour
{
private int _loadedTableCount = 0;
private void Start()
{
UIManager.Instance.OpenUI(E_UI_TYPE.UIPanelIntro);
EventBus.Instance.Subscribe<EventLoadAssets>(OnStartLoadAssets);
}
private void OnDestroy()
{
EventBus.Instance.Unsubscribe<EventLoadAssets>(OnStartLoadAssets);
}
private void OnStartLoadAssets(EventLoadAssets e)
{
LoadTable();
StartCoroutine(LoadingGauge());
}
private IEnumerator LoadingGauge()
{
float maxGauge = TableManager.Instance.LoadTableCount;
while (_loadedTableCount < maxGauge)
{
EventBus.Instance.Publish(new EventUpdateTableLadingProgress(_loadedTableCount / maxGauge));
yield return null;
}
EventBus.Instance.Publish(new EventUpdateTableLadingProgress(1));
SceneLoadManager.Instance.LoadSceneAsync("Lobby", UnityEngine.SceneManagement.LoadSceneMode.Single, OnCompleteLoad);
}
public void OnCompleteLoad()
{
EventBus.Instance.Publish(new EventStartLobby());
UIManager.Instance.ReleaseUI();
}
private void LoadTable()
{
TableManager.Instance.LoadTable<JPlayerData>(E_TABLE.JPlayer, OnPlayerDataLoaded);
}
private void OnPlayerDataLoaded(Wrapper<JPlayerData> data)
{
//데이터 세팅
//아직 서버는 고려하지 않는다.
GameManager.Instance.SetPlayerData(data.list);
_loadedTableCount++;
}
}