73 lines
1.3 KiB
C#
73 lines
1.3 KiB
C#
|
|
namespace AlicizaX
|
||
|
|
{
|
||
|
|
public interface IProcedure
|
||
|
|
{
|
||
|
|
IProcedureModule ProcedureModule { get; set; }
|
||
|
|
void Init();
|
||
|
|
void Enter();
|
||
|
|
void Leave();
|
||
|
|
void Update();
|
||
|
|
void Destroy();
|
||
|
|
}
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// 流程基类 - 使用模板方法模式定义流程生命周期
|
||
|
|
/// </summary>
|
||
|
|
public abstract class ProcedureBase : IProcedure
|
||
|
|
{
|
||
|
|
public IProcedureModule ProcedureModule { get; set; }
|
||
|
|
|
||
|
|
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
|
||
|
|
{
|
||
|
|
ProcedureModule.SwitchProcedure<T>();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|