- 组合式单位与数值基础重构: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
123 lines
2.4 KiB
C#
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)
|
|
{
|
|
// 预留:人员分配、交接惩罚等
|
|
}
|
|
}
|
|
|