AutoTranslatorPlugin.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Text;
  6. using BepInEx;
  7. using ExIni;
  8. using XUnity.AutoTranslator.Plugin.Core;
  9. using XUnity.AutoTranslator.Plugin.Core.Configuration;
  10. using XUnity.AutoTranslator.Plugin.Core.Constants;
  11. namespace XUnity.AutoTranslator.Plugin.BepIn_5x
  12. {
  13. [BepInPlugin( GUID: PluginData.Identifier, Name: PluginData.Name, Version: PluginData.Version )]
  14. public class AutoTranslatorPlugin : BaseUnityPlugin, IPluginEnvironment
  15. {
  16. private IniFile _file;
  17. private string _configPath;
  18. public AutoTranslatorPlugin()
  19. {
  20. PluginPath = @"BepInEx\plugins\XUnity.AutoTranslator";
  21. ConfigPath = @"BepInEx\config";
  22. TranslationPath = @"BepInEx";
  23. _configPath = Path.Combine( ConfigPath, "AutoTranslatorConfig.ini" );
  24. XuaLogger.Current = new BepInLogger();
  25. }
  26. public IniFile Preferences
  27. {
  28. get
  29. {
  30. return ( _file ?? ( _file = ReloadConfig() ) );
  31. }
  32. }
  33. public string PluginPath { get; }
  34. public string ConfigPath { get; }
  35. public string TranslationPath { get; }
  36. public bool AllowRuntimeHooksByDefault => false;
  37. public IniFile ReloadConfig()
  38. {
  39. if( !File.Exists( _configPath ) )
  40. {
  41. return ( _file ?? new IniFile() );
  42. }
  43. IniFile ini = IniFile.FromFile( _configPath );
  44. if( _file == null )
  45. {
  46. return ( _file = ini );
  47. }
  48. _file.Merge( ini );
  49. return _file;
  50. }
  51. public void SaveConfig()
  52. {
  53. _file.Save( _configPath );
  54. }
  55. void Awake()
  56. {
  57. PluginLoader.LoadWithConfig( this );
  58. }
  59. }
  60. }