Chainloader.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using BepInEx.Internal;
  2. using ChaCustom;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. namespace BepInEx
  8. {
  9. public class Chainloader
  10. {
  11. static bool loaded = false;
  12. public static IEnumerable<IUnityPlugin> Plugins;
  13. public static IEnumerable<ITranslationPlugin> TLPlugins;
  14. public static void Initialize()
  15. {
  16. if (loaded)
  17. return;
  18. UnityInjector.ConsoleUtil.ConsoleWindow.Attach();
  19. Console.WriteLine("Chainloader started");
  20. TranslationPlugin translationPlugin = new TranslationPlugin();
  21. Plugins = new List<IUnityPlugin>
  22. {
  23. new DumpScenePlugin(),
  24. new UnlockedInputPlugin(),
  25. translationPlugin
  26. };
  27. TLPlugins = new List<ITranslationPlugin>
  28. {
  29. translationPlugin
  30. };
  31. UnityInjector.ConsoleUtil.ConsoleWindow.Attach();
  32. UnityInjector.ConsoleUtil.ConsoleEncoding.ConsoleCodePage = 932;
  33. Console.WriteLine($"{Plugins.Count()} plugins loaded");
  34. BepInComponent.Create();
  35. loaded = true;
  36. }
  37. public static string TextLoadedHook(string text)
  38. {
  39. foreach (var plugin in TLPlugins)
  40. if (plugin.TryTranslate(text, out string output))
  41. return output;
  42. return text;
  43. }
  44. }
  45. }