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 sealed class SyncTestArchitecture : Architecture
{
private Action? _postRegistrationHook;
///
/// 获取就绪事件是否已触发的状态
///
public bool ReadyEventFired { get; private set; }
///
/// 获取初始化方法是否已调用的状态
///
public bool InitCalled { get; private set; }
///
/// 获取架构阶段历史记录列表
///
public List PhaseHistory { get; } = [];
///
/// 添加注册后钩子函数
///
/// 要添加的钩子函数
public void AddPostRegistrationHook(Action hook) => _postRegistrationHook = hook;
///
/// 初始化架构组件,注册模型、系统并设置事件监听器
///
protected override void Init()
{
InitCalled = true;
RegisterModel(new TestModel());
RegisterSystem(new TestSystem());
_postRegistrationHook?.Invoke(this);
Context.RegisterEvent(_ => { ReadyEventFired = true; });
}
///
/// 进入指定架构阶段时的处理方法,记录阶段历史
///
/// 要进入的下一个架构阶段
protected override void EnterPhase(ArchitecturePhase next)
{
base.EnterPhase(next);
// 记录进入的架构阶段到历史列表中
PhaseHistory.Add(next);
}
}