diff --git a/RobloxAssetDownloader/RobloxAssetDownloader.sln b/RobloxAssetDownloader/RobloxAssetDownloader.sln new file mode 100644 index 0000000..c086332 --- /dev/null +++ b/RobloxAssetDownloader/RobloxAssetDownloader.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.31112.23 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RobloxAssetDownloader", "RobloxAssetDownloader\RobloxAssetDownloader.csproj", "{0469D9EF-8197-48D0-8747-59D3A1FD6112}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0469D9EF-8197-48D0-8747-59D3A1FD6112}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0469D9EF-8197-48D0-8747-59D3A1FD6112}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0469D9EF-8197-48D0-8747-59D3A1FD6112}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0469D9EF-8197-48D0-8747-59D3A1FD6112}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {7E3D67E1-E130-4B25-93BD-B61A032DE3C4} + EndGlobalSection +EndGlobal diff --git a/RobloxAssetDownloader/RobloxAssetDownloader/App.config b/RobloxAssetDownloader/RobloxAssetDownloader/App.config new file mode 100644 index 0000000..3916e0e --- /dev/null +++ b/RobloxAssetDownloader/RobloxAssetDownloader/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/RobloxAssetDownloader/RobloxAssetDownloader/Program.cs b/RobloxAssetDownloader/RobloxAssetDownloader/Program.cs new file mode 100644 index 0000000..1cd6065 --- /dev/null +++ b/RobloxAssetDownloader/RobloxAssetDownloader/Program.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace RobloxAssetDownloader { + static class Program { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new UI()); + } + } + } diff --git a/RobloxAssetDownloader/RobloxAssetDownloader/Properties/AssemblyInfo.cs b/RobloxAssetDownloader/RobloxAssetDownloader/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..6c150a0 --- /dev/null +++ b/RobloxAssetDownloader/RobloxAssetDownloader/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("RobloxAssetDownloader")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("RobloxAssetDownloader")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("0469d9ef-8197-48d0-8747-59d3a1fd6112")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/RobloxAssetDownloader/RobloxAssetDownloader/Properties/Resources.Designer.cs b/RobloxAssetDownloader/RobloxAssetDownloader/Properties/Resources.Designer.cs new file mode 100644 index 0000000..5b7259b --- /dev/null +++ b/RobloxAssetDownloader/RobloxAssetDownloader/Properties/Resources.Designer.cs @@ -0,0 +1,113 @@ +//------------------------------------------------------------------------------ +// +// 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. +// +//------------------------------------------------------------------------------ + +namespace RobloxAssetDownloader.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // 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", "16.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// 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 { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("RobloxAssetDownloader.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 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 { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap background { + get { + object obj = ResourceManager.GetObject("background", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap github { + get { + object obj = ResourceManager.GetObject("github", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). + /// + internal static System.Drawing.Icon logo { + get { + object obj = ResourceManager.GetObject("logo", resourceCulture); + return ((System.Drawing.Icon)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap pants_template { + get { + object obj = ResourceManager.GetObject("pants-template", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap shirt_template { + get { + object obj = ResourceManager.GetObject("shirt-template", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/RobloxAssetDownloader/RobloxAssetDownloader/Properties/Resources.resx b/RobloxAssetDownloader/RobloxAssetDownloader/Properties/Resources.resx new file mode 100644 index 0000000..a94377b --- /dev/null +++ b/RobloxAssetDownloader/RobloxAssetDownloader/Properties/Resources.resx @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\background.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\github.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\logo.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\pants-template.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\shirt-template.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/RobloxAssetDownloader/RobloxAssetDownloader/Properties/Settings.Designer.cs b/RobloxAssetDownloader/RobloxAssetDownloader/Properties/Settings.Designer.cs new file mode 100644 index 0000000..7c5b12e --- /dev/null +++ b/RobloxAssetDownloader/RobloxAssetDownloader/Properties/Settings.Designer.cs @@ -0,0 +1,25 @@ +//------------------------------------------------------------------------------ +// +// 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. +// +//------------------------------------------------------------------------------ + + +namespace RobloxAssetDownloader.Properties { + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } + } diff --git a/RobloxAssetDownloader/RobloxAssetDownloader/Properties/Settings.settings b/RobloxAssetDownloader/RobloxAssetDownloader/Properties/Settings.settings new file mode 100644 index 0000000..abf36c5 --- /dev/null +++ b/RobloxAssetDownloader/RobloxAssetDownloader/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/RobloxAssetDownloader/RobloxAssetDownloader/Resources/background.png b/RobloxAssetDownloader/RobloxAssetDownloader/Resources/background.png new file mode 100644 index 0000000..e107586 Binary files /dev/null and b/RobloxAssetDownloader/RobloxAssetDownloader/Resources/background.png differ diff --git a/RobloxAssetDownloader/RobloxAssetDownloader/Resources/github.png b/RobloxAssetDownloader/RobloxAssetDownloader/Resources/github.png new file mode 100644 index 0000000..73db1f6 Binary files /dev/null and b/RobloxAssetDownloader/RobloxAssetDownloader/Resources/github.png differ diff --git a/RobloxAssetDownloader/RobloxAssetDownloader/Resources/logo.ico b/RobloxAssetDownloader/RobloxAssetDownloader/Resources/logo.ico new file mode 100644 index 0000000..edde791 Binary files /dev/null and b/RobloxAssetDownloader/RobloxAssetDownloader/Resources/logo.ico differ diff --git a/RobloxAssetDownloader/RobloxAssetDownloader/Resources/pants-template.png b/RobloxAssetDownloader/RobloxAssetDownloader/Resources/pants-template.png new file mode 100644 index 0000000..719bd8f Binary files /dev/null and b/RobloxAssetDownloader/RobloxAssetDownloader/Resources/pants-template.png differ diff --git a/RobloxAssetDownloader/RobloxAssetDownloader/Resources/shirt-template.png b/RobloxAssetDownloader/RobloxAssetDownloader/Resources/shirt-template.png new file mode 100644 index 0000000..3e3d49f Binary files /dev/null and b/RobloxAssetDownloader/RobloxAssetDownloader/Resources/shirt-template.png differ diff --git a/RobloxAssetDownloader/RobloxAssetDownloader/RobloxAssetDownloader.csproj b/RobloxAssetDownloader/RobloxAssetDownloader/RobloxAssetDownloader.csproj new file mode 100644 index 0000000..79a765b --- /dev/null +++ b/RobloxAssetDownloader/RobloxAssetDownloader/RobloxAssetDownloader.csproj @@ -0,0 +1,102 @@ + + + + + Debug + AnyCPU + {0469D9EF-8197-48D0-8747-59D3A1FD6112} + WinExe + RobloxAssetDownloader + RobloxAssetDownloader + v4.8 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + Resources\logo.ico + + + + + + + + + + + + + + + + + Form + + + UI.cs + + + + + UI.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/RobloxAssetDownloader/RobloxAssetDownloader/UI.Designer.cs b/RobloxAssetDownloader/RobloxAssetDownloader/UI.Designer.cs new file mode 100644 index 0000000..68d0d06 --- /dev/null +++ b/RobloxAssetDownloader/RobloxAssetDownloader/UI.Designer.cs @@ -0,0 +1,226 @@ + +namespace RobloxAssetDownloader { + partial class UI { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) { + if (disposing && (components != null)) { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(UI)); + this.URLBox = new System.Windows.Forms.TextBox(); + this.DownloadButton = new System.Windows.Forms.Button(); + this.ImageOutput = new System.Windows.Forms.PictureBox(); + this.Shirt = new System.Windows.Forms.RadioButton(); + this.Pants = new System.Windows.Forms.RadioButton(); + this.noOverlay = new System.Windows.Forms.RadioButton(); + this.templateOverlayBg = new System.Windows.Forms.Panel(); + this.overlayText = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.githubLink = new System.Windows.Forms.PictureBox(); + ((System.ComponentModel.ISupportInitialize)(this.ImageOutput)).BeginInit(); + this.templateOverlayBg.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.githubLink)).BeginInit(); + this.SuspendLayout(); + // + // URLBox + // + this.URLBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.URLBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.URLBox.ForeColor = System.Drawing.Color.Gray; + this.URLBox.Location = new System.Drawing.Point(16, 581); + this.URLBox.Margin = new System.Windows.Forms.Padding(7); + this.URLBox.Name = "URLBox"; + this.URLBox.Size = new System.Drawing.Size(544, 39); + this.URLBox.TabIndex = 0; + this.URLBox.Text = "Enter Clothing ID or Catalog URL (eg. 6607924538)"; + this.URLBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.URLBox.TextChanged += new System.EventHandler(this.TextFocus); + this.URLBox.Enter += new System.EventHandler(this.TextFocus); + // + // DownloadButton + // + this.DownloadButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.DownloadButton.BackColor = System.Drawing.Color.White; + this.DownloadButton.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.DownloadButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.DownloadButton.Font = new System.Drawing.Font("Segoe UI Light", 16F); + this.DownloadButton.Location = new System.Drawing.Point(564, 579); + this.DownloadButton.Name = "DownloadButton"; + this.DownloadButton.Size = new System.Drawing.Size(154, 43); + this.DownloadButton.TabIndex = 1; + this.DownloadButton.Text = "Download"; + this.DownloadButton.UseVisualStyleBackColor = false; + this.DownloadButton.Click += new System.EventHandler(this.Download); + // + // ImageOutput + // + this.ImageOutput.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.ImageOutput.Location = new System.Drawing.Point(16, 12); + this.ImageOutput.Name = "ImageOutput"; + this.ImageOutput.Size = new System.Drawing.Size(585, 559); + this.ImageOutput.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; + this.ImageOutput.TabIndex = 2; + this.ImageOutput.TabStop = false; + // + // Shirt + // + this.Shirt.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.Shirt.Appearance = System.Windows.Forms.Appearance.Button; + this.Shirt.BackColor = System.Drawing.Color.White; + this.Shirt.Checked = true; + this.Shirt.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.Shirt.FlatAppearance.CheckedBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(225)))), ((int)(((byte)(136)))), ((int)(((byte)(240))))); + this.Shirt.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.Shirt.Location = new System.Drawing.Point(2, 54); + this.Shirt.Name = "Shirt"; + this.Shirt.Size = new System.Drawing.Size(106, 45); + this.Shirt.TabIndex = 3; + this.Shirt.TabStop = true; + this.Shirt.Text = "Shirt"; + this.Shirt.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.Shirt.UseVisualStyleBackColor = false; + // + // Pants + // + this.Pants.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.Pants.Appearance = System.Windows.Forms.Appearance.Button; + this.Pants.BackColor = System.Drawing.Color.White; + this.Pants.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.Pants.FlatAppearance.CheckedBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(225)))), ((int)(((byte)(136)))), ((int)(((byte)(240))))); + this.Pants.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.Pants.Location = new System.Drawing.Point(2, 101); + this.Pants.Name = "Pants"; + this.Pants.Size = new System.Drawing.Size(106, 45); + this.Pants.TabIndex = 4; + this.Pants.Text = "Pants"; + this.Pants.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.Pants.UseVisualStyleBackColor = false; + // + // noOverlay + // + this.noOverlay.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.noOverlay.Appearance = System.Windows.Forms.Appearance.Button; + this.noOverlay.BackColor = System.Drawing.Color.White; + this.noOverlay.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(100)))), ((int)(((byte)(100))))); + this.noOverlay.FlatAppearance.CheckedBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(225)))), ((int)(((byte)(136)))), ((int)(((byte)(240))))); + this.noOverlay.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.noOverlay.Location = new System.Drawing.Point(2, 148); + this.noOverlay.Name = "noOverlay"; + this.noOverlay.Size = new System.Drawing.Size(106, 45); + this.noOverlay.TabIndex = 5; + this.noOverlay.Text = "None"; + this.noOverlay.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.noOverlay.UseVisualStyleBackColor = false; + // + // templateOverlayBg + // + this.templateOverlayBg.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.templateOverlayBg.BackColor = System.Drawing.Color.White; + this.templateOverlayBg.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.templateOverlayBg.Controls.Add(this.overlayText); + this.templateOverlayBg.Controls.Add(this.noOverlay); + this.templateOverlayBg.Controls.Add(this.Shirt); + this.templateOverlayBg.Controls.Add(this.Pants); + this.templateOverlayBg.Location = new System.Drawing.Point(606, 12); + this.templateOverlayBg.Name = "templateOverlayBg"; + this.templateOverlayBg.Size = new System.Drawing.Size(112, 197); + this.templateOverlayBg.TabIndex = 6; + // + // overlayText + // + this.overlayText.Font = new System.Drawing.Font("Segoe UI Light", 14F); + this.overlayText.Location = new System.Drawing.Point(2, 2); + this.overlayText.Name = "overlayText"; + this.overlayText.Size = new System.Drawing.Size(108, 50); + this.overlayText.TabIndex = 6; + this.overlayText.Text = "Template\r\nOverlay"; + this.overlayText.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label1 + // + this.label1.BackColor = System.Drawing.Color.Transparent; + this.label1.Font = new System.Drawing.Font("Segoe UI Semilight", 9.75F); + this.label1.ForeColor = System.Drawing.Color.White; + this.label1.Location = new System.Drawing.Point(16, 625); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(702, 59); + this.label1.TabIndex = 7; + this.label1.Text = resources.GetString("label1.Text"); + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // githubLink + // + this.githubLink.BackColor = System.Drawing.Color.Transparent; + this.githubLink.Image = global::RobloxAssetDownloader.Properties.Resources.github; + this.githubLink.Location = new System.Drawing.Point(638, 212); + this.githubLink.Name = "githubLink"; + this.githubLink.Size = new System.Drawing.Size(48, 48); + this.githubLink.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.githubLink.TabIndex = 8; + this.githubLink.TabStop = false; + this.githubLink.Click += new System.EventHandler(this.GithubLink); + // + // UI + // + this.AutoScaleDimensions = new System.Drawing.SizeF(13F, 32F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackgroundImage = global::RobloxAssetDownloader.Properties.Resources.background; + this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.ClientSize = new System.Drawing.Size(723, 687); + this.Controls.Add(this.githubLink); + this.Controls.Add(this.DownloadButton); + this.Controls.Add(this.URLBox); + this.Controls.Add(this.ImageOutput); + this.Controls.Add(this.templateOverlayBg); + this.Controls.Add(this.label1); + this.Font = new System.Drawing.Font("Segoe UI Light", 18F); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Margin = new System.Windows.Forms.Padding(7); + this.Name = "UI"; + this.Text = "Roblox Asset Downloader"; + this.Load += new System.EventHandler(this.Loaded); + ((System.ComponentModel.ISupportInitialize)(this.ImageOutput)).EndInit(); + this.templateOverlayBg.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.githubLink)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.TextBox URLBox; + private System.Windows.Forms.Button DownloadButton; + private System.Windows.Forms.PictureBox ImageOutput; + private System.Windows.Forms.RadioButton Shirt; + private System.Windows.Forms.RadioButton Pants; + private System.Windows.Forms.RadioButton noOverlay; + private System.Windows.Forms.Panel templateOverlayBg; + private System.Windows.Forms.Label overlayText; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.PictureBox githubLink; + } + } + diff --git a/RobloxAssetDownloader/RobloxAssetDownloader/UI.cs b/RobloxAssetDownloader/RobloxAssetDownloader/UI.cs new file mode 100644 index 0000000..eed2c8f --- /dev/null +++ b/RobloxAssetDownloader/RobloxAssetDownloader/UI.cs @@ -0,0 +1,67 @@ +using System; +using System.Diagnostics; +using System.Drawing; +using System.IO; +using System.Net; +using System.Text.RegularExpressions; +using System.Windows.Forms; + +namespace RobloxAssetDownloader { + public partial class UI : Form { + public UI() { InitializeComponent(); } + public string GetBetween(string source, string start, string end) { + int Start, End; + if (source.Contains(start) && source.Contains(end)) + if (source.Substring(source.IndexOf(start)).Contains(end)) + try { + Start = source.IndexOf(start, 0) + start.Length; + End = source.IndexOf(end, Start); + return source.Substring(Start, End - Start); } + catch (ArgumentOutOfRangeException) { return ""; } + else return ""; + else return ""; } + private void Loaded(object sender, EventArgs e) { Directory.CreateDirectory(Environment.CurrentDirectory + "\\Download"); } + + private void TextFocus(object sender, EventArgs e) { + URLBox.ForeColor = Color.Black; + if (URLBox.Text == "Enter Clothing ID or Catalog URL (eg. 6607924538)") URLBox.Text = ""; + URLBox.Text = Regex.Replace(URLBox.Text, "[^0-9]", ""); } + + private void GithubLink(object sender, EventArgs e) { Process.Start("https://github.com/uDMBK/RobloxAssetDownloader-CSharp"); } + + private void Download(object sender, EventArgs e) { + string html, imagelocation = ""; + HttpWebRequest request = (HttpWebRequest)WebRequest.Create($"https://assetdelivery.roblox.com/v1/asset/?id={URLBox.Text}"); + request.AutomaticDecompression = DecompressionMethods.GZip; + + using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { + using (Stream stream = response.GetResponseStream()) + using (StreamReader reader = new StreamReader(stream)) { html = reader.ReadToEnd(); }} + + string AssetId = GetBetween(html, "http://www.roblox.com/asset/?id=", ""); + HttpWebRequest imagelocationreq = (HttpWebRequest)WebRequest.Create($"https://assetdelivery.roblox.com/v1/assetid/{AssetId}"); + imagelocationreq.AutomaticDecompression = DecompressionMethods.GZip; + + using (HttpWebResponse iresponse = (HttpWebResponse)imagelocationreq.GetResponse()) + using (Stream istream = iresponse.GetResponseStream()) + using (StreamReader reader = new StreamReader(istream)) { imagelocation = reader.ReadToEnd(); } + + string imageloc = GetBetween(imagelocation, "{\"location\":\"", "\""); + HttpWebRequest imagereq = (HttpWebRequest)WebRequest.Create(imageloc); + imagereq.AutomaticDecompression = DecompressionMethods.GZip; + + Bitmap img = new Bitmap(1, 1); + using (HttpWebResponse iresponse = (HttpWebResponse)imagereq.GetResponse()) + using (Stream istream = iresponse.GetResponseStream()) img = (Bitmap)Image.FromStream(istream); + + if (!noOverlay.Checked) + using (Graphics g = Graphics.FromImage(img)) { + g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; + g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; + + if (Shirt.Checked) g.DrawImage(Properties.Resources.shirt_template, new RectangleF(0, 0, img.Width, img.Height)); + else g.DrawImage(Properties.Resources.pants_template, new RectangleF(0, 0, img.Width, img.Height)); } + ImageOutput.Image = img; + + Directory.CreateDirectory(Environment.CurrentDirectory + "\\Download"); + img.Save($"{Environment.CurrentDirectory}\\Download\\{URLBox.Text}.png", System.Drawing.Imaging.ImageFormat.Png); }}} diff --git a/RobloxAssetDownloader/RobloxAssetDownloader/UI.resx b/RobloxAssetDownloader/RobloxAssetDownloader/UI.resx new file mode 100644 index 0000000..9cc9a00 --- /dev/null +++ b/RobloxAssetDownloader/RobloxAssetDownloader/UI.resx @@ -0,0 +1,497 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Roblox and its various marks and logos are trademarks of Roblox Corporation +Asset Downloader and DMBK Development are not endorsed, sponsored or affiliated with Roblox Corporation. +We take no responsibility for misuse of this tool. Reuploading clothing assets is against the Roblox Community Standards. + + + + + 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 + + + \ No newline at end of file