Traveller/scripts/utils/ResUtils.cs

90 lines
2.7 KiB
C#
Raw Permalink Normal View History

using System;
using System.IO;
namespace ColdMint.scripts.utils;
/// <summary>
/// <para>ResUtils</para>
/// <para>资源文件工具类</para>
/// </summary>
public static class ResUtils
{
/// <summary>
/// <para>The suffix that the game engine adds to the resource file while the game is running</para>
/// <para>游戏运行时,游戏引擎为资源文件添加的后缀</para>
/// </summary>
private const string Suffix = ".remap";
/// <summary>
/// <para>Gets the location of its own dll</para>
/// <para>获取自身dll的存放位置</para>
/// </summary>
/// <returns></returns>
public static string? GetSelfDllFolder()
{
var currentDirectory = Environment.CurrentDirectory;
var osEnum = Config.GetOs(true);
if (osEnum == Config.OsEnum.Editor)
{
return Path.Join(currentDirectory, ".godot", "mono", "temp", "bin", "Debug");
}
if (osEnum == Config.OsEnum.Windows)
{
return Path.Join(currentDirectory, "data_" + Config.SolutionName + "_windows_x86_64");
}
if (osEnum == Config.OsEnum.Linux)
{
return Path.Join(currentDirectory, "data_" + Config.SolutionName + "_linuxbsd_x86_64");
}
return null;
}
/// <summary>
/// <para>The game returns the res directory with a.remap suffix at runtime, causing an error while loading the resource</para>
/// <para>游戏在运行时返回res目录后带有.remap后缀导致加载资源时出错</para>
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public static string GetEditorResPath(string path)
{
if (Config.IsEditor())
{
return path;
}
var index = path.LastIndexOf(Suffix, StringComparison.Ordinal);
return index > -1 ? path[..index] : path;
}
/// <summary>
/// <para>Gets the runtime path of the resource file</para>
/// <para>获取资源文件运行时路径</para>
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public static string GetRunTimeResPath(string path)
{
if (Config.IsEditor())
{
return path;
}
//Determine whether the path is a file path
//判断路径是否为文件路径
var symbolIndex = path.LastIndexOf('.');
if (symbolIndex > -1)
{
//Found the file symbol
//找到了文件符号
var index = path.LastIndexOf(Suffix, StringComparison.Ordinal);
return index > -1 ? path : path + Suffix;
}
else
{
return path;
}
}
}