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)); } } }