| | 1 | | using DCL; |
| | 2 | | using System.Collections.Generic; |
| | 3 | | using TMPro; |
| | 4 | |
|
| | 5 | | namespace DCLPlugins.FallbackFontsLoader |
| | 6 | | { |
| | 7 | | public class FallbackFontsLoaderPlugin : IPlugin |
| | 8 | | { |
| | 9 | | private const string FALLBACK_FONTS_ADDRESS = "Assets/Fonts/Fonts Sources/"; |
| 0 | 10 | | private static readonly List<string> FALLBACK_FONTS_TO_LOAD = new () { "NotoSansJP-SemiBold SDF.asset", "NotoSan |
| | 11 | |
|
| | 12 | | private readonly List<AssetPromise_Font> assetPromiseFonts; |
| | 13 | |
|
| 0 | 14 | | public FallbackFontsLoaderPlugin() |
| | 15 | | { |
| 0 | 16 | | assetPromiseFonts = new List<AssetPromise_Font>(); |
| | 17 | |
|
| 0 | 18 | | foreach (string font in FALLBACK_FONTS_TO_LOAD) |
| | 19 | | { |
| 0 | 20 | | var additionalFonts = new AssetPromise_Font(FALLBACK_FONTS_ADDRESS + font); |
| 0 | 21 | | additionalFonts.OnSuccessEvent += AddFallbackFont; |
| 0 | 22 | | AssetPromiseKeeper_Font.i.Keep(additionalFonts); |
| 0 | 23 | | assetPromiseFonts.Add(additionalFonts); |
| | 24 | | } |
| 0 | 25 | | } |
| | 26 | |
|
| | 27 | | public void Dispose() => |
| 0 | 28 | | assetPromiseFonts.ForEach(e => AssetPromiseKeeper_Font.i?.Forget(e)); |
| | 29 | |
|
| | 30 | | private static void AddFallbackFont(Asset_Font obj) |
| | 31 | | { |
| 0 | 32 | | List<TMP_FontAsset> fallbackFontAssets = TMP_Settings.fallbackFontAssets; |
| | 33 | |
|
| 0 | 34 | | if (fallbackFontAssets == null) { fallbackFontAssets = new List<TMP_FontAsset>(); } |
| | 35 | |
|
| 0 | 36 | | fallbackFontAssets.Add(obj.font); |
| 0 | 37 | | TMP_Settings.fallbackFontAssets = fallbackFontAssets; |
| 0 | 38 | | } |
| | 39 | | } |
| | 40 | | } |