A fork of Eusth's IPA
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
2.9KB

  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Reflection;
  6. using System.Text;
  7. namespace IPA
  8. {
  9. public class PatchContext
  10. {
  11. /// <summary>
  12. /// Gets the filename of the executable.
  13. /// </summary>
  14. public string Executable { get; private set; }
  15. /// <summary>
  16. /// Gets the path to the launcher executable (in the IPA folder)
  17. /// </summary>
  18. public string LauncherPathSrc { get; private set; }
  19. public string DataPathSrc { get; private set; }
  20. public string PluginsFolder { get; private set; }
  21. public string ProjectName { get; private set; }
  22. public string DataPathDst { get; private set; }
  23. public string ManagedPath { get; private set; }
  24. public string EngineFile { get; private set; }
  25. public string AssemblyFile { get; private set; }
  26. public string[] Args { get; private set; }
  27. public string ProjectRoot { get; private set; }
  28. public string IPARoot { get; private set; }
  29. public string ShortcutPath { get; private set; }
  30. public string IPA { get; private set; }
  31. public string BackupPath { get; private set; }
  32. private PatchContext() { }
  33. public static PatchContext Create(String[] args)
  34. {
  35. var context = new PatchContext();
  36. context.Args = args;
  37. context.Executable = args[0];
  38. context.ProjectRoot = new FileInfo(context.Executable).Directory.FullName;
  39. context.IPARoot = Path.Combine(context.ProjectRoot, "IPA");
  40. context.IPA = Assembly.GetExecutingAssembly().Location ?? Path.Combine(context.ProjectRoot, "IPA.exe");
  41. context.LauncherPathSrc = Path.Combine(context.IPARoot, "Launcher.exe");
  42. context.DataPathSrc = Path.Combine(context.IPARoot, "Data");
  43. context.PluginsFolder = Path.Combine(context.ProjectRoot, "Plugins");
  44. context.ProjectName = Path.GetFileNameWithoutExtension(context.Executable);
  45. context.DataPathDst = Path.Combine(context.ProjectRoot, context.ProjectName + "_Data");
  46. context.ManagedPath = Path.Combine(context.DataPathDst, "Managed");
  47. context.EngineFile = Path.Combine(context.ManagedPath, (File.Exists(Path.Combine(context.ManagedPath, "UnityEngine.CoreModule.dll")) ? "UnityEngine.CoreModule.dll" : "UnityEngine.dll"));
  48. context.AssemblyFile = Path.Combine(context.ManagedPath, "Assembly-Csharp.dll");
  49. context.BackupPath = Path.Combine(Path.Combine(context.IPARoot, "Backups"), context.ProjectName);
  50. string shortcutName = string.Format("{0} (Patch & Launch)", context.ProjectName);
  51. context.ShortcutPath = Path.Combine(context.ProjectRoot, shortcutName) + ".lnk";
  52. Directory.CreateDirectory(context.BackupPath);
  53. return context;
  54. }
  55. }
  56. }