XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet
公开
关注 0 Fork 0 Star 0
UTF-8
using SpaceEngineersBlueprintEditor.Model;
using XFEExtension.NetCore.FileExtension;

namespace SpaceEngineersBlueprintEditor.Utilities;

/// <summary>
/// 蓝图管理器
/// </summary>
public static class BlueprintsManager
{
    /// <summary>
    /// 本地蓝图
    /// </summary>
    public static List<BlueprintInfo> LocalBlueprints { get; set; } = [];
    /// <summary>
    /// 云端蓝图
    /// </summary>
    public static List<BlueprintInfo> CloudBlueprints { get; set; } = [];
    /// <summary>
    /// 工坊蓝图
    /// </summary>
    public static List<BlueprintInfo> WorkshopBlueprints { get; set; } = [];
    /// <summary>
    /// 加载本地蓝图
    /// </summary>
    /// <returns></returns>
    public static List<BlueprintInfo> LoadLocalBlueprints() => LoadBlueprintsFrom(SpaceEngineersPath.LocalBlueprints);
    /// <summary>
    /// 加载云端蓝图
    /// </summary>
    /// <returns></returns>
    public static List<BlueprintInfo> LoadCloudBlueprints() => LoadBlueprintsFrom(SpaceEngineersPath.CloudBlueprints);
    /// <summary>
    /// 加载工坊蓝图
    /// </summary>
    /// <returns></returns>
    public static List<BlueprintInfo> LoadWorkshopBlueprints() => LoadBlueprintsFrom(SpaceEngineersPath.WorkshopBlueprints);
    /// <summary>
    /// 从指定位置加载蓝图
    /// </summary>
    /// <param name="path">指定目录</param>
    /// <returns></returns>
    public static List<BlueprintInfo> LoadBlueprintsFrom(string path)
    {
        var list = new List<BlueprintInfo>();
        foreach (var directory in Directory.GetDirectories(path))
        {
            var blueprintPath = $@"{directory}\bp.sbc";
            var imagePath = $@"{directory}\thumb.png";
            var hasBlueprint = File.Exists(blueprintPath);
            list.Add(new(imagePath, hasBlueprint, File.Exists(imagePath), Path.GetFileName(directory)!, hasBlueprint ? $"{new FileInfo(blueprintPath).Length.FileSize()}" : string.Empty, blueprintPath));
        }
        return list;
    }
    /// <summary>
    /// 加载蓝图
    /// </summary>
    public static void LoadBlueprints()
    {
        LocalBlueprints = LoadLocalBlueprints();
        CloudBlueprints = LoadCloudBlueprints();
        WorkshopBlueprints = LoadWorkshopBlueprints();
    }
    /// <summary>
    /// 异步加载蓝图
    /// </summary>
    /// <returns>异步任务</returns>
    public static async Task LoadBlueprintsAsync() => await Task.Run(LoadBlueprints);
}