diff --git a/AssetStudioGUI/AssetStudioGUIForm.Designer.cs b/AssetStudioGUI/AssetStudioGUIForm.Designer.cs index 5e033a30..a8c732a5 100644 --- a/AssetStudioGUI/AssetStudioGUIForm.Designer.cs +++ b/AssetStudioGUI/AssetStudioGUIForm.Designer.cs @@ -76,6 +76,9 @@ private void InitializeComponent() this.debugMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItem15 = new System.Windows.Forms.ToolStripMenuItem(); this.exportClassStructuresMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.aboutAssetStudioToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.donateAssetStudioToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.splitContainer1 = new System.Windows.Forms.SplitContainer(); this.tabControl1 = new System.Windows.Forms.TabControl(); this.tabPage1 = new System.Windows.Forms.TabPage(); @@ -155,7 +158,8 @@ private void InitializeComponent() this.modelToolStripMenuItem, this.exportToolStripMenuItem, this.filterTypeToolStripMenuItem, - this.debugMenuItem}); + this.debugMenuItem, + this.aboutToolStripMenuItem}); this.menuStrip1.Location = new System.Drawing.Point(0, 0); this.menuStrip1.Name = "menuStrip1"; this.menuStrip1.Size = new System.Drawing.Size(1264, 25); @@ -524,6 +528,29 @@ private void InitializeComponent() this.exportClassStructuresMenuItem.Text = "Export class structures"; this.exportClassStructuresMenuItem.Click += new System.EventHandler(this.exportClassStructuresMenuItem_Click); // + // aboutToolStripMenuItem + // + this.aboutToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.aboutAssetStudioToolStripMenuItem, + this.donateAssetStudioToolStripMenuItem}); + this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem"; + this.aboutToolStripMenuItem.Size = new System.Drawing.Size(55, 21); + this.aboutToolStripMenuItem.Text = "About"; + // + // aboutAssetStudioToolStripMenuItem + // + this.aboutAssetStudioToolStripMenuItem.Name = "aboutAssetStudioToolStripMenuItem"; + this.aboutAssetStudioToolStripMenuItem.Size = new System.Drawing.Size(206, 22); + this.aboutAssetStudioToolStripMenuItem.Text = "About AssetStudio"; + this.aboutAssetStudioToolStripMenuItem.Click += new System.EventHandler(this.aboutAssetStudioToolStripMenuItem_Click); + // + // donateAssetStudioToolStripMenuItem + // + this.donateAssetStudioToolStripMenuItem.Name = "donateAssetStudioToolStripMenuItem"; + this.donateAssetStudioToolStripMenuItem.Size = new System.Drawing.Size(206, 22); + this.donateAssetStudioToolStripMenuItem.Text = "Donate to AssetStudio"; + this.donateAssetStudioToolStripMenuItem.Click += new System.EventHandler(this.donateAssetStudioToolStripMenuItem_Click); + // // splitContainer1 // this.splitContainer1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; @@ -1209,6 +1236,9 @@ private void InitializeComponent() private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem14; private System.Windows.Forms.ToolStripTextBox specifyUnityVersion; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem15; + private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem aboutAssetStudioToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem donateAssetStudioToolStripMenuItem; } } diff --git a/AssetStudioGUI/AssetStudioGUIForm.cs b/AssetStudioGUI/AssetStudioGUIForm.cs index 6d09c35f..35547ddb 100644 --- a/AssetStudioGUI/AssetStudioGUIForm.cs +++ b/AssetStudioGUI/AssetStudioGUIForm.cs @@ -2076,6 +2076,28 @@ private void toolStripMenuItem15_Click(object sender, EventArgs e) logger.ShowErrorMessage = toolStripMenuItem15.Checked; } + private void aboutAssetStudioToolStripMenuItem_Click(object sender, EventArgs e) + { + MessageBox.Show("AssetStudio is a tool for exploring, extracting and exporting assets and assetbundles.\n" + + "For more information, visit https://github.com/zhangjiequan/AssetStudio.", + "About AssetStudio", + MessageBoxButtons.OK, + MessageBoxIcon.Information); + } + + private void donateAssetStudioToolStripMenuItem_Click(object sender, EventArgs e) + { + DonateForm donateForm = new DonateForm(); + + donateForm.StartPosition = FormStartPosition.Manual; + Point center = this.Location; + center.X += (this.Width - donateForm.Width) / 2; + center.Y += (this.Height - donateForm.Height) / 2; + donateForm.Location = center; + + donateForm.ShowDialog(); + } + private void glControl1_MouseWheel(object sender, MouseEventArgs e) { if (glControl1.Visible) diff --git a/AssetStudioGUI/DonateForm.cs b/AssetStudioGUI/DonateForm.cs new file mode 100644 index 00000000..428d8f03 --- /dev/null +++ b/AssetStudioGUI/DonateForm.cs @@ -0,0 +1,34 @@ +using System.Windows.Forms; +using System.Drawing; + +public class DonateForm : Form +{ + public DonateForm() + { + InitializeComponent(); + } + + private void InitializeComponent() + { + this.Icon = global::AssetStudioGUI.Properties.Resources._as; + this.Size = new Size(613, 420); + this.Text = "Donate to AssetStudio"; + + Label label = new Label(); + label.Text = "AssetStudio is a free and open-source software.\nIf you like it and find it helpful, you can buy me a coffee!"; + label.AutoSize = false; + label.Size = new Size(613, 50); + label.Location = new Point(10, 10); + label.Font = new Font(label.Font.FontFamily, 12, FontStyle.Regular); + label.Padding = new Padding(0, 5, 0, 5); + + PictureBox pictureBox = new PictureBox(); + pictureBox.Size = new Size(573, 306); + pictureBox.Location = new Point(10, 60); + pictureBox.SizeMode = PictureBoxSizeMode.StretchImage; + pictureBox.Image = global::AssetStudioGUI.Properties.Resources.donate; + + this.Controls.Add(label); + this.Controls.Add(pictureBox); + } +} \ No newline at end of file diff --git a/AssetStudioGUI/Properties/Resources.Designer.cs b/AssetStudioGUI/Properties/Resources.Designer.cs index 82deaf42..53f84e83 100644 --- a/AssetStudioGUI/Properties/Resources.Designer.cs +++ b/AssetStudioGUI/Properties/Resources.Designer.cs @@ -1,10 +1,10 @@ //------------------------------------------------------------------------------ // -// 此代码由工具生成。 -// 运行时版本:4.0.30319.42000 +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 // -// 对此文件的更改可能会导致不正确的行为,并且如果 -// 重新生成代码,这些更改将会丢失。 +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ @@ -13,13 +13,13 @@ namespace AssetStudioGUI.Properties { /// - /// 一个强类型的资源类,用于查找本地化的字符串等。 + /// A strongly-typed resource class, for looking up localized strings, etc. /// - // 此类是由 StronglyTypedResourceBuilder - // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 - // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen - // (以 /str 作为命令选项),或重新生成 VS 项目。 - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { @@ -33,7 +33,7 @@ internal Resources() { } /// - /// 返回此类使用的缓存的 ResourceManager 实例。 + /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Resources.ResourceManager ResourceManager { @@ -47,8 +47,8 @@ internal Resources() { } /// - /// 重写当前线程的 CurrentUICulture 属性,对 - /// 使用此强类型资源类的所有资源查找执行重写。 + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Globalization.CultureInfo Culture { @@ -61,7 +61,7 @@ internal Resources() { } /// - /// 查找类似于 (图标) 的 System.Drawing.Icon 类型的本地化资源。 + /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). /// internal static System.Drawing.Icon _as { get { @@ -71,7 +71,17 @@ internal static System.Drawing.Icon _as { } /// - /// 查找类似 #version 140 + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap donate { + get { + object obj = ResourceManager.GetObject("donate", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized string similar to #version 140 /// ///in vec3 normal; /// @@ -86,7 +96,7 @@ internal static System.Drawing.Icon _as { /// /// vec3 color = nDotProduct * vec3(1, 0.957, 0.839) / 3.14159; /// color += vec3(0.779, 0.716, 0.453) * ContributionWeights.y; - /// color += vec3(0.368, 0.477, 0. [字符串的其余部分被截断]"; 的本地化字符串。 + /// color += vec3(0.368, 0.477, 0.735) * Contribu [rest of string was truncated]";. /// internal static string fs { get { @@ -95,14 +105,14 @@ internal static string fs { } /// - /// 查找类似 #version 140 + /// Looks up a localized string similar to #version 140 /// ///out vec4 outputColor; /// ///void main() ///{ /// outputColor = vec4(0, 0, 0, 1); - ///} 的本地化字符串。 + ///}. /// internal static string fsBlack { get { @@ -111,7 +121,7 @@ internal static string fsBlack { } /// - /// 查找类似 #version 140 + /// Looks up a localized string similar to #version 140 /// ///out vec4 outputColor; ///in vec4 color; @@ -119,7 +129,7 @@ internal static string fsBlack { ///void main() ///{ /// outputColor = color; - ///} 的本地化字符串。 + ///}. /// internal static string fsColor { get { @@ -128,7 +138,7 @@ internal static string fsColor { } /// - /// 查找 System.Drawing.Bitmap 类型的本地化资源。 + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap preview { get { @@ -138,7 +148,7 @@ internal static System.Drawing.Bitmap preview { } /// - /// 查找类似 #version 140 + /// Looks up a localized string similar to #version 140 /// ///in vec3 vertexPosition; ///in vec3 normalDirection; @@ -155,7 +165,7 @@ internal static System.Drawing.Bitmap preview { /// gl_Position = projMatrix * viewMatrix * modelMatrix * vec4(vertexPosition, 1.0); /// normal = normalDirection; /// color = vertexColor; - ///} 的本地化字符串。 + ///}. /// internal static string vs { get { diff --git a/AssetStudioGUI/Properties/Resources.resx b/AssetStudioGUI/Properties/Resources.resx index 5441d153..91b9ced2 100644 --- a/AssetStudioGUI/Properties/Resources.resx +++ b/AssetStudioGUI/Properties/Resources.resx @@ -117,6 +117,10 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\donate.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + #version 140 @@ -158,7 +162,6 @@ void main() outputColor = color; } - ..\Resources\preview.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a diff --git a/AssetStudioGUI/Resources/donate.png b/AssetStudioGUI/Resources/donate.png new file mode 100644 index 00000000..ea020474 Binary files /dev/null and b/AssetStudioGUI/Resources/donate.png differ