using GFramework.Core.Abstractions.enums;
using GFramework.Core.architecture;
using GFramework.Core.events;
using GFramework.Core.Tests.model;
using GFramework.Core.Tests.system;
namespace GFramework.Core.Tests.architecture;
///
/// 异步测试架构,用于测试异步模型和系统的初始化
///
public class AsyncTestArchitecture : Architecture
{
///
/// 初始化完成事件是否触发
///
public bool ReadyEventFired { get; private set; }
///
/// Init 方法是否调用
///
public bool InitCalled { get; private set; }
///
/// 阶段进入记录
///
public List PhaseHistory { get; } = new();
///
/// 异步初始化架构
///
protected override void Init()
{
InitCalled = true;
// 注册模型
RegisterModel(new AsyncTestModel());
// 注册系统
RegisterSystem(new AsyncTestSystem());
// 订阅 Ready 事件
Context.RegisterEvent(_ => { ReadyEventFired = true; });
}
///
/// 进入阶段时记录
///
///
protected override void EnterPhase(ArchitecturePhase next)
{
base.EnterPhase(next);
PhaseHistory.Add(next);
}
}