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

49 lines
1.6 KiB
C#

using Cysharp.Threading.Tasks;
using UnityEngine;
namespace Game
{
[Procedure(ProcedureType.LoadingGameSceneProcedure)]
class LoadingGameSceneProcedure : ProcedureBase
{
public override void Init()
{
base.Init();
EventManager.Instance.Subscribe(InputNameFinishEventArgs.EventId, InputNameFinishEvent);
}
public override void Dispose()
{
base.Dispose();
EventManager.Instance.Unsubscribe(InputNameFinishEventArgs.EventId, InputNameFinishEvent);
}
private void InputNameFinishEvent(object sender, GameEventArgs e)
{
var args = e as InputNameFinishEventArgs;
var player = Game.playerManager.CreatePlayer(args.playerName, "player1", 10);
Game.playerManager.SetCurrentPlayer(player);
player.self.transform.position = new Vector3(-9.6f, -10.3f);
Game.procedureManager.ChangeProcedure(ProcedureType.EnterGameSceneProcedure);
}
public override void OnEnter()
{
base.OnEnter();
UniTask.Create(async () =>
{
await Game.resourceManager.LoadSceneAsync(SceneType.Game);
Game.uiManager.ShowUI(UIType.InputNameUI);
EventManager.Instance.FireNow(this, new LoadingGameSceneFinishEventArgs(true));
}).Forget();
}
public override void OnLeave()
{
base.OnLeave();
Game.uiManager.ShowUI(UIType.GameSceneMainUI);
Game.uiManager.HideUI(UIType.InputNameUI);
}
}
}