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