using UnityEngine;
using PhxhSDK.Editor.FileChecker.Data;
using Gameplay.Level;
using PhxhSDK.Phxh;
using System.Collections.Generic;
namespace PhxhSDK.Editor.FileChecker
{
///
/// 关卡文件区域检查器
/// 检查关卡json文件的区域配置是否正确
///
public class LevelFileAreaChecker : BaseLevelChecker
{
public override string CheckerName => "关卡文件区域检查";
public override string RecommendedHandling => "修改关卡文件区域配置";
public override CheckerTabType belongTab => CheckerTabType.Level;
public override bool HasAutoProgress => false;
private HashSet setId = new();
public override string CheckLevel(string filePath, TextAsset textAsset)
{
string res = string.Empty;
if (null == textAsset)
return "文件加载失败";
LevelData levelData = JsonHelper.LoadJsonFromText(textAsset.text);
if(null == levelData)
return $"关卡json反序列化为{nameof(LevelData)}失败";
setId.Clear();
foreach (var patrolRegionData in levelData.patrolRegionData)
{
if(!setId.Add(patrolRegionData.id))
res += $"关卡区域id重复,id:{patrolRegionData.id}\n";
}
if (res.Equals(string.Empty))
return null;
else
return res;
}
}
}