using Models; namespace Core; /// /// 系统层骨架(负责模型变化,不直接处理输入/显示) /// 设计说明: /// 1) 每个系统只关注单一职责,形成高内聚低耦合结构。 /// 2) 系统之间通过 GameSession 共享状态,通过事件总线通讯。 /// 注意事项: /// - 系统逻辑应尽量“幂等”,便于回合重算与调试。 /// 未来扩展: /// - 可加入“系统执行顺序配置”,支持 Mod 插入新系统。 /// public interface IGameSystem { void Initialize(GameSession session); void Tick(float delta); } public sealed class GameSystems { public TurnSystem Turn { get; } = new(); public TaskSystem Task { get; } = new(); public EconomySystem Economy { get; } = new(); public SynergySystem Synergy { get; } = new(); public AssignmentSystem Assignment { get; } = new(); public void Initialize(GameSession session) { Turn.Initialize(session); Task.Initialize(session); Economy.Initialize(session); Synergy.Initialize(session); Assignment.Initialize(session); } public void Tick(float delta) { Turn.Tick(delta); Task.Tick(delta); Economy.Tick(delta); Synergy.Tick(delta); Assignment.Tick(delta); } } public sealed class TurnSystem : IGameSystem { private GameSession _session; public void Initialize(GameSession session) { _session = session; } public void Tick(float delta) { // 预留:回合推进计时器/阶段切换 } } public sealed class TaskSystem : IGameSystem { private GameSession _session; public void Initialize(GameSession session) { _session = session; } public void Tick(float delta) { // 预留:执行阶段推进任务进度 } } public sealed class EconomySystem : IGameSystem { private GameSession _session; public void Initialize(GameSession session) { _session = session; } public void Tick(float delta) { // 预留:利息结算、工资消耗等 } } public sealed class SynergySystem : IGameSystem { private GameSession _session; public void Initialize(GameSession session) { _session = session; } public void Tick(float delta) { // 预留:根据 roster 统计羁绊层数 } } public sealed class AssignmentSystem : IGameSystem { private GameSession _session; public void Initialize(GameSession session) { _session = session; } public void Tick(float delta) { // 预留:人员分配、交接惩罚等 } }