GeWuYou 0e538738df feat(game): 添加游戏内容配置系统和YAML配置校验器
- 实现面向静态游戏内容的AI-First配置方案,支持怪物、物品、技能、任务等数据管理
- 集成YAML作为配置源文件格式,JSON Schema作为结构描述标准
- 提供一对象一文件的目录组织结构和运行时只读查询功能
- 实现Source Generator生成配置类型、表包装和注册/访问辅助代码
- 添加VS Code插件支持配置浏览、raw编辑、schema打开和递归校验功能
- 创建YamlConfigSchemaValidator类提供YAML与JSON Schema的运行时校验能力
- 支持嵌套对象、对象数组、标量数组的递归校验和深层约束检查
- 实现跨表引用验证和配置热重载功能
- 提供详细的错误诊断信息和开发期工具链支持
2026-04-03 16:32:14 +08:00

114 lines
2.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

namespace GFramework.Game.Abstractions.Config;
/// <summary>
/// 表示配置加载过程中可稳定断言的失败类别。
/// 该枚举用于把文件系统、schema 校验、反序列化和跨表引用错误从自由文本消息中抽离出来,
/// 便于日志、测试和上层工具以结构化方式处理失败原因。
/// </summary>
public enum ConfigLoadFailureKind
{
/// <summary>
/// 配置目录不存在。
/// </summary>
ConfigDirectoryNotFound,
/// <summary>
/// 绑定的 schema 文件不存在。
/// </summary>
SchemaFileNotFound,
/// <summary>
/// 读取 schema 文件失败。
/// </summary>
SchemaReadFailed,
/// <summary>
/// schema 文件不是合法 JSON。
/// </summary>
SchemaInvalidJson,
/// <summary>
/// schema 内容超出了当前运行时支持的子集或不满足最小约束。
/// </summary>
SchemaUnsupported,
/// <summary>
/// 读取配置文件失败。
/// </summary>
ConfigFileReadFailed,
/// <summary>
/// YAML 文本在进入 schema 校验阶段前无法被解析。
/// </summary>
YamlParseFailed,
/// <summary>
/// YAML 文档数量或结构不符合运行时约束。
/// </summary>
InvalidYamlDocument,
/// <summary>
/// 对象中出现了重复字段。
/// </summary>
DuplicateProperty,
/// <summary>
/// YAML 中出现了 schema 未声明的字段。
/// </summary>
UnknownProperty,
/// <summary>
/// YAML 缺失 schema 要求的字段。
/// </summary>
MissingRequiredProperty,
/// <summary>
/// YAML 值类型与 schema 声明不匹配。
/// </summary>
PropertyTypeMismatch,
/// <summary>
/// YAML 标量值为 null但 schema 不允许。
/// </summary>
NullScalarValue,
/// <summary>
/// YAML 标量值不在 schema 声明的 enum 集合中。
/// </summary>
EnumValueNotAllowed,
/// <summary>
/// YAML 标量值违反了 schema 声明的最小值、最大值或长度约束。
/// </summary>
ConstraintViolation,
/// <summary>
/// YAML 可被读取,但无法成功反序列化到目标 CLR 类型。
/// </summary>
DeserializationFailed,
/// <summary>
/// 已解析的配置项无法构造成运行时配置表。
/// </summary>
TableBuildFailed,
/// <summary>
/// 跨表引用声明的目标表不可用。
/// </summary>
ReferencedTableNotFound,
/// <summary>
/// 跨表引用值无法转换到目标表主键类型。
/// </summary>
ReferenceKeyTypeMismatch,
/// <summary>
/// 跨表引用值在目标表中不存在。
/// </summary>
ReferencedKeyNotFound,
/// <summary>
/// 兜底的未分类失败。
/// </summary>
UnexpectedFailure
}