SettingReader.cs 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using SinMaiLauncher.ChildProcessHolder;
  2. using static System.IO.Path;
  3. namespace SinMaiLauncher.Models;
  4. internal class SettingReader
  5. {
  6. public readonly string BaseDir = Environment.CurrentDirectory;
  7. public readonly string InfraDir;
  8. public IProcessStartInfo Maria;
  9. public IProcessStartInfo AquaDx;
  10. public IProcessStartInfo Injector;
  11. public IProcessStartInfo SinMai;
  12. public string ExternalAppsDir { get; }
  13. public string SinMaiAimeFileDir { get; }
  14. public string SinMaiAimeFilePath { get; }
  15. public string ReplaceAppDataFileDir { get; }
  16. public string ReplaceAppDataFilePath { get; }
  17. public string SinMaiAppFileDir { get; }
  18. public string SinMaiAppFilePath { get; }
  19. public string FfmpegBinPath { get; }
  20. public SinMaiLauncherSettingModel Settings { get; }
  21. public SettingReader(SinMaiLauncherSettingModel settings)
  22. {
  23. ExternalAppsDir = GetFullPath(Combine(BaseDir, "ExternalApps"));
  24. Settings = settings;
  25. FfmpegBinPath = GetFullPath(Combine(BaseDir, settings.FfmpegBinPath));
  26. ReplaceAppDataFileDir = GetFullPath(Combine(BaseDir, settings.ReplaceAppDataFileDir));
  27. ReplaceAppDataFilePath = GetFullPath(Combine(ReplaceAppDataFileDir, settings.ReplaceAppDataFileName));
  28. InfraDir = GetFullPath(Combine(BaseDir, settings.Infra.InfraDir));
  29. var mariaDir = GetFullPath(Combine(InfraDir, settings.Infra.MariaDb.WorkingDir));
  30. var mariaExe = GetFullPath(Combine(mariaDir, settings.Infra.MariaDb.MySqlServerExe));
  31. var mariaArg = settings.Infra.MariaDb.MySqlServerArgs;
  32. Maria = new ProcessStartInfoImpl(mariaDir, mariaExe, mariaArg);
  33. var aquaDxDir = GetFullPath(Combine(InfraDir, settings.Infra.AquaDx.WorkingDir));
  34. var aquaDxJavaExe = GetFullPath(Combine(aquaDxDir, settings.Infra.AquaDx.JavaPath));
  35. var aquaDxJavaArg = settings.Infra.AquaDx.JavaArgs;
  36. AquaDx = new ProcessStartInfoImpl(aquaDxDir, aquaDxJavaExe, aquaDxJavaArg);
  37. var sinMaiDir = GetFullPath(Combine(InfraDir, settings.SinMai.WorkingDir));
  38. var injectorExe = GetFullPath(Combine(sinMaiDir, settings.SinMai.InjectExe));
  39. var injectorArg = settings.SinMai.InjectArgs;
  40. Injector = new ProcessStartInfoImpl(sinMaiDir, injectorExe, injectorArg);
  41. var sinMaiExe = GetFullPath(Combine(sinMaiDir, settings.SinMai.SinMaiExe));
  42. var sinMaiArg = settings.SinMai.SinMaiArgs;
  43. SinMai = new ProcessStartInfoImpl(sinMaiDir, sinMaiExe, sinMaiArg);
  44. SinMaiAimeFileDir = GetFullPath(Combine(sinMaiDir, settings.SinMai.AimeFileDir));
  45. SinMaiAimeFilePath = GetFullPath(Combine(SinMaiAimeFileDir, settings.SinMai.AimeFileName));
  46. SinMaiAppFileDir = GetFullPath(Combine(sinMaiDir, settings.SinMai.AppFileDir));
  47. SinMaiAppFilePath = GetFullPath(Combine(SinMaiAppFileDir, settings.SinMai.AppFileName));
  48. }
  49. private class ProcessStartInfoImpl(string workingDir, string exe, string arg) : IProcessStartInfo
  50. {
  51. public string WorkingDir { get; } = workingDir;
  52. public string Exe { get; } = exe;
  53. public string Arg { get; } = arg;
  54. }
  55. }