using System.Collections.Generic;
using System.IO;
using UnityEditor;
using UnityEngine;
using PhxhSDK.Editor.FileChecker.Data;
namespace PhxhSDK.Editor.FileChecker
{
///
/// 关卡json文件检查器基类
///
public abstract class BaseLevelChecker : BaseFileChecker
{
public override List fileExtensions => new() { "json" };
public override string CheckerDescription => "关卡JSON文件检查器";
// 这些属性需要在子类中实现
public abstract override string CheckerName { get; }
public abstract override string RecommendedHandling { get; }
public abstract override CheckerTabType belongTab { get; }
protected override void _OnCheckFile(string filePath, TextAsset loadObject)
{
// 检查文件路径是否包含关卡相关目录
if (!IsLevelFile(filePath))
{
return;
}
var result = CheckLevel(filePath, loadObject);
if (result != null)
{
_PushMsg(result);
}
}
///
/// 检查是否为关卡文件
///
/// 文件路径
/// 是否为关卡文件
protected virtual bool IsLevelFile(string filePath)
{
string normalizedPath = filePath.Replace("\\", "/");
return normalizedPath.Contains("/Levels/") ||
normalizedPath.Contains("/LegionLevels/") ||
(normalizedPath.Contains("/Config/") && Path.GetFileName(filePath).StartsWith("LevelData_"));
}
///
/// 检查单个关卡文件
///
/// 文件路径
/// 文本资源
/// 如果检查失败,返回失败信息;如果检查通过,返回null
public abstract string CheckLevel(string filePath, TextAsset textAsset);
}
}