{
  "schemaVersion": 1,
  "atomId": "arrow_path_data_format.aicomponent",
  "bundleType": "aicomponent",
  "category": "gameplay",
  "mode": "fixed",
  "label": { "zh": "箭头路径关卡数据格式", "en": "Arrow path level data format" },
  "tags": ["level-data", "parser", "types", "json", "path", "arrow", "cocos-format", "threejs", "3d", "xz-plane"],
  "bindingRoles": ["levelDataFormat"],
  "coordinateSystems": ["phaser-y-down", "threejs-xz"],
  "scaffold": {
    "files": {
      "src/game/levels/LevelTypes.ts": {
        "source": "ref/LevelTypes.ts",
        "mode": "full",
        "weight": 10
      },
      "src/game/levels/LevelParser.ts": {
        "source": "ref/LevelParser.ts",
        "mode": "full",
        "weight": 10
      }
    }
  },
  "exports": [
    { "name": "GridPoint",         "kind": "type",     "location": "src/game/levels/LevelTypes.ts" },
    { "name": "ArrowDirection",    "kind": "enum",     "location": "src/game/levels/LevelTypes.ts" },
    { "name": "LevelPath",         "kind": "type",     "location": "src/game/levels/LevelTypes.ts" },
    { "name": "RawLevelJson",      "kind": "type",     "location": "src/game/levels/LevelTypes.ts" },
    { "name": "ParsedLevel",       "kind": "type",     "location": "src/game/levels/LevelTypes.ts" },
    { "name": "ThemeVariantConfig","kind": "interface","location": "src/game/levels/LevelTypes.ts" },
    { "name": "parseLevelJson",    "kind": "function", "location": "src/game/levels/LevelParser.ts" },
    { "name": "CoordinateSystem",  "kind": "type",     "location": "src/game/levels/LevelTypes.ts" },
    { "name": "GridPoint3D",       "kind": "type",     "location": "src/game/levels/LevelTypes.ts" },
    { "name": "directionToAngleY", "kind": "function", "location": "src/game/levels/LevelTypes.ts" },
    { "name": "directionToDelta3D","kind": "function", "location": "src/game/levels/LevelTypes.ts" },
    { "name": "parseLevelFor3D",   "kind": "function", "location": "src/game/levels/LevelParser.ts" }
  ],
  "neutralDescriptor": {
    "geometry": "structured data types for a grid-based level format with polyline paths and directional arrowheads",
    "layers": ["data-schema", "json-parser", "coordinate-transform"],
    "replaceable": ["coordinate system convention", "JSON format flavor"]
  },
  "usageHints": [
    "RawLevelJson 是从 Cocos Creator 导出的原始关卡 JSON 格式（y 轴向上）",
    "parseLevelJson() 负责将 Cocos 坐标翻转为 Phaser 坐标（y 从上往下）",
    "ParsedLevel.paths 是已经离散化的路径，包含 indices（格子索引）和 direction",
    "支持两种坐标系：phaser-y-down（2D 屏幕）和 threejs-xz（3D XZ 平面），通过 parseLevelFor3D() 解析",
    "directionToAngleY() 提供 Three.js Y 轴旋转角度映射，假设模型默认朝向 +Z",
    "directionToDelta3D() 提供 3D 方向位移向量，用于计算滑出路径"
  ],
  "files": {
    "skill": "SKILL.md",
    "levelTypes": "ref/LevelTypes.ts",
    "levelParser": "ref/LevelParser.ts"
  }
}
