using UnityEngine;
using PhxhSDK.Editor.FileChecker.Data;
using Gameplay.Level;
using PhxhSDK.Phxh;
using System.Collections.Generic;
namespace PhxhSDK.Editor.FileChecker
{
///
/// 关卡文件引导检查器
/// 检查关卡json文件的引导配置是否正确
///
public class LevelFileGuideChecker : 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 guideData in levelData.progressGuideDatas)
{
if(!setId.Add(guideData.id))
res += $"关卡进度引导id重复,id:{guideData.id}\n";
}
foreach (var guideData in levelData.setFlagGuideDatas)
{
if (!setId.Add(guideData.id))
res += $"关卡立标引导id重复,id:{guideData.id}\n";
}
foreach (var guideData in levelData.infoPanelGuideDatas)
{
if (!setId.Add(guideData.id))
res += $"关卡信息版引导id重复,id:{guideData.id}\n";
}
if (res.Equals(string.Empty))
return null;
else
return res;
}
}
}