Finish up cross mapper UI for now

This commit is contained in:
Cj 2024-06-17 20:25:53 -04:00
parent 5bdb37f0e6
commit 0109e55281
4 changed files with 234 additions and 150 deletions

View File

@ -141,18 +141,17 @@ partial class ReCodeItForm
AutoMapperTypesExcludeBox = new ListBox(); AutoMapperTypesExcludeBox = new ListBox();
tabPage5 = new TabPage(); tabPage5 = new TabPage();
groupBox4 = new GroupBox(); groupBox4 = new GroupBox();
CrossPatcherUnsealEnabled = new CheckBox(); CrossPatchRunButton = new Button();
CrossPatchingPublicizeEnabled = new CheckBox(); CrossMapperProjectBuildPath = new TextBox();
groupBox3 = new GroupBox(); CrossPatchingProjectBuildDirButton = new Button();
CrossPatchingRunButton = new Button(); CrossMapperProjTargetAssembly = new TextBox();
textBox4 = new TextBox();
CrossPatchingBuildDirButton = new Button();
textBox3 = new TextBox();
textBox1 = new TextBox();
textBox2 = new TextBox();
CrossPatchingMappingChooseButton = new Button();
CrossPatchingOrigAssemblyButton = new Button();
CrossMappingOutputChooseButton = new Button(); CrossMappingOutputChooseButton = new Button();
groupBox3 = new GroupBox();
CrossPatchRemapOutputButton = new Button();
CrossMapperReferencePath = new TextBox();
CrossPatchRemapButton = new Button();
CrossMapperOriginalAssembly = new TextBox();
CrossPatchingOrigAssemblyButton = new Button();
SettingsTab = new TabPage(); SettingsTab = new TabPage();
groupBox2 = new GroupBox(); groupBox2 = new GroupBox();
SilentModeCheckbox = new CheckBox(); SilentModeCheckbox = new CheckBox();
@ -1416,140 +1415,131 @@ partial class ReCodeItForm
tabPage5.Size = new Size(1336, 953); tabPage5.Size = new Size(1336, 953);
tabPage5.TabIndex = 4; tabPage5.TabIndex = 4;
tabPage5.Text = "Cross Patching"; tabPage5.Text = "Cross Patching";
tabPage5.Click += tabPage5_Click;
// //
// groupBox4 // groupBox4
// //
groupBox4.Controls.Add(CrossPatcherUnsealEnabled); groupBox4.Controls.Add(CrossPatchRunButton);
groupBox4.Controls.Add(CrossPatchingPublicizeEnabled); groupBox4.Controls.Add(CrossMapperProjectBuildPath);
groupBox4.Location = new Point(490, 6); groupBox4.Controls.Add(CrossPatchingProjectBuildDirButton);
groupBox4.Controls.Add(CrossMapperProjTargetAssembly);
groupBox4.Controls.Add(CrossMappingOutputChooseButton);
groupBox4.Location = new Point(13, 174);
groupBox4.Name = "groupBox4"; groupBox4.Name = "groupBox4";
groupBox4.Size = new Size(445, 350); groupBox4.Size = new Size(631, 151);
groupBox4.TabIndex = 22; groupBox4.TabIndex = 22;
groupBox4.TabStop = false; groupBox4.TabStop = false;
groupBox4.Text = "Patch Settings"; groupBox4.Text = "Reverse Patch";
// //
// CrossPatcherUnsealEnabled // CrossPatchRunButton
// //
CrossPatcherUnsealEnabled.AutoSize = true; CrossPatchRunButton.Location = new Point(475, 104);
CrossPatcherUnsealEnabled.Checked = true; CrossPatchRunButton.Name = "CrossPatchRunButton";
CrossPatcherUnsealEnabled.CheckState = CheckState.Checked; CrossPatchRunButton.Size = new Size(150, 34);
CrossPatcherUnsealEnabled.Location = new Point(6, 65); CrossPatchRunButton.TabIndex = 24;
CrossPatcherUnsealEnabled.Name = "CrossPatcherUnsealEnabled"; CrossPatchRunButton.Text = "Reverse Patch";
CrossPatcherUnsealEnabled.Size = new Size(90, 29); CrossPatchRunButton.UseVisualStyleBackColor = true;
CrossPatcherUnsealEnabled.TabIndex = 12; CrossPatchRunButton.Click += CrossPatchRunButton_Click;
CrossPatcherUnsealEnabled.Text = "Unseal";
CrossPatcherUnsealEnabled.UseVisualStyleBackColor = true;
// //
// CrossPatchingPublicizeEnabled // CrossMapperProjectBuildPath
// //
CrossPatchingPublicizeEnabled.AutoSize = true; CrossMapperProjectBuildPath.Location = new Point(6, 30);
CrossPatchingPublicizeEnabled.Checked = true; CrossMapperProjectBuildPath.Name = "CrossMapperProjectBuildPath";
CrossPatchingPublicizeEnabled.CheckState = CheckState.Checked; CrossMapperProjectBuildPath.PlaceholderText = "Input Assembly that was built against the remap assembly";
CrossPatchingPublicizeEnabled.Location = new Point(6, 30); CrossMapperProjectBuildPath.ReadOnly = true;
CrossPatchingPublicizeEnabled.Name = "CrossPatchingPublicizeEnabled"; CrossMapperProjectBuildPath.Size = new Size(501, 31);
CrossPatchingPublicizeEnabled.Size = new Size(106, 29); CrossMapperProjectBuildPath.TabIndex = 15;
CrossPatchingPublicizeEnabled.TabIndex = 11;
CrossPatchingPublicizeEnabled.Text = "Publicize";
CrossPatchingPublicizeEnabled.UseVisualStyleBackColor = true;
// //
// groupBox3 // CrossPatchingProjectBuildDirButton
// //
groupBox3.Controls.Add(CrossPatchingRunButton); CrossPatchingProjectBuildDirButton.Location = new Point(513, 27);
groupBox3.Controls.Add(textBox4); CrossPatchingProjectBuildDirButton.Name = "CrossPatchingProjectBuildDirButton";
groupBox3.Controls.Add(CrossPatchingBuildDirButton); CrossPatchingProjectBuildDirButton.Size = new Size(112, 34);
groupBox3.Controls.Add(textBox3); CrossPatchingProjectBuildDirButton.TabIndex = 20;
groupBox3.Controls.Add(textBox1); CrossPatchingProjectBuildDirButton.Text = "Choose";
groupBox3.Controls.Add(textBox2); CrossPatchingProjectBuildDirButton.UseVisualStyleBackColor = true;
groupBox3.Controls.Add(CrossPatchingMappingChooseButton); CrossPatchingProjectBuildDirButton.Click += CrossPatchingProjectBuildDirButton_Click;
groupBox3.Controls.Add(CrossPatchingOrigAssemblyButton);
groupBox3.Controls.Add(CrossMappingOutputChooseButton);
groupBox3.Location = new Point(13, 6);
groupBox3.Name = "groupBox3";
groupBox3.Size = new Size(445, 350);
groupBox3.TabIndex = 21;
groupBox3.TabStop = false;
groupBox3.Text = "General";
// //
// CrossPatchingRunButton // CrossMapperProjTargetAssembly
// //
CrossPatchingRunButton.Location = new Point(308, 310); CrossMapperProjTargetAssembly.Location = new Point(6, 67);
CrossPatchingRunButton.Name = "CrossPatchingRunButton"; CrossMapperProjTargetAssembly.Name = "CrossMapperProjTargetAssembly";
CrossPatchingRunButton.Size = new Size(112, 34); CrossMapperProjTargetAssembly.PlaceholderText = "Output directory";
CrossPatchingRunButton.TabIndex = 21; CrossMapperProjTargetAssembly.ReadOnly = true;
CrossPatchingRunButton.Text = "Run"; CrossMapperProjTargetAssembly.Size = new Size(501, 31);
CrossPatchingRunButton.UseVisualStyleBackColor = true; CrossMapperProjTargetAssembly.TabIndex = 19;
//
// textBox4
//
textBox4.Location = new Point(6, 39);
textBox4.Name = "textBox4";
textBox4.PlaceholderText = "Original Assembly";
textBox4.ReadOnly = true;
textBox4.Size = new Size(296, 31);
textBox4.TabIndex = 13;
//
// CrossPatchingBuildDirButton
//
CrossPatchingBuildDirButton.Location = new Point(308, 73);
CrossPatchingBuildDirButton.Name = "CrossPatchingBuildDirButton";
CrossPatchingBuildDirButton.Size = new Size(112, 34);
CrossPatchingBuildDirButton.TabIndex = 20;
CrossPatchingBuildDirButton.Text = "Choose";
CrossPatchingBuildDirButton.UseVisualStyleBackColor = true;
//
// textBox3
//
textBox3.Location = new Point(6, 113);
textBox3.Name = "textBox3";
textBox3.PlaceholderText = "Output Directory";
textBox3.ReadOnly = true;
textBox3.Size = new Size(296, 31);
textBox3.TabIndex = 14;
//
// textBox1
//
textBox1.Location = new Point(6, 76);
textBox1.Name = "textBox1";
textBox1.PlaceholderText = "VS build path including file name";
textBox1.ReadOnly = true;
textBox1.Size = new Size(296, 31);
textBox1.TabIndex = 19;
//
// textBox2
//
textBox2.Location = new Point(6, 150);
textBox2.Name = "textBox2";
textBox2.PlaceholderText = "Mapping.json path";
textBox2.ReadOnly = true;
textBox2.Size = new Size(296, 31);
textBox2.TabIndex = 15;
//
// CrossPatchingMappingChooseButton
//
CrossPatchingMappingChooseButton.Location = new Point(308, 147);
CrossPatchingMappingChooseButton.Name = "CrossPatchingMappingChooseButton";
CrossPatchingMappingChooseButton.Size = new Size(112, 34);
CrossPatchingMappingChooseButton.TabIndex = 18;
CrossPatchingMappingChooseButton.Text = "Choose";
CrossPatchingMappingChooseButton.UseVisualStyleBackColor = true;
//
// CrossPatchingOrigAssemblyButton
//
CrossPatchingOrigAssemblyButton.Location = new Point(308, 39);
CrossPatchingOrigAssemblyButton.Name = "CrossPatchingOrigAssemblyButton";
CrossPatchingOrigAssemblyButton.Size = new Size(112, 34);
CrossPatchingOrigAssemblyButton.TabIndex = 16;
CrossPatchingOrigAssemblyButton.Text = "Choose";
CrossPatchingOrigAssemblyButton.UseVisualStyleBackColor = true;
// //
// CrossMappingOutputChooseButton // CrossMappingOutputChooseButton
// //
CrossMappingOutputChooseButton.Location = new Point(308, 110); CrossMappingOutputChooseButton.Location = new Point(513, 66);
CrossMappingOutputChooseButton.Name = "CrossMappingOutputChooseButton"; CrossMappingOutputChooseButton.Name = "CrossMappingOutputChooseButton";
CrossMappingOutputChooseButton.Size = new Size(112, 34); CrossMappingOutputChooseButton.Size = new Size(112, 34);
CrossMappingOutputChooseButton.TabIndex = 17; CrossMappingOutputChooseButton.TabIndex = 17;
CrossMappingOutputChooseButton.Text = "Choose"; CrossMappingOutputChooseButton.Text = "Choose";
CrossMappingOutputChooseButton.UseVisualStyleBackColor = true; CrossMappingOutputChooseButton.UseVisualStyleBackColor = true;
CrossMappingOutputChooseButton.Click += CrossMappingOutputChooseButton_Click;
//
// groupBox3
//
groupBox3.Controls.Add(CrossPatchRemapOutputButton);
groupBox3.Controls.Add(CrossMapperReferencePath);
groupBox3.Controls.Add(CrossPatchRemapButton);
groupBox3.Controls.Add(CrossMapperOriginalAssembly);
groupBox3.Controls.Add(CrossPatchingOrigAssemblyButton);
groupBox3.Location = new Point(13, 6);
groupBox3.Name = "groupBox3";
groupBox3.Size = new Size(631, 162);
groupBox3.TabIndex = 21;
groupBox3.TabStop = false;
groupBox3.Text = "Remap";
//
// CrossPatchRemapOutputButton
//
CrossPatchRemapOutputButton.Location = new Point(513, 75);
CrossPatchRemapOutputButton.Name = "CrossPatchRemapOutputButton";
CrossPatchRemapOutputButton.Size = new Size(112, 34);
CrossPatchRemapOutputButton.TabIndex = 23;
CrossPatchRemapOutputButton.Text = "Choose";
CrossPatchRemapOutputButton.UseVisualStyleBackColor = true;
CrossPatchRemapOutputButton.Click += CrossPatchingProjectReferncePath_Click;
//
// CrossMapperReferencePath
//
CrossMapperReferencePath.Location = new Point(6, 77);
CrossMapperReferencePath.Name = "CrossMapperReferencePath";
CrossMapperReferencePath.PlaceholderText = "Remapped Assembly Output (Assembly-CSharp-Remapped)";
CrossMapperReferencePath.ReadOnly = true;
CrossMapperReferencePath.Size = new Size(501, 31);
CrossMapperReferencePath.TabIndex = 14;
//
// CrossPatchRemapButton
//
CrossPatchRemapButton.Location = new Point(513, 115);
CrossPatchRemapButton.Name = "CrossPatchRemapButton";
CrossPatchRemapButton.Size = new Size(112, 34);
CrossPatchRemapButton.TabIndex = 21;
CrossPatchRemapButton.Text = "Remap";
CrossPatchRemapButton.UseVisualStyleBackColor = true;
CrossPatchRemapButton.Click += CrossPatchRemapButton_Click;
//
// CrossMapperOriginalAssembly
//
CrossMapperOriginalAssembly.Location = new Point(6, 39);
CrossMapperOriginalAssembly.Name = "CrossMapperOriginalAssembly";
CrossMapperOriginalAssembly.PlaceholderText = "Original Input Target Assembly (Assembly-CSharp)";
CrossMapperOriginalAssembly.ReadOnly = true;
CrossMapperOriginalAssembly.Size = new Size(501, 31);
CrossMapperOriginalAssembly.TabIndex = 13;
//
// CrossPatchingOrigAssemblyButton
//
CrossPatchingOrigAssemblyButton.Location = new Point(513, 37);
CrossPatchingOrigAssemblyButton.Name = "CrossPatchingOrigAssemblyButton";
CrossPatchingOrigAssemblyButton.Size = new Size(112, 34);
CrossPatchingOrigAssemblyButton.TabIndex = 16;
CrossPatchingOrigAssemblyButton.Text = "Choose";
CrossPatchingOrigAssemblyButton.UseVisualStyleBackColor = true;
CrossPatchingOrigAssemblyButton.Click += CrossPatchingOrigAssemblyButton_Click;
// //
// SettingsTab // SettingsTab
// //
@ -1743,19 +1733,15 @@ partial class ReCodeItForm
private TabPage tabPage5; private TabPage tabPage5;
private Button PickNameMangledPathButton; private Button PickNameMangledPathButton;
private TextBox NameMangledAssemblyTextBox; private TextBox NameMangledAssemblyTextBox;
private Button CrossPatchingBuildDirButton; private Button CrossPatchingProjectBuildDirButton;
private TextBox textBox1; private TextBox CrossMapperProjTargetAssembly;
private Button CrossPatchingMappingChooseButton;
private Button CrossMappingOutputChooseButton; private Button CrossMappingOutputChooseButton;
private Button CrossPatchingOrigAssemblyButton; private Button CrossPatchingOrigAssemblyButton;
private TextBox textBox2; private TextBox CrossMapperProjectBuildPath;
private TextBox textBox3; private TextBox CrossMapperReferencePath;
private TextBox textBox4; private TextBox CrossMapperOriginalAssembly;
private GroupBox groupBox4;
private CheckBox CrossPatcherUnsealEnabled;
private CheckBox CrossPatchingPublicizeEnabled;
private GroupBox groupBox3; private GroupBox groupBox3;
private Button CrossPatchingRunButton; private Button CrossPatchRemapButton;
private CheckBox UnsealCheckbox; private CheckBox UnsealCheckbox;
private CheckBox RenamePropertiesCheckbox; private CheckBox RenamePropertiesCheckbox;
private CheckBox PublicizeCheckbox; private CheckBox PublicizeCheckbox;
@ -1778,4 +1764,7 @@ partial class ReCodeItForm
private CheckBox AutoMapperPublicize; private CheckBox AutoMapperPublicize;
private CheckBox AutoMapperRenameProps; private CheckBox AutoMapperRenameProps;
private CheckBox AutoMapperRenameFields; private CheckBox AutoMapperRenameFields;
private Button CrossPatchRemapOutputButton;
private Button CrossPatchRunButton;
private GroupBox groupBox4;
} }

