2025-11-18 16:15:11 +08:00
|
|
|
namespace AlicizaX
|
|
|
|
|
{
|
|
|
|
|
public interface IProcedure
|
|
|
|
|
{
|
2026-03-26 16:14:05 +08:00
|
|
|
IProcedureService ProcedureService { get; set; }
|
2025-11-18 16:15:11 +08:00
|
|
|
void Init();
|
|
|
|
|
void Enter();
|
|
|
|
|
void Leave();
|
|
|
|
|
void Update();
|
|
|
|
|
void Destroy();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 流程基类 - 使用模板方法模式定义流程生命周期
|
|
|
|
|
/// </summary>
|
|
|
|
|
public abstract class ProcedureBase : IProcedure
|
|
|
|
|
{
|
2026-03-26 16:14:05 +08:00
|
|
|
public IProcedureService ProcedureService { get; set; }
|
2025-11-18 16:15:11 +08:00
|
|
|
|
|
|
|
|
void IProcedure.Init()
|
|
|
|
|
{
|
|
|
|
|
OnInit();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void IProcedure.Enter()
|
|
|
|
|
{
|
|
|
|
|
OnEnter();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void IProcedure.Leave()
|
|
|
|
|
{
|
|
|
|
|
OnLeave();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void IProcedure.Update()
|
|
|
|
|
{
|
|
|
|
|
OnUpdate();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void IProcedure.Destroy()
|
|
|
|
|
{
|
|
|
|
|
OnDestroy();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected virtual void OnInit()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected virtual void OnEnter()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected virtual void OnLeave()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected virtual void OnUpdate()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected virtual void OnDestroy()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected internal void SwitchProcedure<T>() where T : ProcedureBase
|
|
|
|
|
{
|
2026-03-26 16:14:05 +08:00
|
|
|
AppServices.Require<IProcedureService>().SwitchProcedure<T>();
|
2025-11-18 16:15:11 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|