SettingReader.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using SinMaiLauncher.ChildProcessHolder;
  2. namespace SinMaiLauncher.Models;
  3. internal class SettingReader
  4. {
  5. public readonly string BaseDir = Environment.CurrentDirectory;
  6. public readonly string InfraDir;
  7. public IProcessStartInfo Maria;
  8. public IProcessStartInfo AquaDx;
  9. public IProcessStartInfo Injector;
  10. public IProcessStartInfo SinMai;
  11. public string AimeFleSinMaiDir { get; set; }
  12. public string AimeFleSinMaiPath { get; set; }
  13. public SinMaiLauncherSettingModel Settings { get; }
  14. public SettingReader(SinMaiLauncherSettingModel settings)
  15. {
  16. Settings = settings;
  17. InfraDir = Path.GetFullPath(Path.Combine(BaseDir, settings.Infra.InfraPath));
  18. var mariaDir = Path.GetFullPath(Path.Combine(InfraDir, settings.Infra.MariaDb.WorkingDir));
  19. var mariaExe = Path.GetFullPath(Path.Combine(mariaDir, settings.Infra.MariaDb.MySqlServerExe));
  20. var mariaArg = settings.Infra.MariaDb.MySqlServerArgs;
  21. Maria = new ProcessStartInfoImpl(mariaDir, mariaExe, mariaArg);
  22. var aquaDxDir = Path.GetFullPath(Path.Combine(InfraDir, settings.Infra.AquaDx.WorkingDir));
  23. var aquaDxJavaExe = Path.GetFullPath(Path.Combine(aquaDxDir, settings.Infra.AquaDx.JavaPath));
  24. var aquaDxJavaArg = settings.Infra.AquaDx.JavaArgs;
  25. AquaDx = new ProcessStartInfoImpl(aquaDxDir, aquaDxJavaExe, aquaDxJavaArg);
  26. var sinMaiDir = Path.GetFullPath(Path.Combine(InfraDir, settings.SinMai.WorkingDir));
  27. var injectorExe = Path.GetFullPath(Path.Combine(sinMaiDir, settings.SinMai.InjectExe));
  28. var injectorArg = settings.SinMai.InjectArgs;
  29. Injector = new ProcessStartInfoImpl(sinMaiDir, injectorExe, injectorArg);
  30. var sinMaiExe = Path.GetFullPath(Path.Combine(sinMaiDir, settings.SinMai.SinMaiExe));
  31. var sinMaiArg = settings.SinMai.SinMaiArgs;
  32. SinMai = new ProcessStartInfoImpl(sinMaiDir, sinMaiExe, sinMaiArg);
  33. AimeFleSinMaiDir = Path.GetFullPath(Path.Combine(sinMaiDir, settings.SinMai.AimeFileDir));
  34. AimeFleSinMaiPath = Path.GetFullPath(Path.Combine(AimeFleSinMaiDir, settings.SinMai.AimeFileName));
  35. }
  36. private class ProcessStartInfoImpl(string workingDir, string exe, string arg) : IProcessStartInfo
  37. {
  38. public string WorkingDir { get; } = workingDir;
  39. public string Exe { get; } = exe;
  40. public string Arg { get; } = arg;
  41. }
  42. }