NLDClient-yudde/ProjectNLD/Assets/Editor/LevelCheckers/BaseLevelChecker.cs

60 lines
2.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using System.Collections.Generic;
using System.IO;
using UnityEditor;
using UnityEngine;
using PhxhSDK.Editor.FileChecker.Data;
namespace PhxhSDK.Editor.FileChecker
{
/// <summary>
/// 关卡json文件检查器基类
/// </summary>
public abstract class BaseLevelChecker : BaseFileChecker<TextAsset>
{
public override List<string> 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);
}
}
/// <summary>
/// 检查是否为关卡文件
/// </summary>
/// <param name="filePath">文件路径</param>
/// <returns>是否为关卡文件</returns>
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_"));
}
/// <summary>
/// 检查单个关卡文件
/// </summary>
/// <param name="filePath">文件路径</param>
/// <param name="textAsset">文本资源</param>
/// <returns>如果检查失败返回失败信息如果检查通过返回null</returns>
public abstract string CheckLevel(string filePath, TextAsset textAsset);
}
}