195 lines
4.6 KiB
C#
195 lines
4.6 KiB
C#
using System.Collections.Generic;
|
||
|
||
namespace Models;
|
||
|
||
/// <summary>
|
||
/// 运行时全局状态(GameState)
|
||
/// 设计说明:
|
||
/// 1) 将“局内状态”集中在一个聚合对象中,便于存档与调试快照。
|
||
/// 2) 具体子状态按职责拆分:回合/经济/人员/任务/库存/羁绊。
|
||
/// 3) Controller/System 只依赖这份数据,不直接操作 View。
|
||
/// 注意事项:
|
||
/// - 这是运行时数据,不是配置数据;配置请看 *Definition 类。
|
||
/// - 禁止在这里引用 Godot Node,保持纯数据。
|
||
/// 未来扩展:
|
||
/// - 可加入“存档版本号”和“迁移器”,支持版本升级。
|
||
/// - 可加入“局外 Roguelite 状态”,与局内共享接口。
|
||
/// </summary>
|
||
public sealed class GameState
|
||
{
|
||
/// <summary>
|
||
/// 回合状态
|
||
/// </summary>
|
||
public TurnState Turn { get; } = new();
|
||
/// <summary>
|
||
/// 经济状态
|
||
/// </summary>
|
||
public EconomyState Economy { get; } = new();
|
||
/// <summary>
|
||
/// 人员状态
|
||
/// </summary>
|
||
public RosterState Roster { get; } = new();
|
||
/// <summary>
|
||
/// 任务状态
|
||
/// </summary>
|
||
public TaskState Tasks { get; } = new();
|
||
/// <summary>
|
||
/// 库存状态
|
||
/// </summary>
|
||
public InventoryState Inventory { get; } = new();
|
||
/// <summary>
|
||
/// 协同状态
|
||
/// </summary>
|
||
public SynergyState Synergy { get; } = new();
|
||
/// <summary>
|
||
/// 肉鸽状态
|
||
/// </summary>
|
||
public RogueliteState Roguelite { get; } = new();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 游戏阶段
|
||
/// </summary>
|
||
public enum GamePhase
|
||
{
|
||
Planning, // 筹备阶段
|
||
Execution, // 执行阶段
|
||
Review // 结算阶段
|
||
}
|
||
|
||
/// <summary>
|
||
/// 回合状态数据
|
||
/// </summary>
|
||
public sealed class TurnState
|
||
{
|
||
/// <summary>
|
||
/// 当前回合
|
||
/// </summary>
|
||
public int CurrentTurn { get; set; } = 1;
|
||
/// <summary>
|
||
/// 最大回合
|
||
/// </summary>
|
||
public int MaxTurns { get; set; } = 30;
|
||
/// <summary>
|
||
/// 当前阶段
|
||
/// </summary>
|
||
public GamePhase Phase { get; set; } = GamePhase.Planning;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 经济状态数据
|
||
/// </summary>
|
||
public sealed class EconomyState
|
||
{
|
||
/// <summary>
|
||
/// 资金
|
||
/// </summary>
|
||
public int Money { get; set; } = 50000;
|
||
/// <summary>
|
||
/// 声望
|
||
/// </summary>
|
||
public int Reputation { get; set; }
|
||
/// <summary>
|
||
/// 科研点数
|
||
/// </summary>
|
||
public int ResearchPoints { get; set; }
|
||
/// <summary>
|
||
/// 利率
|
||
/// </summary>
|
||
public float InterestRate { get; set; } = 0.0f;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 人员状态数据
|
||
/// </summary>
|
||
public sealed class RosterState
|
||
{
|
||
/// <summary>
|
||
/// 导师模型
|
||
/// </summary>
|
||
public MentorModel Mentor { get; set; } = new("Player");
|
||
/// <summary>
|
||
/// 学生列表
|
||
/// </summary>
|
||
public List<StudentModel> Students { get; } = new();
|
||
/// <summary>
|
||
/// 职工列表
|
||
/// </summary>
|
||
public List<StaffModel> Staffs { get; } = new();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 任务状态数据
|
||
/// </summary>
|
||
public sealed class TaskState
|
||
{
|
||
/// <summary>
|
||
/// 活动任务列表
|
||
/// </summary>
|
||
public List<TaskModel> ActiveTasks { get; } = new();
|
||
/// <summary>
|
||
/// 已完成任务列表
|
||
/// </summary>
|
||
public List<TaskModel> CompletedTasks { get; } = new();
|
||
/// <summary>
|
||
/// 失败任务列表
|
||
/// </summary>
|
||
public List<TaskModel> FailedTasks { get; } = new();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 库存状态数据
|
||
/// </summary>
|
||
public sealed class InventoryState
|
||
{
|
||
/// <summary>
|
||
/// 物品计数
|
||
/// </summary>
|
||
public Dictionary<string, int> ItemCounts { get; } = new();
|
||
/// <summary>
|
||
/// 论文计数
|
||
/// </summary>
|
||
public Dictionary<PaperRank, int> PaperCounts { get; } = new();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 协同状态数据
|
||
/// </summary>
|
||
public sealed class SynergyState
|
||
{
|
||
/// <summary>
|
||
/// 原型堆叠数
|
||
/// </summary>
|
||
public Dictionary<string, int> ArchetypeStacks { get; } = new();
|
||
/// <summary>
|
||
/// 角色堆叠数
|
||
/// </summary>
|
||
public Dictionary<string, int> RoleStacks { get; } = new();
|
||
/// <summary>
|
||
/// 激活的协同ID列表
|
||
/// </summary>
|
||
public List<string> ActiveSynergyIds { get; } = new();
|
||
/// <summary>
|
||
/// 激活的修正包
|
||
/// </summary>
|
||
public ModifierBundle ActiveModifiers { get; } = new();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 肉鸽状态数据
|
||
/// </summary>
|
||
public sealed class RogueliteState
|
||
{
|
||
/// <summary>
|
||
/// 校友卡ID列表
|
||
/// </summary>
|
||
public List<string> AlumniCardIds { get; } = new();
|
||
/// <summary>
|
||
/// 遗产解锁ID列表
|
||
/// </summary>
|
||
public List<string> LegacyUnlockIds { get; } = new();
|
||
/// <summary>
|
||
/// 头衔保留等级
|
||
/// </summary>
|
||
public int TitleRetentionLevel { get; set; }
|
||
} |