View File

@ -22,6 +22,7 @@ public partial class ReCodeItForm : Form
PopulateDomainUpDowns(); PopulateDomainUpDowns();
RefreshSettingsPage(); RefreshSettingsPage();
RefreshAutoMapperPage(); RefreshAutoMapperPage();
RefreshCrossPatchPage();
RemapTreeView.NodeMouseDoubleClick += EditSelectedRemap; RemapTreeView.NodeMouseDoubleClick += EditSelectedRemap;
Remapper.OnComplete += ReloadTreeView; Remapper.OnComplete += ReloadTreeView;
@ -638,6 +639,98 @@ public partial class ReCodeItForm : Form
#endregion AUTOMAPPER #endregion AUTOMAPPER
#region CROSSPATCHER
/// <summary>
/// Remapper Input
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void CrossPatchingOrigAssemblyButton_Click(object sender, EventArgs e)
{
var result = GUIHelpers.OpenFileDialog("Select the original assembly",
"DLL Files (*.dll)|*.dll|All Files (*.*)|*.*");
if (result != string.Empty)
{
DataProvider.Settings.CrossPatching.OriginalAssemblyPath = result;
CrossMapperOriginalAssembly.Text = result;
DataProvider.SaveAppSettings();
}
}
/// <summary>
/// Remapper Output
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void CrossPatchingProjectReferncePath_Click(object sender, EventArgs e)
{
var result = GUIHelpers.OpenFileDialog("Output path of the Remapped assembly",
"DLL Files (*.dll)|*.dll|All Files (*.*)|*.*");
if (result != string.Empty)
{
DataProvider.Settings.CrossPatching.RemappedOutput = result;
CrossMapperReferencePath.Text = result;
DataProvider.SaveAppSettings();
}
}
/// <summary>
/// Reverse Patch Input - The input path of the assembly referenced by the remapped dll
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void CrossPatchingProjectBuildDirButton_Click(object sender, EventArgs e)
{
var result = GUIHelpers.OpenFileDialog("Select the assembly that referenced the remapped dll",
"DLL Files (*.dll)|*.dll|All Files (*.*)|*.*");
if (result != string.Empty)
{
DataProvider.Settings.CrossPatching.ReversePatchInputPath = result;
CrossMapperProjectBuildPath.Text = result;
DataProvider.SaveAppSettings();
}
}
/// <summary>
/// Reverse Patch output
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void CrossMappingOutputChooseButton_Click(object sender, EventArgs e)
{
var result = GUIHelpers.OpenFileDialog("Output location of the final unmapped dll",
"DLL Files (*.dll)|*.dll|All Files (*.*)|*.*");
if (result != string.Empty)
{
DataProvider.Settings.CrossPatching.ReversePatchOutputPath = result;
CrossMapperProjTargetAssembly.Text = result;
DataProvider.SaveAppSettings();
}
}
private void CrossPatchRemapButton_Click(object sender, EventArgs e)
{
}
private void CrossPatchRunButton_Click(object sender, EventArgs e)
{
}
private void RefreshCrossPatchPage()
{
CrossMapperOriginalAssembly.Text = DataProvider.Settings.CrossPatching.OriginalAssemblyPath;
CrossMapperReferencePath.Text = DataProvider.Settings.CrossPatching.RemappedOutput;
CrossMapperProjectBuildPath.Text = DataProvider.Settings.CrossPatching.ReversePatchInputPath;
CrossMapperProjTargetAssembly.Text = DataProvider.Settings.CrossPatching.ReversePatchOutputPath;
}
#endregion CROSSPATCHER
// Reset All UI elements to default // Reset All UI elements to default
private void ResetAll() private void ResetAll()
{ {
@ -786,16 +879,25 @@ public partial class ReCodeItForm : Form
HasGenericParametersUpDown.BuildStringList("HasGenericParams"); HasGenericParametersUpDown.BuildStringList("HasGenericParams");
} }
#region TAB_REFRESH
private void AutoMapperTab_Click(object sender, EventArgs e) private void AutoMapperTab_Click(object sender, EventArgs e)
{ {
RefreshAutoMapperPage(); RefreshAutoMapperPage();
} }
private void tabPage5_Click(object sender, EventArgs e)
{
RefreshCrossPatchPage();
}
private void SettingsTab_Click(object sender, EventArgs e) private void SettingsTab_Click(object sender, EventArgs e)
{ {
RefreshSettingsPage(); RefreshSettingsPage();
} }
#endregion TAB_REFRESH
/// <summary> /// <summary>
/// Subscribes the the remappers OnComplete event /// Subscribes the the remappers OnComplete event
/// </summary> /// </summary>

