Frame/Assets/Scripts/Procedure/Logic/LoadingHallSceneProcedure.cs

49 lines
1.6 KiB
C#

using Cysharp.Threading.Tasks;
namespace Game
{
[Procedure(ProcedureType.LoadingHallSceneProcedure)]
class LoadingHallSceneProcedure : ProcedureBase
{
public override void Init()
{
base.Init();
EventManager.Instance.Subscribe(InputNameFinishEventArgs.EventId, this.InputNameFinishEvent);
}
public override void Dispose()
{
base.Dispose();
EventManager.Instance.Unsubscribe(InputNameFinishEventArgs.EventId, this.InputNameFinishEvent);
}
private void InputNameFinishEvent(object sender, GameEventArgs e)
{
var args = e as InputNameFinishEventArgs;
Game.currentPlayerData = new GlobalPlayerData(args.playerName, 1, 1000);
// var player = Game.playerManager.CreatePlayer(args.playerName, 1000);
// Game.playerManager.SetCurrentPlayer(player);
Game.procedureManager.ChangeProcedure(ProcedureType.HallSceneMainLogicProcedure);
}
public override void OnEnter()
{
base.OnEnter();
UniTask.Create(this.WaitLoadSceneFinish);
}
public override void OnLeave()
{
base.OnLeave();
Game.uiManager.ShowUI(UIType.HallSceneMainUI);
Game.uiManager.HideUI(UIType.InputNameUI);
}
async UniTask WaitLoadSceneFinish()
{
await Game.resourceManager.LoadSceneAsync(AssetConstPath.Assets_GameRes_Scene_Hall);
Game.uiManager.ShowUI(UIType.InputNameUI);
EventManager.Instance.FireNow(this, new LoadingGameSceneFinishEventArgs(true));
}
}
}