SHA256
Refactor Asset Loading
This commit is contained in:
9 files changed
+102
-162
No files matched your search
@@ -52,46 +52,6 @@ internal class CommonWarningDialogUI : MonoBehaviour
|
||||
}
|
||||
}
|
||||
|
||||
private static TMP_FontAsset GetNanumSquareNeoBdFontAsset()
|
||||
{
|
||||
TMP_FontAsset? font = null;
|
||||
if (RenderMod.FontBundle)
|
||||
{
|
||||
try
|
||||
{
|
||||
font = RenderMod.FontBundle.LoadAsset<TMP_FontAsset>("NanumSquareNeoOTF-Bd SDF");
|
||||
}
|
||||
catch
|
||||
{
|
||||
// Loading failed
|
||||
}
|
||||
}
|
||||
|
||||
// Fallback processing
|
||||
if (!font)
|
||||
{
|
||||
try
|
||||
{
|
||||
font = RDString.fontData.fontTMP;
|
||||
}
|
||||
catch
|
||||
{
|
||||
// ignored
|
||||
}
|
||||
}
|
||||
if (!font)
|
||||
{
|
||||
// ReSharper disable once Unity.UnknownResource
|
||||
font = Resources.Load<TMP_FontAsset>("Fonts & Materials/LiberationSans SDF");
|
||||
}
|
||||
|
||||
if (font) return font;
|
||||
var fonts = Resources.FindObjectsOfTypeAll<TMP_FontAsset>();
|
||||
if (fonts.Length > 0) font = fonts[0];
|
||||
|
||||
return font!;
|
||||
}
|
||||
|
||||
public static void ShowDialog(string title, string description, params DialogButton[] buttons)
|
||||
{
|
||||
if (buttons.Length == 0) return;
|
||||
@@ -153,7 +113,7 @@ internal class CommonWarningDialogUI : MonoBehaviour
|
||||
bgRect.offsetMin = Vector2.zero;
|
||||
bgRect.offsetMax = Vector2.zero;
|
||||
|
||||
var font = GetNanumSquareNeoBdFontAsset();
|
||||
var font = ModAssets.NanumSquareNeoNormal;
|
||||
|
||||
// 2. Create modal container
|
||||
var modalContainerObj = new GameObject("ModalContainer");
|
||||
|
||||
+2
-36
@@ -30,39 +30,6 @@ internal class DebugMonitorUI : MonoBehaviour
|
||||
private RectTransform _fillRect = null!;
|
||||
private TextMeshProUGUI _progressText = null!;
|
||||
|
||||
private static TMP_FontAsset GetNanumSquareNeoBdFontAsset()
|
||||
{
|
||||
TMP_FontAsset? font = null;
|
||||
if (RenderMod.FontBundle != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
font = RenderMod.FontBundle.LoadAsset<TMP_FontAsset>("NanumSquareNeoOTF-Bd SDF");
|
||||
}
|
||||
catch
|
||||
{
|
||||
// Loading failed
|
||||
}
|
||||
}
|
||||
|
||||
// Fallback: Use game's own font or built-in TMP SDF font if AssetBundle loading fails
|
||||
if (font == null)
|
||||
{
|
||||
font = RDString.fontData.fontTMP;
|
||||
}
|
||||
if (font == null)
|
||||
{
|
||||
// ReSharper disable once Unity.UnknownResource
|
||||
font = Resources.Load<TMP_FontAsset>("Fonts & Materials/LiberationSans SDF");
|
||||
}
|
||||
|
||||
if (font != null) return font;
|
||||
var fonts = Resources.FindObjectsOfTypeAll<TMP_FontAsset>();
|
||||
if (fonts.Length > 0) font = fonts[0];
|
||||
|
||||
return font!;
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
// Set UI layer (5)
|
||||
@@ -112,8 +79,7 @@ internal class DebugMonitorUI : MonoBehaviour
|
||||
_text.overflowMode = TextOverflowModes.Overflow;
|
||||
|
||||
// Load and apply font
|
||||
var font = GetNanumSquareNeoBdFontAsset();
|
||||
_text.font = font;
|
||||
_text.font = ModAssets.NanumSquareNeoNormal;
|
||||
|
||||
var textRect = textObj.GetComponent<RectTransform>();
|
||||
textRect.anchorMin = Vector2.zero;
|
||||
@@ -166,7 +132,7 @@ internal class DebugMonitorUI : MonoBehaviour
|
||||
_progressText.richText = true;
|
||||
_progressText.fontSize = BarTextFontSize;
|
||||
_progressText.alignment = TextAlignmentOptions.Center;
|
||||
_progressText.font = font;
|
||||
_progressText.font = ModAssets.NanumSquareNeoNormal;
|
||||
_progressText.color = BarTextColor;
|
||||
|
||||
// Add progress bar text outline for readability
|
||||
|
||||
@@ -88,11 +88,11 @@ internal class FFmpegDownloadUI : MonoBehaviour
|
||||
private static TMP_FontAsset GetNanumSquareNeoBdFontAsset()
|
||||
{
|
||||
TMP_FontAsset? font = null;
|
||||
if (RenderMod.FontBundle)
|
||||
if (ModAssets.FontBundle)
|
||||
{
|
||||
try
|
||||
{
|
||||
font = RenderMod.FontBundle.LoadAsset<TMP_FontAsset>("NanumSquareNeoOTF-Bd SDF");
|
||||
font = ModAssets.FontBundle.LoadAsset<TMP_FontAsset>("NanumSquareNeoOTF-Bd SDF");
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
@@ -151,11 +151,11 @@ internal class RenderConfigUIManager : MonoBehaviour
|
||||
};
|
||||
|
||||
// Apply same font as existing UI
|
||||
if (RenderMod.FontBundle)
|
||||
if (ModAssets.FontBundle)
|
||||
{
|
||||
try
|
||||
{
|
||||
var font = RenderMod.FontBundle.LoadAsset<Font>("NanumSquareNeoOTF-Bd");
|
||||
var font = ModAssets.FontBundle.LoadAsset<Font>("NanumSquareNeoOTF-Bd");
|
||||
if (font) { _versionLabel.style.unityFontDefinition = FontDefinition.FromFont(font); }
|
||||
}
|
||||
catch { /* ignored */ }
|
||||
|
||||
+53
-9
@@ -1,25 +1,68 @@
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using ADOFAIRenderer.Util;
|
||||
using MelonLoader;
|
||||
using O5Kit.Core;
|
||||
using TMPro;
|
||||
|
||||
namespace ADOFAIRenderer.UI;
|
||||
|
||||
using UnityEngine;
|
||||
|
||||
public class RendererUIManager : MonoBehaviour
|
||||
[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
|
||||
internal static class ModAssets
|
||||
{
|
||||
public static void Load()
|
||||
{
|
||||
FontBundle = BundleLoader.GetBundle("fonts");
|
||||
NanumSquareNeoNormal = FontBundle.LoadAsset<TMP_FontAsset>("Assets/Fonts/NanumSquareNeoOTF-Bd SDF.asset");
|
||||
NanumSquareNeoBold = FontBundle.LoadAsset<TMP_FontAsset>("Assets/Fonts/NanumSquareNeoOTF-Hv SDF.asset");
|
||||
Melon<RenderMod>.Logger.Msg("Fonts loaded successfully.");
|
||||
|
||||
ShaderBundle = BundleLoader.GetBundle("shaders");
|
||||
ColorConversionShader = ShaderBundle.LoadAsset<ComputeShader>("ColorConversion");
|
||||
Melon<RenderMod>.Logger.Msg("Shader loaded successfully.");
|
||||
}
|
||||
|
||||
public static AssetBundle FontBundle = null!;
|
||||
public static AssetBundle ShaderBundle = null!;
|
||||
|
||||
public static TMP_FontAsset NanumSquareNeoNormal = null!;
|
||||
public static TMP_FontAsset NanumSquareNeoBold = null!;
|
||||
|
||||
public static ComputeShader ColorConversionShader = null!;
|
||||
}
|
||||
|
||||
internal sealed class RendererFontProvider : IFontProvider
|
||||
{
|
||||
private static readonly DefaultFontProvider DefaultFontProvider = new();
|
||||
private bool _disposed;
|
||||
|
||||
public TMP_FontAsset Regular => ModAssets.NanumSquareNeoNormal;
|
||||
public TMP_FontAsset Medium => ModAssets.NanumSquareNeoBold;
|
||||
public TMP_FontAsset Monospace => DefaultFontProvider.Monospace;
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
if (_disposed) return;
|
||||
_disposed = true;
|
||||
}
|
||||
}
|
||||
|
||||
internal class RendererUIManager : MonoBehaviour
|
||||
{
|
||||
private static RendererUIManager? _instance;
|
||||
public static RendererUIManager Instance
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_instance == null)
|
||||
{
|
||||
var go = new GameObject("RendererUIManager");
|
||||
DontDestroyOnLoad(go);
|
||||
_instance = go.AddComponent<RendererUIManager>();
|
||||
}
|
||||
if (_instance != null) return _instance;
|
||||
|
||||
var go = new GameObject("RendererUIManager");
|
||||
DontDestroyOnLoad(go);
|
||||
|
||||
_instance = go.AddComponent<RendererUIManager>();
|
||||
return _instance;
|
||||
}
|
||||
private set => _instance = value;
|
||||
}
|
||||
|
||||
public static O5Context Context => Instance._context;
|
||||
@@ -37,7 +80,8 @@ public class RendererUIManager : MonoBehaviour
|
||||
MiddleClickToDefault = true,
|
||||
SliderSensitivity = 1.0f
|
||||
},
|
||||
theme: O5Theme.Dark
|
||||
theme: O5Theme.Dark,
|
||||
fonts: new RendererFontProvider()
|
||||
);
|
||||
|
||||
_windowManager = O5WindowManager.Create(_context, transform, "RendererMod_Canvas");
|
||||
|
||||
Reference in new issue
Block a user