GFramework/GFramework.Game/state/GameStateMachineSystem.cs
GeWuYou bbb8d417f6 refactor(state): 将状态机相关类重命名以统一命名规范
- 将 ContextAwareStateMachine 重命名为 StateMachineSystem
- 将 ContextAwareStateMachineTests 重命名为 StateMachineSystemTests
- 将 GameStateMachine 重命名为 GameStateMachineSystem
- 创建新的 IStateMachineSystem 接口继承 ISystem 和 IStateMachine
- 移除 ContextAwareStateMachine 中对 system 的引用
- 将 Context 字段改为私有 _context 字段
- 更新所有测试类中的类型引用以匹配新名称
2026-01-17 21:13:38 +08:00

26 lines
1.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using GFramework.Core.Abstractions.state;
using GFramework.Core.state;
namespace GFramework.Game.state;
/// <summary>
/// 游戏状态机类继承自ContextAwareStateMachine用于管理游戏中的各种状态
/// </summary>
public sealed class GameStateMachineSystem : StateMachineSystem
{
/// <summary>
/// 检查当前状态是否为指定类型的状态
/// </summary>
/// <typeparam name="T">要检查的状态类型必须实现IState接口</typeparam>
/// <returns>如果当前状态是指定类型则返回true否则返回false</returns>
public bool IsIn<T>() where T : IState
=> Current is T;
/// <summary>
/// 获取当前状态的实例,如果当前状态是指定类型则进行类型转换
/// </summary>
/// <typeparam name="T">要获取的状态类型必须是引用类型并实现IState接口</typeparam>
/// <returns>如果当前状态是指定类型则返回转换后的实例否则返回null</returns>
public T? Get<T>() where T : class, IState
=> Current as T;
}