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...");