using Models;
namespace Core;
///
/// 高层控制器(面向 UI/输入)
/// 设计说明:
/// 1) Controller 只负责“指令式操作”,不直接做数值计算。
/// 2) 复杂结算交给系统层(GameSystems)。
/// 注意事项:
/// - 需要可重入性,避免重复触发同一阶段切换。
/// 未来扩展:
/// - 可加入“命令队列”,用于回放或网络同步。
///
public sealed class GameController : IController {
private GameSession _session;
///
/// 初始化控制器
///
/// 游戏会话
public void Initialize(GameSession session) {
_session = session;
}
///
/// 开始执行阶段
///
public void StartExecution() {
if (_session.State.Turn.Phase != GamePhase.Planning) return;
_session.State.Turn.Phase = GamePhase.Execution;
}
///
/// 结束执行阶段
///
public void EndExecution() {
if (_session.State.Turn.Phase != GamePhase.Execution) return;
_session.State.Turn.Phase = GamePhase.Review;
}
///
/// 开始下一回合
///
public void StartNextTurn() {
if (_session.State.Turn.Phase != GamePhase.Review) return;
_session.State.Turn.CurrentTurn++;
_session.State.Turn.Phase = GamePhase.Planning;
}
}