Traveller/scripts/utils/ResUtils.cs
2024-07-23 23:03:03 +08:00

90 lines
2.7 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
}
}
}