supervisor-simulator/scripts/Core/GameSystems.cs
wjsjwr b8fecd080f 已把模型层改成组合式结构并补齐 MVC/内容配置骨架:Unit/任务/运行时状态现在通过组件组合,GameManager 作为桥接层改为驱动 GameSession/Controller;同时新增学科/羁绊/装备/任务/肉鸽等定义结构,预留 i18n 与 Mod 内容加载接口。
- 组合式单位与数值基础重构:scripts/Models/UnitModel.cs, scripts/Models/UnitComponents.cs, scripts/Models/StudentModel.cs, scripts/Models/MentorModel.cs, scripts/Models/StaffModel.cs, scripts/Models/PropertyValue.cs, scripts/Models/StatusValue.cs
  - 任务与运行时状态骨架:scripts/Models/Task.cs, scripts/Models/TaskDefinitions.cs, scripts/Models/GameState.cs
  - 配置与规则定义骨架:scripts/Models/DefinitionSupport.cs, scripts/Models/DomainEnums.cs, scripts/Models/Modifiers.cs, scripts/Models/DisciplineDefinitions.cs, scripts/Models/SynergyDefinitions.cs, scripts/Models/ItemDefinitions.cs, scripts/Models/PaperDefinitions.cs, scripts/Models/RogueliteDefinitions.cs, scripts/Models/GameContentDatabase.cs, scripts/Models/CoreIds.cs
  - MVC/会话/系统/i18n/Mod 支撑:scripts/Core/GameSession.cs, scripts/Core/GameSystems.cs, scripts/Core/GameController.cs, scripts/Core/Mvc.cs, scripts/Core/LocalizationService.cs, scripts/Core/ContentRegistry.cs, scripts/Core/ModManifest.cs, scripts/Core/EventBus.cs
  - 主控流程衔接:scripts/GameManager.cs
2025-12-31 23:54:31 +08:00

123 lines
2.4 KiB
C#

using Models;
namespace Core;
/// <summary>
/// 系统层骨架(负责模型变化,不直接处理输入/显示)
/// 设计说明:
/// 1) 每个系统只关注单一职责,形成高内聚低耦合结构。
/// 2) 系统之间通过 GameSession 共享状态,通过事件总线通讯。
/// 注意事项:
/// - 系统逻辑应尽量“幂等”,便于回合重算与调试。
/// 未来扩展:
/// - 可加入“系统执行顺序配置”,支持 Mod 插入新系统。
/// </summary>
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)
{
// 预留:人员分配、交接惩罚等
}
}