View File

@ -111,25 +111,19 @@ public class CrossPatchingSettings
public string OriginalAssemblyPath { get; set; } public string OriginalAssemblyPath { get; set; }
/// <summary> /// <summary>
/// Where should the new reference dll be placed? (This is the remapped one you reference in /// The output path of the remapped assembly
/// your project)
/// </summary> /// </summary>
public string ReferencePath { get; set; } public string RemappedOutput { get; set; }
/// <summary> /// <summary>
/// Path to the mapping file /// The input path of the assembly referenced by the remapped dll
/// </summary> /// </summary>
public string MappingPath { get; set; } public string ReversePatchInputPath { get; set; }
/// <summary> /// <summary>
/// The build path of your project, specifically the absolute path of your projects output assembly. /// Where should the de-patched dll be placed? (This is the one you test/distribute with)
/// </summary> /// </summary>
public string TargetProjectAssemblyBuildPath { get; set; } public string ReversePatchOutputPath { get; set; }
/// <summary>
/// Where should the final cross patched dll be placed? (This is the one you test/distribute with)
/// </summary>
public string OutputPath { get; set; }
} }
/// <summary> /// <summary>

View File

@ -66,10 +66,9 @@
] ]
}, },
"CrossPatching": { "CrossPatching": {
"OriginalAssemblyPath": "", // The path to the original assembly to use as a reference, for unity games its 'Assembly-CSharp.dll' from the games Data/Managed Folder "OriginalAssemblyPath": "G:\\3.8.0 - Dev\\EscapeFromTarkov_Data\\Managed\\Assembly-CSharp.dll", // INPUT: The path to the original assembly to use as a reference, for unity games its 'Assembly-CSharp.dll' from the games Data/Managed Folder
"ReferencePath": "", // Where should the new reference dll be placed? (This is the remapped one you reference in your project) "RemappedOutput": "G:\\development\\SPT-MODS\\StashSearch\\dependencies\\Assembly-CSharp.dll", // OUTPUT: The output path of the remapped assembly
"MappingPath": "./Data/Mappings.jsonc", // Path to the mapping file "ReversePatchInputPath": "G:\\development\\SPT-MODS\\StashSearch\\StashSearch\\bin\\Debug\\net472\\StashSearch.dll", // INPUT: The input path of the assembly referenced by the remapped dll
"TargetProjectAssemblyBuildPath": "", // The build path of your project, specifically the absolute path of your projects output assembly. "ReversePatchOutputPath": "G:\\3.8.0 - Dev\\BepInEx\\Plugins\\StashSearch\\StashSearch.dll" // OUTPUT/TEST/PROD: Where should the de-patched dll be placed? (This is the one you test/distribute with)
"OutputPath": "" // Where should the final cross patched dll be placed? (This is the one you test/distribute with)
} }
} }