diff --git a/AM2RPortHelper.sln b/AM2RPortHelper.sln
index 5d0dd7e..473c0b3 100644
--- a/AM2RPortHelper.sln
+++ b/AM2RPortHelper.sln
@@ -7,6 +7,14 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AM2RPortHelperCLI", "AM2RPo
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AM2RPortHelperLib", "AM2RPortHelperLib\AM2RPortHelperLib.csproj", "{FB200270-51C9-45FC-BF9C-E9006576D00A}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AM2RPortHelperGUI", "AM2RPortHelperGUI\AM2RPortHelperGUI\AM2RPortHelperGUI.csproj", "{A803417B-9A25-4166-820F-6089D7EE84A9}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AM2RPortHelperGUI.Gtk", "AM2RPortHelperGUI\AM2RPortHelperGUI.Gtk\AM2RPortHelperGUI.Gtk.csproj", "{05041346-DD3B-40BB-AA1B-3D69B4DD2ADA}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AM2RPortHelperGUI.Mac", "AM2RPortHelperGUI\AM2RPortHelperGUI.Mac\AM2RPortHelperGUI.Mac.csproj", "{21D15228-8BC7-41DB-8913-74AE82566712}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AM2RPortHelperGUI.Wpf", "AM2RPortHelperGUI\AM2RPortHelperGUI.Wpf\AM2RPortHelperGUI.Wpf.csproj", "{4C4043B0-38AB-479A-A4B3-D3F7F39092F0}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -21,6 +29,22 @@ Global
{FB200270-51C9-45FC-BF9C-E9006576D00A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FB200270-51C9-45FC-BF9C-E9006576D00A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FB200270-51C9-45FC-BF9C-E9006576D00A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A803417B-9A25-4166-820F-6089D7EE84A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A803417B-9A25-4166-820F-6089D7EE84A9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A803417B-9A25-4166-820F-6089D7EE84A9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A803417B-9A25-4166-820F-6089D7EE84A9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {05041346-DD3B-40BB-AA1B-3D69B4DD2ADA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {05041346-DD3B-40BB-AA1B-3D69B4DD2ADA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {05041346-DD3B-40BB-AA1B-3D69B4DD2ADA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {05041346-DD3B-40BB-AA1B-3D69B4DD2ADA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {21D15228-8BC7-41DB-8913-74AE82566712}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {21D15228-8BC7-41DB-8913-74AE82566712}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {21D15228-8BC7-41DB-8913-74AE82566712}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {21D15228-8BC7-41DB-8913-74AE82566712}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4C4043B0-38AB-479A-A4B3-D3F7F39092F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4C4043B0-38AB-479A-A4B3-D3F7F39092F0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4C4043B0-38AB-479A-A4B3-D3F7F39092F0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4C4043B0-38AB-479A-A4B3-D3F7F39092F0}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/AM2RPortHelperCLI/AM2RPortHelperCLI.csproj b/AM2RPortHelperCLI/AM2RPortHelperCLI.csproj
index 029503d..51499ea 100644
--- a/AM2RPortHelperCLI/AM2RPortHelperCLI.csproj
+++ b/AM2RPortHelperCLI/AM2RPortHelperCLI.csproj
@@ -16,9 +16,6 @@
PreserveNewest
-
- PreserveNewest
-
diff --git a/AM2RPortHelperGUI/AM2RPortHelperGUI.Gtk/AM2RPortHelperGUI.Gtk.csproj b/AM2RPortHelperGUI/AM2RPortHelperGUI.Gtk/AM2RPortHelperGUI.Gtk.csproj
new file mode 100644
index 0000000..5eafb9a
--- /dev/null
+++ b/AM2RPortHelperGUI/AM2RPortHelperGUI.Gtk/AM2RPortHelperGUI.Gtk.csproj
@@ -0,0 +1,16 @@
+
+
+
+ WinExe
+ net6.0
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AM2RPortHelperGUI/AM2RPortHelperGUI.Gtk/Program.cs b/AM2RPortHelperGUI/AM2RPortHelperGUI.Gtk/Program.cs
new file mode 100644
index 0000000..a983658
--- /dev/null
+++ b/AM2RPortHelperGUI/AM2RPortHelperGUI.Gtk/Program.cs
@@ -0,0 +1,14 @@
+using System;
+using Eto.Forms;
+
+namespace AM2RPortHelperGUI.Gtk
+{
+ class Program
+ {
+ [STAThread]
+ public static void Main(string[] args)
+ {
+ new Application(Eto.Platforms.Gtk).Run(new MainForm());
+ }
+ }
+}
diff --git a/AM2RPortHelperGUI/AM2RPortHelperGUI.Mac/AM2RPortHelperGUI.Mac.csproj b/AM2RPortHelperGUI/AM2RPortHelperGUI.Mac/AM2RPortHelperGUI.Mac.csproj
new file mode 100644
index 0000000..4220c5f
--- /dev/null
+++ b/AM2RPortHelperGUI/AM2RPortHelperGUI.Mac/AM2RPortHelperGUI.Mac.csproj
@@ -0,0 +1,18 @@
+
+
+
+ Exe
+ net6.0
+
+ osx-x64;osx-arm64
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AM2RPortHelperGUI/AM2RPortHelperGUI.Mac/Icon.icns b/AM2RPortHelperGUI/AM2RPortHelperGUI.Mac/Icon.icns
new file mode 100644
index 0000000..8f385bb
Binary files /dev/null and b/AM2RPortHelperGUI/AM2RPortHelperGUI.Mac/Icon.icns differ
diff --git a/AM2RPortHelperGUI/AM2RPortHelperGUI.Mac/Info.plist b/AM2RPortHelperGUI/AM2RPortHelperGUI.Mac/Info.plist
new file mode 100644
index 0000000..8795bf9
--- /dev/null
+++ b/AM2RPortHelperGUI/AM2RPortHelperGUI.Mac/Info.plist
@@ -0,0 +1,20 @@
+
+
+
+
+ CFBundleName
+ AM2RPortHelperGUI
+ CFBundleIdentifier
+ com.example.AM2RPortHelperGUI
+ CFBundleShortVersionString
+ 1.0
+ LSMinimumSystemVersion
+ 10.14
+ CFBundleDevelopmentRegion
+ en
+ NSHumanReadableCopyright
+
+ CFBundleIconFile
+ Icon.icns
+
+
diff --git a/AM2RPortHelperGUI/AM2RPortHelperGUI.Mac/Program.cs b/AM2RPortHelperGUI/AM2RPortHelperGUI.Mac/Program.cs
new file mode 100644
index 0000000..9089b5e
--- /dev/null
+++ b/AM2RPortHelperGUI/AM2RPortHelperGUI.Mac/Program.cs
@@ -0,0 +1,14 @@
+using System;
+using Eto.Forms;
+
+namespace AM2RPortHelperGUI.Mac
+{
+ class Program
+ {
+ [STAThread]
+ public static void Main(string[] args)
+ {
+ new Application(Eto.Platforms.Mac64).Run(new MainForm());
+ }
+ }
+}
diff --git a/AM2RPortHelperGUI/AM2RPortHelperGUI.Wpf/AM2RPortHelperGUI.Wpf.csproj b/AM2RPortHelperGUI/AM2RPortHelperGUI.Wpf/AM2RPortHelperGUI.Wpf.csproj
new file mode 100644
index 0000000..913f146
--- /dev/null
+++ b/AM2RPortHelperGUI/AM2RPortHelperGUI.Wpf/AM2RPortHelperGUI.Wpf.csproj
@@ -0,0 +1,16 @@
+
+
+
+ WinExe
+ net6.0-windows
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AM2RPortHelperGUI/AM2RPortHelperGUI.Wpf/Program.cs b/AM2RPortHelperGUI/AM2RPortHelperGUI.Wpf/Program.cs
new file mode 100644
index 0000000..8ca7e27
--- /dev/null
+++ b/AM2RPortHelperGUI/AM2RPortHelperGUI.Wpf/Program.cs
@@ -0,0 +1,14 @@
+using System;
+using Eto.Forms;
+
+namespace AM2RPortHelperGUI.Wpf
+{
+ class Program
+ {
+ [STAThread]
+ public static void Main(string[] args)
+ {
+ new Application(Eto.Platforms.Wpf).Run(new MainForm());
+ }
+ }
+}
diff --git a/AM2RPortHelperGUI/AM2RPortHelperGUI/AM2RPortHelperGUI.csproj b/AM2RPortHelperGUI/AM2RPortHelperGUI/AM2RPortHelperGUI.csproj
new file mode 100644
index 0000000..489ad3f
--- /dev/null
+++ b/AM2RPortHelperGUI/AM2RPortHelperGUI/AM2RPortHelperGUI.csproj
@@ -0,0 +1,15 @@
+
+
+
+ netstandard2.0
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AM2RPortHelperGUI/AM2RPortHelperGUI/MainForm.cs b/AM2RPortHelperGUI/AM2RPortHelperGUI/MainForm.cs
new file mode 100644
index 0000000..a7aa096
--- /dev/null
+++ b/AM2RPortHelperGUI/AM2RPortHelperGUI/MainForm.cs
@@ -0,0 +1,133 @@
+using System;
+using System.IO;
+using System.Threading.Tasks;
+using AM2RPortHelperLib;
+using Eto.Forms;
+using Eto.Drawing;
+
+namespace AM2RPortHelperGUI
+{
+ public partial class MainForm : Form
+ {
+ public MainForm()
+ {
+ Title = "AM2RPortHelper";
+ MinimumSize = new Size(200, 200);
+
+
+ var mainLayout = new DynamicLayout();
+ mainLayout.BeginVertical();
+ mainLayout.AddRange(labelSelectMod,
+ new Label { Height = 5},
+ filePicker,
+ new Label { Height = 10});
+ mainLayout.EndVertical();
+ mainLayout.BeginCentered();
+ mainLayout.AddRow(checkboxLinux, checkboxAndroid, checkboxMac);
+ mainLayout.AddSpace();
+ mainLayout.EndCentered();
+ mainLayout.BeginVertical();
+ mainLayout.AddRange(new Label { Height = 10}, buttonPort, null);
+ mainLayout.EndVertical();
+
+ var mainPage = new TabPage
+ {
+ Text = "Raw Mods",
+ Content = mainLayout
+ };
+
+ var am2rModLayout = new DynamicLayout();
+ var am2rModPage = new TabPage
+ {
+ Text = "AM2RLauncher Mods",
+ Content = am2rModLayout
+ };
+
+
+ Content = new TabControl
+ {
+ Pages =
+ {
+ mainPage,
+ am2rModPage
+ }
+ };
+
+ // events
+ checkboxAndroid.CheckedChanged += ShouldButtonPortBeEnabled;
+ checkboxLinux.CheckedChanged += ShouldButtonPortBeEnabled;
+ checkboxMac.CheckedChanged += ShouldButtonPortBeEnabled;
+ filePicker.FilePathChanged += ShouldButtonPortBeEnabled;
+ buttonPort.Click += ButtonPortOnClick;
+ }
+ private async void ButtonPortOnClick(object sender, EventArgs e)
+ {
+ DisableAllElements();
+
+ FileInfo modZipPath = new FileInfo(filePicker.FilePath);
+ if (checkboxLinux.Checked.Value)
+ await Task.Run(() => PortHelper.PortWindowsToLinux(modZipPath));
+ if (checkboxAndroid.Checked.Value)
+ await Task.Run(() =>PortHelper.PortWindowsToAndroid(modZipPath));
+ if (checkboxMac.Checked.Value)
+ await Task.Run(() =>PortHelper.PortWindowsToMac(modZipPath));
+
+ EnableAllElements();
+ }
+ private void ShouldButtonPortBeEnabled(object sender, EventArgs e)
+ {
+ // any checkbox + selected mod
+ if ((checkboxAndroid.Checked.Value || checkboxLinux.Checked.Value || checkboxMac.Checked.Value)
+ && !String.IsNullOrWhiteSpace(filePicker.FilePath))
+ buttonPort.Enabled = true;
+ else
+ buttonPort.Enabled = false;
+ }
+
+ private void DisableAllElements()
+ {
+ checkboxAndroid.Enabled = false;
+ checkboxLinux.Enabled = false;
+ checkboxMac.Enabled = false;
+ filePicker.Enabled = false;
+ buttonPort.Enabled = false;
+ }
+
+ private void EnableAllElements()
+ {
+ checkboxAndroid.Enabled = true;
+ checkboxLinux.Enabled = true;
+ checkboxMac.Enabled = true;
+ filePicker.Enabled = true;
+ buttonPort.Enabled = true;
+ }
+
+ private Label labelSelectMod = new Label
+ {
+ Text = "Select Mod:"
+ };
+ private FilePicker filePicker = new FilePicker()
+ {
+ Filters = { new FileFilter("Zip file", "*.zip") }
+ };
+
+ private CheckBox checkboxLinux = new CheckBox()
+ {
+ Text = "Linux"
+ };
+ private CheckBox checkboxAndroid = new CheckBox()
+ {
+ Text = "Android"
+ };
+ private CheckBox checkboxMac = new CheckBox()
+ {
+ Text = "Mac"
+ };
+
+ private Button buttonPort = new Button()
+ {
+ Text = "Port!",
+ Enabled = false
+ };
+ }
+}
\ No newline at end of file
diff --git a/AM2RPortHelperLib/AM2RPortHelperLib.csproj b/AM2RPortHelperLib/AM2RPortHelperLib.csproj
index 073e294..3394079 100644
--- a/AM2RPortHelperLib/AM2RPortHelperLib.csproj
+++ b/AM2RPortHelperLib/AM2RPortHelperLib.csproj
@@ -1,13 +1,19 @@
- net6.0
+ netstandard2.0
enable
- enable
+ 10
+
+
+ PreserveNewest
+
+
+
diff --git a/AM2RPortHelperLib/PortHelper.cs b/AM2RPortHelperLib/PortHelper.cs
index a8091c8..f1d4e78 100644
--- a/AM2RPortHelperLib/PortHelper.cs
+++ b/AM2RPortHelperLib/PortHelper.cs
@@ -23,7 +23,7 @@ public class PortHelper
if (Directory.Exists(extractDirectory))
Directory.Delete(extractDirectory, true);
Console.WriteLine("Extracting...");
- ZipFile.ExtractToDirectory(modZipPath.FullName, extractDirectory, true);
+ ZipFile.ExtractToDirectory(modZipPath.FullName, extractDirectory);
// Move everything into assets folder
Console.WriteLine("Moving into assets folder...");
@@ -56,6 +56,7 @@ public class PortHelper
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(linuxModPath + " already exists! Please move it somewhere else.");
+ Console.ResetColor();
return;
}
Console.WriteLine("Creating zip...");
@@ -160,6 +161,7 @@ public class PortHelper
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(apkModPath + " already exists! Please move it somewhere else.");
+ Console.ResetColor();
return;
}
File.Move(finalApkBuild, apkModPath);
@@ -195,7 +197,7 @@ public class PortHelper
// Extract mod to temp location
Console.WriteLine("Extracting...");
- ZipFile.ExtractToDirectory(modZipPath.FullName, extractDirectory, true);
+ ZipFile.ExtractToDirectory(modZipPath.FullName, extractDirectory);
// Delete unnecessary files, rename data.win, move in the new runner
Console.WriteLine("Delete unnecessary files and lowercase them...");
@@ -268,6 +270,7 @@ public class PortHelper
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(macosModPath + " already exists! Please move it somewhere else.");
+ Console.ResetColor();
return;
}
Console.WriteLine("Creating zip...");