Files
vampire-like/Assets/GameMain/Scripts/Procedure/Game/GameStateLevelUp.cs
T
SepComet 0bab6ecbc5 迁移 Player/ProcedureGame/ShopUseCase 里的实体方法调用风格
- Player/ShopUseCase:调整了 Weapon 实体的打开方式
- ProcedureGame:调整初始化时的 Hud 和 Player 的初始化写法,流程更清楚
2026-06-16 17:09:19 +08:00

64 lines
1.6 KiB
C#

using Cysharp.Threading.Tasks;
using SepCore.Definition;
using GameFramework.Fsm;
using GameFramework.Procedure;
using SepCore.UI;
using UnityGameFramework.Runtime;
namespace SepCore.Procedure
{
public class GameStateLevelUp : GameStateBase
{
public override GameStateType GameStateType => GameStateType.LevelUp;
private ProcedureGame _procedureGame;
public bool IsCompleted { get; set; }
#region FSM
public override void OnInit(ProcedureGame master)
{
Log.Debug("GameStateLevelUp::OnInit");
_procedureGame = master;
var useCase = new LevelUpUseCase(_procedureGame.Player, () => IsCompleted = true);
GameEntry.UIRouter.BindUIUseCase(UIFormType.LevelUpForm, useCase);
}
public override void OnEnter()
{
Log.Debug("GameStateLevelUp::OnEnter");
IsCompleted = false;
GameEntry.UIRouter.OpenUIAsync(UIFormType.LevelUpForm).Forget();
}
public override void OnUpdate(float elapseSeconds, float realElapseSeconds)
{
if (IsCompleted)
{
_procedureGame.LevelUpToShop();
}
}
public override void OnLeave()
{
Log.Debug("GameStateLevelUp::OnLeave");
GameEntry.UIRouter.CloseUIAsync(UIFormType.LevelUpForm).Forget();
}
public override void OnDestroy()
{
_procedureGame = null;
Log.Debug("GameStateLevelUp::OnDestroy");
}
#endregion
}
}