34 lines
1.5 KiB
C#
34 lines
1.5 KiB
C#
using HarmonyLib;
|
|
using SodaCraft.Localizations;
|
|
using System.Reflection;
|
|
using UnityEngine;
|
|
|
|
namespace UIFrame.Patch
|
|
{
|
|
[HarmonyPatch(typeof(SpriteRendererLocalizor), "Refresh")]
|
|
public class PatchSpriteRendererLocalizorRefresh
|
|
{
|
|
private static FieldInfo spriteRendererField = AccessTools.Field(typeof(SpriteRendererLocalizor), "spriteRenderer");
|
|
|
|
public static void Postfix(SpriteRendererLocalizor __instance)
|
|
{
|
|
if (GameOriginMainMenuUI.titleSprite != null && spriteRendererField != null)
|
|
{
|
|
SpriteRenderer targetSpriteRenderer = spriteRendererField.GetValue(__instance) as SpriteRenderer;
|
|
|
|
if (targetSpriteRenderer != null)
|
|
{
|
|
targetSpriteRenderer.sprite = GameOriginMainMenuUI.titleSprite;
|
|
}
|
|
else
|
|
{
|
|
UnityEngine.Debug.LogWarning($"Harmony Patch: Failed to get SpriteRenderer from {__instance.gameObject.name} (SpriteRendererLocalizor component)'s spriteRenderer field. Value was null or not a SpriteRenderer.");
|
|
}
|
|
} else if (GameOriginMainMenuUI.titleSprite == null) {
|
|
UnityEngine.Debug.LogWarning("Harmony Patch: GameOriginMainMenuUI.titleSprite is null, skipping sprite assignment.");
|
|
} else if (spriteRendererField == null){
|
|
UnityEngine.Debug.LogError("Harmony Patch: Failed to find 'spriteRenderer' field in SpriteRendererLocalizor. Is the field name correct or has it changed?");
|
|
}
|
|
}
|
|
}
|
|
} |