2024-04-22 20:58:01 +08:00
|
|
|
using System;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using System.IO;
|
|
|
|
using System.Reflection;
|
|
|
|
using HarmonyLib;
|
|
|
|
using UnityEngine;
|
|
|
|
using System.Text.RegularExpressions;
|
|
|
|
|
|
|
|
namespace AquaMai.UX
|
|
|
|
{
|
|
|
|
[HarmonyPatch]
|
|
|
|
public class LoadJacketPng
|
|
|
|
{
|
|
|
|
public static IEnumerable<MethodBase> TargetMethods()
|
|
|
|
{
|
|
|
|
var AM = typeof(AssetManager);
|
2024-06-19 21:12:29 +08:00
|
|
|
return new[] { AM.GetMethod("GetJacketThumbTexture2D", new[] { typeof(string) }), AM.GetMethod("GetJacketTexture2D", new[] { typeof(string) }) };
|
2024-04-22 20:58:01 +08:00
|
|
|
}
|
2024-06-19 21:12:29 +08:00
|
|
|
|
|
|
|
public static bool Prefix(string filename, ref Texture2D __result, AssetManager __instance)
|
2024-04-22 20:58:01 +08:00
|
|
|
{
|
|
|
|
var matches = Regex.Matches(filename, @"UI_Jacket_(\d+)(_s)?\.png");
|
|
|
|
if (matches.Count < 1)
|
|
|
|
{
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
var id = matches[0].Groups[1].Value;
|
2024-06-26 03:11:56 +08:00
|
|
|
|
|
|
|
var texture = GetJacketTexture2D(id);
|
|
|
|
if (texture is null)
|
|
|
|
{
|
|
|
|
__result = __instance.LoadAsset<Texture2D>($"Jacket/UI_Jacket_{id}.png");
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
__result = texture;
|
|
|
|
}
|
|
|
|
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
private static string GetJacketPath(string id)
|
|
|
|
{
|
2024-06-19 21:12:29 +08:00
|
|
|
foreach (var ext in new[] { ".jpg", ".png", ".webp", ".bmp", ".gif" })
|
2024-04-22 20:58:01 +08:00
|
|
|
{
|
|
|
|
if (File.Exists(Path.Combine(Environment.CurrentDirectory, "LocalAssets", id + ext)))
|
|
|
|
{
|
2024-06-26 03:11:56 +08:00
|
|
|
return Path.Combine(Environment.CurrentDirectory, "LocalAssets", id + ext);
|
2024-04-22 20:58:01 +08:00
|
|
|
}
|
|
|
|
}
|
2024-06-19 21:12:29 +08:00
|
|
|
|
2024-06-26 03:11:56 +08:00
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
public static Texture2D GetJacketTexture2D(string id)
|
|
|
|
{
|
|
|
|
var path = GetJacketPath(id);
|
|
|
|
if (path == null)
|
2024-06-19 21:12:29 +08:00
|
|
|
{
|
2024-06-26 03:11:56 +08:00
|
|
|
return null;
|
2024-06-19 21:12:29 +08:00
|
|
|
}
|
|
|
|
|
2024-06-26 03:11:56 +08:00
|
|
|
var texture = new Texture2D(1, 1);
|
|
|
|
texture.LoadImage(File.ReadAllBytes(path));
|
|
|
|
return texture;
|
|
|
|
}
|
|
|
|
|
|
|
|
public static Texture2D GetJacketTexture2D(int id)
|
|
|
|
{
|
|
|
|
return GetJacketTexture2D($"{id:000000}");
|
2024-04-22 20:58:01 +08:00
|
|
|
}
|
|
|
|
}
|
2024-06-26 03:11:56 +08:00
|
|
|
}
|