GeWuYou ca82b2701c feat(config): 添加游戏内容配置系统及源代码生成器
- 实现基于 YAML 的静态游戏内容配置管理
- 集成 JSON Schema 结构描述与校验功能
- 提供一对象一文件的目录组织方式
- 支持运行时只读查询与类型安全访问
- 添加 Source Generator 自动生成配置类型和表包装
- 实现 VS Code 插件提供配置浏览与编辑功能
- 添加热重载支持开发期实时配置更新
- 提供官方启动帮助器简化初始化流程
- 支持跨表引用校验与关联表联动重载
- 实现强类型查询辅助方法提升开发效率
2026-04-07 08:38:06 +08:00

89 lines
3.3 KiB
C#

using GFramework.SourceGenerators.Common.Constants;
namespace GFramework.SourceGenerators.Diagnostics;
/// <summary>
/// 提供配置 schema 代码生成相关诊断。
/// </summary>
public static class ConfigSchemaDiagnostics
{
private const string SourceGeneratorsConfigCategory = $"{PathContests.SourceGeneratorsPath}.Config";
/// <summary>
/// schema JSON 无法解析。
/// </summary>
public static readonly DiagnosticDescriptor InvalidSchemaJson = new(
"GF_ConfigSchema_001",
"Config schema JSON is invalid",
"Schema file '{0}' could not be parsed: {1}",
SourceGeneratorsConfigCategory,
DiagnosticSeverity.Error,
true);
/// <summary>
/// schema 顶层必须是 object。
/// </summary>
public static readonly DiagnosticDescriptor RootObjectSchemaRequired = new(
"GF_ConfigSchema_002",
"Config schema root must describe an object",
"Schema file '{0}' must declare a root object schema",
SourceGeneratorsConfigCategory,
DiagnosticSeverity.Error,
true);
/// <summary>
/// schema 必须声明 id 字段作为主键。
/// </summary>
public static readonly DiagnosticDescriptor IdPropertyRequired = new(
"GF_ConfigSchema_003",
"Config schema must declare an id property",
"Schema file '{0}' must declare a required 'id' property for table generation",
SourceGeneratorsConfigCategory,
DiagnosticSeverity.Error,
true);
/// <summary>
/// schema 包含暂不支持的字段类型。
/// </summary>
public static readonly DiagnosticDescriptor UnsupportedPropertyType = new(
"GF_ConfigSchema_004",
"Config schema contains an unsupported property type",
"Property '{1}' in schema file '{0}' uses unsupported type '{2}'",
SourceGeneratorsConfigCategory,
DiagnosticSeverity.Error,
true);
/// <summary>
/// schema 的 id 字段类型不支持作为主键。
/// </summary>
public static readonly DiagnosticDescriptor UnsupportedKeyType = new(
"GF_ConfigSchema_005",
"Config schema uses an unsupported key type",
"Schema file '{0}' uses unsupported id type '{1}'. Supported key types are 'integer' and 'string'.",
SourceGeneratorsConfigCategory,
DiagnosticSeverity.Error,
true);
/// <summary>
/// schema 字段名无法安全映射为 C# 标识符。
/// </summary>
public static readonly DiagnosticDescriptor InvalidGeneratedIdentifier = new(
"GF_ConfigSchema_006",
"Config schema property name cannot be converted to a valid C# identifier",
"Property '{1}' in schema file '{0}' uses schema key '{2}', which generates invalid C# identifier '{3}'",
SourceGeneratorsConfigCategory,
DiagnosticSeverity.Error,
true);
/// <summary>
/// schema 顶层自定义配置目录元数据无效。
/// </summary>
public static readonly DiagnosticDescriptor InvalidConfigRelativePathMetadata = new(
"GF_ConfigSchema_007",
"Config schema uses invalid custom config path metadata",
"Schema file '{0}' uses invalid '{1}' metadata: {2}",
SourceGeneratorsConfigCategory,
DiagnosticSeverity.Error,
true);
}