{"record":{"id":"0fa3dad4ab118d0d","repo":"babalae/better-genshin-impact","slug":"mapname","errorCode":null,"errorMessage":"暂时不支持展示路径的地图类型:{mapName}","messagePattern":"暂时不支持展示路径的地图类型:(.+?)","errorType":"exception","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"BetterGenshinImpact/ViewModel/Windows/MapViewerViewModel.cs","lineNumber":128,"sourceCode":"        else if (mapName == MapTypes.SeaOfBygoneEras.ToString())\n        {\n            _mapImage = new Mat(Global.Absolute(@\"Assets/Map/SeaOfBygoneEras/SeaOfBygoneEras_0_1024.png\"));\n        }\n        else if (mapName == MapTypes.AncientSacredMountain.ToString())\n        {\n            _mapImage = new Mat(Global.Absolute(@\"Assets/Map/AncientSacredMountain/AncientSacredMountain_0_1024.png\"));\n        }\n        else if (mapName == MapTypes.TempleOfSpace.ToString())\n        {\n            _mapImage = new Mat(Global.Absolute(@\"Assets/Map/TempleOfSpace/TempleOfSpace_0_1024.png\"));\n        }\n        else if (mapName == MapTypes.MoonCanon.ToString())\n        {\n            _mapImage = new Mat(Global.Absolute(@\"Assets/Map/MoonCanon/MoonCanon_0_1024.png\"));\n        }\n        else\n        {\n            throw new Exception(\"暂时不支持展示路径的地图类型:\" + mapName);\n        }\n    }\n\n    public Mat ClipMat(Point2f pos)\n    {\n        try\n        {\n            var len = 256;\n            pos = new Point2f(pos.X - _currentPathingRect.X, pos.Y - _currentPathingRect.Y);\n            Rect rect = new((int)pos.X - len, (int)pos.Y - len, len * 2, len * 2);\n            // 处理越界\n            if (rect.X < 0)\n            {\n                rect.X = 0;\n            }\n            if (rect.Y < 0)\n            {\n                rect.Y = 0;","sourceCodeStart":110,"sourceCodeEnd":146,"githubUrl":"https://github.com/babalae/better-genshin-impact/blob/a7cb36712dcb409be610257d877fcea3597e9d6b/BetterGenshinImpact/ViewModel/Windows/MapViewerViewModel.cs#L110-L146","documentation":"Thrown by MapViewerViewModel.Init when mapName matches none of the known MapTypes enum values (Teyvat, TheChasm, Enkanomiya, SeaOfBygoneEras, AncientSacredMountain, TempleOfSpace, MoonCanon). A pathing file or caller supplied a map name that has no corresponding image-asset branch in Init.","triggerScenarios":"A pathing JSON references a map type string with no asset case; a new MapTypes enum member was added without updating Init; a legacy or unexpected map name is passed in.","commonSituations":"A new game region ships; pathing data uses a typo'd or localized map name; case mismatch between the stored string and the enum; enum extended but asset PNG not bundled.","solutions":["Add the missing map case to Init pointing at the correct Assets/Map/<Name>/<Name>_0_*.png asset.","Validate mapName against the known MapTypes set before calling Init and skip unsupported maps gracefully.","Ensure pathing files only reference MapTypes enum members that have corresponding assets."],"exampleFix":"// before\nelse\n{\n    throw new Exception(\"暂时不支持展示路径的地图类型:\" + mapName);\n}\n\n// after (add the missing case + typed exception)\nelse if (mapName == MapTypes.NewRegion.ToString())\n{\n    _mapImage = new Mat(Global.Absolute(@\"Assets/Map/NewRegion/NewRegion_0_1024.png\"));\n}\nelse\n{\n    throw new ArgumentException($\"暂时不支持展示路径的地图类型:{mapName}\", nameof(mapName));\n}","handlingStrategy":"validation","validationCode":"var supported = new[] { MapTypes.Teyvat, MapTypes.TheChasm, MapTypes.Enkanomiya,\n    MapTypes.SeaOfBygoneEras, MapTypes.AncientSacredMountain, MapTypes.TempleOfSpace, MapTypes.MoonCanon };\nif (!supported.Any(m => m.ToString() == mapName))\n{\n    // skip this map; do not call Init\n}","typeGuard":"static bool IsSupportedMap(string mapName) =>\n    Enum.GetNames<MapTypes>().Contains(mapName);","tryCatchPattern":null,"preventionTips":["Keep the Init branch list in sync with the MapTypes enum.","Skip unsupported maps gracefully instead of throwing during viewer init.","Validate pathing files reference only enum members that have bundled assets."],"tags":["map","pathing","enum"],"backgroundTag":null,"analyzedSha":"a7cb36712dcb409be610257d877fcea3597e9d6b","analyzedAt":"2026-08-13T16:44:57.548Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}