using GFramework.Core.extensions; using GFramework.Core.system; namespace GFramework.Game.input; /// /// 输入系统类,负责管理输入上下文堆栈并处理游戏输入事件 /// public class InputSystem : AbstractSystem { private readonly InputContextStack _contextStack = new(); /// /// 将输入上下文推入上下文堆栈 /// /// 要推入的输入上下文对象 public void PushContext(IInputContext ctx) => _contextStack.Push(ctx); /// /// 从上下文堆栈中弹出顶层输入上下文 /// public void PopContext() => _contextStack.Pop(); /// /// 处理游戏输入事件,首先尝试通过上下文堆栈处理,如果未被处理则发送事件 /// /// 要处理的游戏输入事件 public void Handle(IGameInputEvent input) { // 尝试通过上下文堆栈处理输入事件 if (_contextStack.Handle(input)) return; // 如果上下文堆栈未能处理,则发送该事件 this.SendEvent(input); } /// /// 系统初始化方法,在系统启动时调用 /// protected override void OnInit() { } }