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