diff --git a/Novetus/NovetusCore/CharCustom/CustomizationFuncs.cs b/Novetus/NovetusCore/CharCustom/CustomizationFuncs.cs index fe97249..7108183 100644 --- a/Novetus/NovetusCore/CharCustom/CustomizationFuncs.cs +++ b/Novetus/NovetusCore/CharCustom/CustomizationFuncs.cs @@ -15,6 +15,9 @@ using System.Windows.Forms; //https://stackoverflow.com/questions/2479771/c-why-am-i-getting-the-process-cannot-access-the-file-because-it-is-being-u public static Image LoadImage(string fileFullName, string fallbackFileFullName = "") { + if (string.IsNullOrWhiteSpace(fileFullName)) + return null; + Image image = null; try @@ -35,7 +38,8 @@ using System.Windows.Forms; } catch (Exception) { - image = LoadImage(fallbackFileFullName); + if (!string.IsNullOrWhiteSpace(fallbackFileFullName)) + image = LoadImage(fallbackFileFullName); } return image; diff --git a/Novetus/NovetusLauncher/Classes/SDK/SDKFuncs.cs b/Novetus/NovetusLauncher/Classes/SDK/SDKFuncs.cs index e9aa42e..bdccde9 100644 --- a/Novetus/NovetusLauncher/Classes/SDK/SDKFuncs.cs +++ b/Novetus/NovetusLauncher/Classes/SDK/SDKFuncs.cs @@ -6,6 +6,7 @@ using System.IO; using System.Windows.Forms; using System.Xml.Linq; using System.Linq; +using System.Collections.Generic; #endregion #region SDKApps @@ -39,7 +40,7 @@ class SDKFuncs } catch (Exception ex) { - MessageBox.Show("The download has experienced an error: " + ex.Message, "Novetus Asset Localizer", MessageBoxButtons.OK, MessageBoxIcon.Information); + MessageBox.Show("The download has experienced an error: " + ex.Message, "Novetus Asset Localizer", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } @@ -155,7 +156,7 @@ class SDKFuncs } catch (Exception ex) { - MessageBox.Show("The download has experienced an error: " + ex.Message, "Novetus Asset Localizer", MessageBoxButtons.OK, MessageBoxIcon.Information); + MessageBox.Show("The download has experienced an error: " + ex.Message, "Novetus Asset Localizer", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { @@ -205,7 +206,7 @@ class SDKFuncs } catch (Exception ex) { - MessageBox.Show("The download has experienced an error: " + ex.Message, "Novetus Asset Localizer", MessageBoxButtons.OK, MessageBoxIcon.Information); + MessageBox.Show("The download has experienced an error: " + ex.Message, "Novetus Asset Localizer", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { @@ -237,7 +238,7 @@ class SDKFuncs } catch (Exception ex) { - MessageBox.Show("The download has experienced an error: " + ex.Message, "Novetus Asset Localizer", MessageBoxButtons.OK, MessageBoxIcon.Information); + MessageBox.Show("The download has experienced an error: " + ex.Message, "Novetus Asset Localizer", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { @@ -827,9 +828,11 @@ class SDKFuncs foreach (var item3 in v3) { - GlobalFuncs.FixedFileCopy(assetpath, outputPath, true); - string fixedfilename = assetfilename; - item3.Value = inGameDir + fixedfilename; + if (!string.IsNullOrWhiteSpace(assetpath)) + { + GlobalFuncs.FixedFileCopy(assetpath, outputPath + "\\" + assetfilename, true); + } + item3.Value = inGameDir + assetfilename; } } } @@ -846,6 +849,19 @@ class SDKFuncs where nodes.Attribute("class").Value == itemClassValue select nodes; + SetItemCoordXML(v, X, Y, Z, CoordClass, CoordName); + } + + public static void SetItemCoordValsNoClassSearch(XDocument doc, double X, double Y, double Z, string CoordClass, string CoordName) + { + var v = from nodes in doc.Descendants("Item") + select nodes; + + SetItemCoordXML(v, X, Y, Z, CoordClass, CoordName); + } + + private static void SetItemCoordXML(IEnumerable v, double X, double Y, double Z, string CoordClass, string CoordName) + { foreach (var item in v) { var v2 = from nodes in item.Descendants(CoordClass) @@ -962,12 +978,24 @@ class SDKFuncs } } - public static void CreateItem(string filepath, RobloxFileType type, string itemname, string[] assetfilenames, double[] coordoptions, double[] headoptions, string desctext = "") + public static bool CreateItem(string filepath, RobloxFileType type, string itemname, string[] assetfilenames, double[] coordoptions, double[] headoptions, string desctext = "") { + /*MessageBox.Show(assetfilenames[0] + "\n" + + assetfilenames[1] + "\n" + + assetfilenames[2] + "\n" + + assetfilenames[3] + "\n" + + coordoptions[0] + "\n" + + coordoptions[1] + "\n" + + coordoptions[2] + "\n" + + headoptions[0] + "\n" + + headoptions[1] + "\n" + + headoptions[2] + "\n");*/ + string oldfile = File.ReadAllText(filepath); string fixedfile = RobloxXML.RemoveInvalidXmlChars(RobloxXML.ReplaceHexadecimalSymbols(oldfile)); XDocument doc = XDocument.Parse(fixedfile); string savDocPath = GetPathForType(type); + bool success = true; try { @@ -976,12 +1004,12 @@ class SDKFuncs case RobloxFileType.Hat: SetItemFontVals(doc, RobloxDefs.ItemHatFonts, 0, 0, 0, assetfilenames[0], assetfilenames[2]); SetItemFontVals(doc, RobloxDefs.ItemHatFonts, 1, 1, 1, assetfilenames[1], assetfilenames[3]); - SetItemCoordVals(doc, RobloxDefs.ItemHatFonts, coordoptions[0], coordoptions[1], coordoptions[2], "CoordinateFrame", "AttachmentPoint"); + SetItemCoordVals(doc, "Hat", coordoptions[0], coordoptions[1], coordoptions[2], "CoordinateFrame", "AttachmentPoint"); break; case RobloxFileType.Head: SetItemFontVals(doc, RobloxDefs.ItemHeadFonts, 0, 0, 0, assetfilenames[0], assetfilenames[2]); SetItemFontVals(doc, RobloxDefs.ItemHeadFonts, 1, 1, 1, assetfilenames[1], assetfilenames[3]); - SetItemCoordVals(doc, RobloxDefs.ItemHatFonts, coordoptions[0], coordoptions[1], coordoptions[2], "Vector3", "Scale"); + SetItemCoordVals(doc, RobloxDefs.ItemHeadFonts, coordoptions[0], coordoptions[1], coordoptions[2], "Vector3", "Scale"); break; case RobloxFileType.Face: SetItemFontVals(doc, RobloxDefs.ItemFaceTexture, 0, 0, 0, assetfilenames[0], assetfilenames[2]); @@ -998,7 +1026,7 @@ class SDKFuncs break; case RobloxFileType.HeadNoCustomMesh: SetHeadBevel(doc, headoptions[0], headoptions[1], headoptions[2]); - SetItemCoordVals(doc, RobloxDefs.ItemHatFonts, coordoptions[0], coordoptions[1], coordoptions[2], "Vector3", "Scale"); + SetItemCoordValsNoClassSearch(doc, coordoptions[0], coordoptions[1], coordoptions[2], "Vector3", "Scale"); break; default: break; @@ -1006,7 +1034,8 @@ class SDKFuncs } catch (Exception ex) { - MessageBox.Show("The Item Creation SDK has experienced an error: " + ex.Message + ex.StackTrace, "Novetus Item Creation SDK", MessageBoxButtons.OK, MessageBoxIcon.Information); + MessageBox.Show("The Item Creation SDK has experienced an error: " + ex.Message, "Novetus Item Creation SDK", MessageBoxButtons.OK, MessageBoxIcon.Error); + success = false; } finally { @@ -1016,6 +1045,8 @@ class SDKFuncs File.WriteAllText(savDocPath + "\\" + itemname + "_desc.txt", desctext); } } + + return success; } #endregion diff --git a/Novetus/NovetusLauncher/Forms/SDK/AssetSDK.cs b/Novetus/NovetusLauncher/Forms/SDK/AssetSDK.cs index 84851cc..ac39108 100644 --- a/Novetus/NovetusLauncher/Forms/SDK/AssetSDK.cs +++ b/Novetus/NovetusLauncher/Forms/SDK/AssetSDK.cs @@ -61,7 +61,7 @@ public partial class AssetSDK : Form FileInfo[] Files = dinfo.GetFiles("*.mesh"); foreach (FileInfo file in Files) { - if (file.Name.Equals(String.Empty)) + if (file.Name.Equals(string.Empty)) { continue; } diff --git a/Novetus/NovetusLauncher/Forms/SDK/ItemCreationSDK.Designer.cs b/Novetus/NovetusLauncher/Forms/SDK/ItemCreationSDK.Designer.cs index f1dc673..c778c3c 100644 --- a/Novetus/NovetusLauncher/Forms/SDK/ItemCreationSDK.Designer.cs +++ b/Novetus/NovetusLauncher/Forms/SDK/ItemCreationSDK.Designer.cs @@ -33,25 +33,8 @@ partial class ItemCreationSDK this.ItemIconLabel = new System.Windows.Forms.Label(); this.BrowseImageButton = new System.Windows.Forms.Button(); this.ItemSettingsGroup = new System.Windows.Forms.GroupBox(); - this.CreateItemButton = new System.Windows.Forms.Button(); - this.ItemIcon = new System.Windows.Forms.PictureBox(); - this.ItemDescLabel = new System.Windows.Forms.Label(); - this.DescBox = new System.Windows.Forms.TextBox(); - this.ItemNameLabel = new System.Windows.Forms.Label(); - this.ItemNameBox = new System.Windows.Forms.TextBox(); - this.Option1Label = new System.Windows.Forms.Label(); - this.Option1TextBox = new System.Windows.Forms.TextBox(); - this.Option1BrowseButton = new System.Windows.Forms.Button(); - this.Option2BrowseButton = new System.Windows.Forms.Button(); - this.Option2TextBox = new System.Windows.Forms.TextBox(); - this.Option2Label = new System.Windows.Forms.Label(); - this.CoordGroup = new System.Windows.Forms.GroupBox(); - this.XLabel = new System.Windows.Forms.Label(); - this.YLabel = new System.Windows.Forms.Label(); - this.ZLabel = new System.Windows.Forms.Label(); - this.XBox = new System.Windows.Forms.NumericUpDown(); - this.YBox = new System.Windows.Forms.NumericUpDown(); - this.ZBox = new System.Windows.Forms.NumericUpDown(); + this.UsesHatMeshLabel = new System.Windows.Forms.Label(); + this.UsesHatMeshBox = new System.Windows.Forms.ComboBox(); this.MeshOptionsGroup = new System.Windows.Forms.GroupBox(); this.BulgeBox = new System.Windows.Forms.NumericUpDown(); this.RoundnessBox = new System.Windows.Forms.NumericUpDown(); @@ -59,16 +42,35 @@ partial class ItemCreationSDK this.BulgeLabel = new System.Windows.Forms.Label(); this.RoundnessLabel = new System.Windows.Forms.Label(); this.BevelLabel = new System.Windows.Forms.Label(); + this.CoordGroup = new System.Windows.Forms.GroupBox(); + this.ZBox = new System.Windows.Forms.NumericUpDown(); + this.YBox = new System.Windows.Forms.NumericUpDown(); + this.XBox = new System.Windows.Forms.NumericUpDown(); + this.ZLabel = new System.Windows.Forms.Label(); + this.YLabel = new System.Windows.Forms.Label(); + this.XLabel = new System.Windows.Forms.Label(); + this.Option2BrowseButton = new System.Windows.Forms.Button(); + this.Option2TextBox = new System.Windows.Forms.TextBox(); + this.Option2Label = new System.Windows.Forms.Label(); + this.Option1BrowseButton = new System.Windows.Forms.Button(); + this.Option1TextBox = new System.Windows.Forms.TextBox(); + this.Option1Label = new System.Windows.Forms.Label(); + this.CreateItemButton = new System.Windows.Forms.Button(); + this.ItemIcon = new System.Windows.Forms.PictureBox(); + this.ItemDescLabel = new System.Windows.Forms.Label(); + this.DescBox = new System.Windows.Forms.TextBox(); + this.ItemNameLabel = new System.Windows.Forms.Label(); + this.ItemNameBox = new System.Windows.Forms.TextBox(); this.ItemSettingsGroup.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.ItemIcon)).BeginInit(); - this.CoordGroup.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.XBox)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.YBox)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.ZBox)).BeginInit(); this.MeshOptionsGroup.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.BulgeBox)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.RoundnessBox)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.BevelBox)).BeginInit(); + this.CoordGroup.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.ZBox)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.YBox)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.XBox)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.ItemIcon)).BeginInit(); this.SuspendLayout(); // // ItemTypeListBox @@ -83,7 +85,7 @@ partial class ItemCreationSDK "T-Shirt", "Shirt", "Pants"}); - this.ItemTypeListBox.Location = new System.Drawing.Point(97, 167); + this.ItemTypeListBox.Location = new System.Drawing.Point(12, 64); this.ItemTypeListBox.Name = "ItemTypeListBox"; this.ItemTypeListBox.Size = new System.Drawing.Size(132, 21); this.ItemTypeListBox.TabIndex = 0; @@ -92,7 +94,7 @@ partial class ItemCreationSDK // ItemTypeLabel // this.ItemTypeLabel.AutoSize = true; - this.ItemTypeLabel.Location = new System.Drawing.Point(37, 170); + this.ItemTypeLabel.Location = new System.Drawing.Point(9, 49); this.ItemTypeLabel.Name = "ItemTypeLabel"; this.ItemTypeLabel.Size = new System.Drawing.Size(54, 13); this.ItemTypeLabel.TabIndex = 1; @@ -101,7 +103,7 @@ partial class ItemCreationSDK // ItemIconLabel // this.ItemIconLabel.AutoSize = true; - this.ItemIconLabel.Location = new System.Drawing.Point(142, 26); + this.ItemIconLabel.Location = new System.Drawing.Point(164, 23); this.ItemIconLabel.Name = "ItemIconLabel"; this.ItemIconLabel.Size = new System.Drawing.Size(51, 13); this.ItemIconLabel.TabIndex = 3; @@ -110,7 +112,7 @@ partial class ItemCreationSDK // BrowseImageButton // this.BrowseImageButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.BrowseImageButton.Location = new System.Drawing.Point(142, 42); + this.BrowseImageButton.Location = new System.Drawing.Point(163, 42); this.BrowseImageButton.Name = "BrowseImageButton"; this.BrowseImageButton.Size = new System.Drawing.Size(55, 20); this.BrowseImageButton.TabIndex = 4; @@ -120,6 +122,8 @@ partial class ItemCreationSDK // // ItemSettingsGroup // + this.ItemSettingsGroup.Controls.Add(this.UsesHatMeshLabel); + this.ItemSettingsGroup.Controls.Add(this.UsesHatMeshBox); this.ItemSettingsGroup.Controls.Add(this.MeshOptionsGroup); this.ItemSettingsGroup.Controls.Add(this.CoordGroup); this.ItemSettingsGroup.Controls.Add(this.Option2BrowseButton); @@ -128,220 +132,32 @@ partial class ItemCreationSDK this.ItemSettingsGroup.Controls.Add(this.Option1BrowseButton); this.ItemSettingsGroup.Controls.Add(this.Option1TextBox); this.ItemSettingsGroup.Controls.Add(this.Option1Label); - this.ItemSettingsGroup.Location = new System.Drawing.Point(12, 194); + this.ItemSettingsGroup.Location = new System.Drawing.Point(305, 12); this.ItemSettingsGroup.Name = "ItemSettingsGroup"; - this.ItemSettingsGroup.Size = new System.Drawing.Size(255, 301); + this.ItemSettingsGroup.Size = new System.Drawing.Size(276, 331); this.ItemSettingsGroup.TabIndex = 5; this.ItemSettingsGroup.TabStop = false; this.ItemSettingsGroup.Text = "Item Settings"; // - // CreateItemButton + // UsesHatMeshLabel // - this.CreateItemButton.Location = new System.Drawing.Point(12, 501); - this.CreateItemButton.Name = "CreateItemButton"; - this.CreateItemButton.Size = new System.Drawing.Size(255, 23); - this.CreateItemButton.TabIndex = 6; - this.CreateItemButton.Text = "Create Item"; - this.CreateItemButton.UseVisualStyleBackColor = true; - this.CreateItemButton.Click += new System.EventHandler(this.CreateItemButton_Click); + this.UsesHatMeshLabel.AutoSize = true; + this.UsesHatMeshLabel.Location = new System.Drawing.Point(4, 60); + this.UsesHatMeshLabel.Name = "UsesHatMeshLabel"; + this.UsesHatMeshLabel.Size = new System.Drawing.Size(114, 13); + this.UsesHatMeshLabel.TabIndex = 18; + this.UsesHatMeshLabel.Text = "This option is disabled."; // - // ItemIcon + // UsesHatMeshBox // - this.ItemIcon.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.ItemIcon.Location = new System.Drawing.Point(203, 12); - this.ItemIcon.Name = "ItemIcon"; - this.ItemIcon.Size = new System.Drawing.Size(64, 64); - this.ItemIcon.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; - this.ItemIcon.TabIndex = 2; - this.ItemIcon.TabStop = false; - // - // ItemDescLabel - // - this.ItemDescLabel.AutoSize = true; - this.ItemDescLabel.Location = new System.Drawing.Point(68, 85); - this.ItemDescLabel.Name = "ItemDescLabel"; - this.ItemDescLabel.Size = new System.Drawing.Size(131, 13); - this.ItemDescLabel.TabIndex = 7; - this.ItemDescLabel.Text = "Item Description (Optional)"; - // - // DescBox - // - this.DescBox.Location = new System.Drawing.Point(12, 101); - this.DescBox.Multiline = true; - this.DescBox.Name = "DescBox"; - this.DescBox.Size = new System.Drawing.Size(255, 60); - this.DescBox.TabIndex = 8; - // - // ItemNameLabel - // - this.ItemNameLabel.AutoSize = true; - this.ItemNameLabel.Location = new System.Drawing.Point(40, 26); - this.ItemNameLabel.Name = "ItemNameLabel"; - this.ItemNameLabel.Size = new System.Drawing.Size(58, 13); - this.ItemNameLabel.TabIndex = 9; - this.ItemNameLabel.Text = "Item Name"; - // - // ItemNameBox - // - this.ItemNameBox.Location = new System.Drawing.Point(12, 42); - this.ItemNameBox.Name = "ItemNameBox"; - this.ItemNameBox.Size = new System.Drawing.Size(124, 20); - this.ItemNameBox.TabIndex = 10; - // - // Option1Label - // - this.Option1Label.AutoSize = true; - this.Option1Label.Location = new System.Drawing.Point(7, 20); - this.Option1Label.Name = "Option1Label"; - this.Option1Label.Size = new System.Drawing.Size(114, 13); - this.Option1Label.TabIndex = 0; - this.Option1Label.Text = "This option is disabled."; - // - // Option1TextBox - // - this.Option1TextBox.Location = new System.Drawing.Point(7, 37); - this.Option1TextBox.Name = "Option1TextBox"; - this.Option1TextBox.ReadOnly = true; - this.Option1TextBox.Size = new System.Drawing.Size(180, 20); - this.Option1TextBox.TabIndex = 1; - // - // Option1BrowseButton - // - this.Option1BrowseButton.Enabled = false; - this.Option1BrowseButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.Option1BrowseButton.Location = new System.Drawing.Point(193, 37); - this.Option1BrowseButton.Name = "Option1BrowseButton"; - this.Option1BrowseButton.Size = new System.Drawing.Size(56, 20); - this.Option1BrowseButton.TabIndex = 2; - this.Option1BrowseButton.Text = "Browse..."; - this.Option1BrowseButton.UseVisualStyleBackColor = true; - this.Option1BrowseButton.Click += new System.EventHandler(this.Option1BrowseButton_Click); - // - // Option2BrowseButton - // - this.Option2BrowseButton.Enabled = false; - this.Option2BrowseButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.Option2BrowseButton.Location = new System.Drawing.Point(193, 79); - this.Option2BrowseButton.Name = "Option2BrowseButton"; - this.Option2BrowseButton.Size = new System.Drawing.Size(56, 20); - this.Option2BrowseButton.TabIndex = 5; - this.Option2BrowseButton.Text = "Browse..."; - this.Option2BrowseButton.UseVisualStyleBackColor = true; - this.Option2BrowseButton.Click += new System.EventHandler(this.Option2BrowseButton_Click); - // - // Option2TextBox - // - this.Option2TextBox.Location = new System.Drawing.Point(7, 79); - this.Option2TextBox.Name = "Option2TextBox"; - this.Option2TextBox.ReadOnly = true; - this.Option2TextBox.Size = new System.Drawing.Size(180, 20); - this.Option2TextBox.TabIndex = 4; - // - // Option2Label - // - this.Option2Label.AutoSize = true; - this.Option2Label.Location = new System.Drawing.Point(7, 62); - this.Option2Label.Name = "Option2Label"; - this.Option2Label.Size = new System.Drawing.Size(114, 13); - this.Option2Label.TabIndex = 3; - this.Option2Label.Text = "This option is disabled."; - // - // CoordGroup - // - this.CoordGroup.Controls.Add(this.ZBox); - this.CoordGroup.Controls.Add(this.YBox); - this.CoordGroup.Controls.Add(this.XBox); - this.CoordGroup.Controls.Add(this.ZLabel); - this.CoordGroup.Controls.Add(this.YLabel); - this.CoordGroup.Controls.Add(this.XLabel); - this.CoordGroup.Enabled = false; - this.CoordGroup.Location = new System.Drawing.Point(7, 106); - this.CoordGroup.Name = "CoordGroup"; - this.CoordGroup.Size = new System.Drawing.Size(242, 90); - this.CoordGroup.TabIndex = 6; - this.CoordGroup.TabStop = false; - this.CoordGroup.Text = "This option is disabled."; - // - // XLabel - // - this.XLabel.AutoSize = true; - this.XLabel.Location = new System.Drawing.Point(7, 16); - this.XLabel.Name = "XLabel"; - this.XLabel.Size = new System.Drawing.Size(14, 13); - this.XLabel.TabIndex = 0; - this.XLabel.Text = "X"; - // - // YLabel - // - this.YLabel.AutoSize = true; - this.YLabel.Location = new System.Drawing.Point(7, 41); - this.YLabel.Name = "YLabel"; - this.YLabel.Size = new System.Drawing.Size(14, 13); - this.YLabel.TabIndex = 1; - this.YLabel.Text = "Y"; - // - // ZLabel - // - this.ZLabel.AutoSize = true; - this.ZLabel.Location = new System.Drawing.Point(6, 67); - this.ZLabel.Name = "ZLabel"; - this.ZLabel.Size = new System.Drawing.Size(14, 13); - this.ZLabel.TabIndex = 2; - this.ZLabel.Text = "Z"; - // - // XBox - // - this.XBox.DecimalPlaces = 6; - this.XBox.Location = new System.Drawing.Point(27, 14); - this.XBox.Maximum = new decimal(new int[] { - 1661992959, - 1808227885, - 5, - 0}); - this.XBox.Minimum = new decimal(new int[] { - 1661992959, - 1808227885, - 5, - -2147483648}); - this.XBox.Name = "XBox"; - this.XBox.Size = new System.Drawing.Size(209, 20); - this.XBox.TabIndex = 3; - // - // YBox - // - this.YBox.DecimalPlaces = 6; - this.YBox.Location = new System.Drawing.Point(27, 39); - this.YBox.Maximum = new decimal(new int[] { - 1661992959, - 1808227885, - 5, - 0}); - this.YBox.Minimum = new decimal(new int[] { - 1661992959, - 1808227885, - 5, - -2147483648}); - this.YBox.Name = "YBox"; - this.YBox.Size = new System.Drawing.Size(209, 20); - this.YBox.TabIndex = 4; - // - // ZBox - // - this.ZBox.DecimalPlaces = 6; - this.ZBox.Location = new System.Drawing.Point(27, 65); - this.ZBox.Maximum = new decimal(new int[] { - 1661992959, - 1808227885, - 5, - 0}); - this.ZBox.Minimum = new decimal(new int[] { - 1661992959, - 1808227885, - 5, - -2147483648}); - this.ZBox.Name = "ZBox"; - this.ZBox.Size = new System.Drawing.Size(209, 20); - this.ZBox.TabIndex = 5; + this.UsesHatMeshBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.UsesHatMeshBox.Enabled = false; + this.UsesHatMeshBox.FormattingEnabled = true; + this.UsesHatMeshBox.Location = new System.Drawing.Point(6, 76); + this.UsesHatMeshBox.Name = "UsesHatMeshBox"; + this.UsesHatMeshBox.Size = new System.Drawing.Size(264, 21); + this.UsesHatMeshBox.TabIndex = 17; + this.UsesHatMeshBox.SelectedIndexChanged += new System.EventHandler(this.UsesHatMeshBox_SelectedIndexChanged); // // MeshOptionsGroup // @@ -352,9 +168,9 @@ partial class ItemCreationSDK this.MeshOptionsGroup.Controls.Add(this.RoundnessLabel); this.MeshOptionsGroup.Controls.Add(this.BevelLabel); this.MeshOptionsGroup.Enabled = false; - this.MeshOptionsGroup.Location = new System.Drawing.Point(7, 202); + this.MeshOptionsGroup.Location = new System.Drawing.Point(7, 233); this.MeshOptionsGroup.Name = "MeshOptionsGroup"; - this.MeshOptionsGroup.Size = new System.Drawing.Size(242, 90); + this.MeshOptionsGroup.Size = new System.Drawing.Size(263, 90); this.MeshOptionsGroup.TabIndex = 7; this.MeshOptionsGroup.TabStop = false; this.MeshOptionsGroup.Text = "This option is disabled."; @@ -374,7 +190,7 @@ partial class ItemCreationSDK 5, -2147483648}); this.BulgeBox.Name = "BulgeBox"; - this.BulgeBox.Size = new System.Drawing.Size(132, 20); + this.BulgeBox.Size = new System.Drawing.Size(153, 20); this.BulgeBox.TabIndex = 5; // // RoundnessBox @@ -392,7 +208,7 @@ partial class ItemCreationSDK 5, -2147483648}); this.RoundnessBox.Name = "RoundnessBox"; - this.RoundnessBox.Size = new System.Drawing.Size(132, 20); + this.RoundnessBox.Size = new System.Drawing.Size(153, 20); this.RoundnessBox.TabIndex = 4; // // BevelBox @@ -410,7 +226,7 @@ partial class ItemCreationSDK 5, -2147483648}); this.BevelBox.Name = "BevelBox"; - this.BevelBox.Size = new System.Drawing.Size(132, 20); + this.BevelBox.Size = new System.Drawing.Size(153, 20); this.BevelBox.TabIndex = 3; // // BulgeLabel @@ -440,12 +256,220 @@ partial class ItemCreationSDK this.BevelLabel.TabIndex = 0; this.BevelLabel.Text = "Bevel"; // + // CoordGroup + // + this.CoordGroup.Controls.Add(this.ZBox); + this.CoordGroup.Controls.Add(this.YBox); + this.CoordGroup.Controls.Add(this.XBox); + this.CoordGroup.Controls.Add(this.ZLabel); + this.CoordGroup.Controls.Add(this.YLabel); + this.CoordGroup.Controls.Add(this.XLabel); + this.CoordGroup.Enabled = false; + this.CoordGroup.Location = new System.Drawing.Point(7, 142); + this.CoordGroup.Name = "CoordGroup"; + this.CoordGroup.Size = new System.Drawing.Size(263, 90); + this.CoordGroup.TabIndex = 6; + this.CoordGroup.TabStop = false; + this.CoordGroup.Text = "This option is disabled."; + // + // ZBox + // + this.ZBox.DecimalPlaces = 6; + this.ZBox.Location = new System.Drawing.Point(27, 65); + this.ZBox.Maximum = new decimal(new int[] { + 1661992959, + 1808227885, + 5, + 0}); + this.ZBox.Minimum = new decimal(new int[] { + 1661992959, + 1808227885, + 5, + -2147483648}); + this.ZBox.Name = "ZBox"; + this.ZBox.Size = new System.Drawing.Size(230, 20); + this.ZBox.TabIndex = 5; + // + // YBox + // + this.YBox.DecimalPlaces = 6; + this.YBox.Location = new System.Drawing.Point(27, 39); + this.YBox.Maximum = new decimal(new int[] { + 1661992959, + 1808227885, + 5, + 0}); + this.YBox.Minimum = new decimal(new int[] { + 1661992959, + 1808227885, + 5, + -2147483648}); + this.YBox.Name = "YBox"; + this.YBox.Size = new System.Drawing.Size(230, 20); + this.YBox.TabIndex = 4; + // + // XBox + // + this.XBox.DecimalPlaces = 6; + this.XBox.Location = new System.Drawing.Point(27, 14); + this.XBox.Maximum = new decimal(new int[] { + 1661992959, + 1808227885, + 5, + 0}); + this.XBox.Minimum = new decimal(new int[] { + 1661992959, + 1808227885, + 5, + -2147483648}); + this.XBox.Name = "XBox"; + this.XBox.Size = new System.Drawing.Size(230, 20); + this.XBox.TabIndex = 3; + // + // ZLabel + // + this.ZLabel.AutoSize = true; + this.ZLabel.Location = new System.Drawing.Point(6, 67); + this.ZLabel.Name = "ZLabel"; + this.ZLabel.Size = new System.Drawing.Size(14, 13); + this.ZLabel.TabIndex = 2; + this.ZLabel.Text = "Z"; + // + // YLabel + // + this.YLabel.AutoSize = true; + this.YLabel.Location = new System.Drawing.Point(7, 41); + this.YLabel.Name = "YLabel"; + this.YLabel.Size = new System.Drawing.Size(14, 13); + this.YLabel.TabIndex = 1; + this.YLabel.Text = "Y"; + // + // XLabel + // + this.XLabel.AutoSize = true; + this.XLabel.Location = new System.Drawing.Point(7, 16); + this.XLabel.Name = "XLabel"; + this.XLabel.Size = new System.Drawing.Size(14, 13); + this.XLabel.TabIndex = 0; + this.XLabel.Text = "X"; + // + // Option2BrowseButton + // + this.Option2BrowseButton.Enabled = false; + this.Option2BrowseButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Option2BrowseButton.Location = new System.Drawing.Point(214, 116); + this.Option2BrowseButton.Name = "Option2BrowseButton"; + this.Option2BrowseButton.Size = new System.Drawing.Size(56, 20); + this.Option2BrowseButton.TabIndex = 5; + this.Option2BrowseButton.Text = "Browse..."; + this.Option2BrowseButton.UseVisualStyleBackColor = true; + this.Option2BrowseButton.Click += new System.EventHandler(this.Option2BrowseButton_Click); + // + // Option2TextBox + // + this.Option2TextBox.Location = new System.Drawing.Point(6, 116); + this.Option2TextBox.Name = "Option2TextBox"; + this.Option2TextBox.ReadOnly = true; + this.Option2TextBox.Size = new System.Drawing.Size(202, 20); + this.Option2TextBox.TabIndex = 4; + // + // Option2Label + // + this.Option2Label.AutoSize = true; + this.Option2Label.Location = new System.Drawing.Point(4, 100); + this.Option2Label.Name = "Option2Label"; + this.Option2Label.Size = new System.Drawing.Size(114, 13); + this.Option2Label.TabIndex = 3; + this.Option2Label.Text = "This option is disabled."; + // + // Option1BrowseButton + // + this.Option1BrowseButton.Enabled = false; + this.Option1BrowseButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Option1BrowseButton.Location = new System.Drawing.Point(214, 37); + this.Option1BrowseButton.Name = "Option1BrowseButton"; + this.Option1BrowseButton.Size = new System.Drawing.Size(56, 20); + this.Option1BrowseButton.TabIndex = 2; + this.Option1BrowseButton.Text = "Browse..."; + this.Option1BrowseButton.UseVisualStyleBackColor = true; + this.Option1BrowseButton.Click += new System.EventHandler(this.Option1BrowseButton_Click); + // + // Option1TextBox + // + this.Option1TextBox.Location = new System.Drawing.Point(7, 37); + this.Option1TextBox.Name = "Option1TextBox"; + this.Option1TextBox.ReadOnly = true; + this.Option1TextBox.Size = new System.Drawing.Size(201, 20); + this.Option1TextBox.TabIndex = 1; + // + // Option1Label + // + this.Option1Label.AutoSize = true; + this.Option1Label.Location = new System.Drawing.Point(4, 21); + this.Option1Label.Name = "Option1Label"; + this.Option1Label.Size = new System.Drawing.Size(114, 13); + this.Option1Label.TabIndex = 0; + this.Option1Label.Text = "This option is disabled."; + // + // CreateItemButton + // + this.CreateItemButton.Location = new System.Drawing.Point(12, 320); + this.CreateItemButton.Name = "CreateItemButton"; + this.CreateItemButton.Size = new System.Drawing.Size(288, 23); + this.CreateItemButton.TabIndex = 6; + this.CreateItemButton.Text = "Create Item"; + this.CreateItemButton.UseVisualStyleBackColor = true; + this.CreateItemButton.Click += new System.EventHandler(this.CreateItemButton_Click); + // + // ItemIcon + // + this.ItemIcon.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.ItemIcon.Location = new System.Drawing.Point(224, 9); + this.ItemIcon.Name = "ItemIcon"; + this.ItemIcon.Size = new System.Drawing.Size(76, 76); + this.ItemIcon.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.ItemIcon.TabIndex = 2; + this.ItemIcon.TabStop = false; + // + // ItemDescLabel + // + this.ItemDescLabel.AutoSize = true; + this.ItemDescLabel.Location = new System.Drawing.Point(74, 96); + this.ItemDescLabel.Name = "ItemDescLabel"; + this.ItemDescLabel.Size = new System.Drawing.Size(131, 13); + this.ItemDescLabel.TabIndex = 7; + this.ItemDescLabel.Text = "Item Description (Optional)"; + // + // DescBox + // + this.DescBox.Location = new System.Drawing.Point(12, 112); + this.DescBox.Multiline = true; + this.DescBox.Name = "DescBox"; + this.DescBox.Size = new System.Drawing.Size(288, 202); + this.DescBox.TabIndex = 8; + // + // ItemNameLabel + // + this.ItemNameLabel.AutoSize = true; + this.ItemNameLabel.Location = new System.Drawing.Point(8, 9); + this.ItemNameLabel.Name = "ItemNameLabel"; + this.ItemNameLabel.Size = new System.Drawing.Size(58, 13); + this.ItemNameLabel.TabIndex = 9; + this.ItemNameLabel.Text = "Item Name"; + // + // ItemNameBox + // + this.ItemNameBox.Location = new System.Drawing.Point(11, 23); + this.ItemNameBox.Name = "ItemNameBox"; + this.ItemNameBox.Size = new System.Drawing.Size(134, 20); + this.ItemNameBox.TabIndex = 10; + // // ItemCreationSDK // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.BackColor = System.Drawing.SystemColors.ControlLightLight; - this.ClientSize = new System.Drawing.Size(279, 536); + this.ClientSize = new System.Drawing.Size(585, 351); this.Controls.Add(this.ItemNameBox); this.Controls.Add(this.ItemNameLabel); this.Controls.Add(this.DescBox); @@ -463,17 +487,17 @@ partial class ItemCreationSDK this.Load += new System.EventHandler(this.ItemCreationSDK_Load); this.ItemSettingsGroup.ResumeLayout(false); this.ItemSettingsGroup.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.ItemIcon)).EndInit(); - this.CoordGroup.ResumeLayout(false); - this.CoordGroup.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.XBox)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.YBox)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.ZBox)).EndInit(); this.MeshOptionsGroup.ResumeLayout(false); this.MeshOptionsGroup.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.BulgeBox)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.RoundnessBox)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.BevelBox)).EndInit(); + this.CoordGroup.ResumeLayout(false); + this.CoordGroup.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.ZBox)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.YBox)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.XBox)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.ItemIcon)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -512,4 +536,6 @@ partial class ItemCreationSDK private System.Windows.Forms.Label ZLabel; private System.Windows.Forms.Label YLabel; private System.Windows.Forms.Label XLabel; + private System.Windows.Forms.Label UsesHatMeshLabel; + private System.Windows.Forms.ComboBox UsesHatMeshBox; } \ No newline at end of file diff --git a/Novetus/NovetusLauncher/Forms/SDK/ItemCreationSDK.cs b/Novetus/NovetusLauncher/Forms/SDK/ItemCreationSDK.cs index 4d55fdc..990254f 100644 --- a/Novetus/NovetusLauncher/Forms/SDK/ItemCreationSDK.cs +++ b/Novetus/NovetusLauncher/Forms/SDK/ItemCreationSDK.cs @@ -18,6 +18,9 @@ public partial class ItemCreationSDK : Form private static string Template = ""; private static string Option1Path = ""; private static string Option2Path = ""; + private static bool Option1Required = false; + private static bool Option2Required = false; + private static bool RequiresIconForTexture = false; private OpenFileDialog openFileDialog1; private static string FileDialogFilter1 = ""; private static string FileDialogName1 = ""; @@ -42,8 +45,7 @@ public partial class ItemCreationSDK : Form { if (string.IsNullOrWhiteSpace(ItemNameBox.Text)) { - //message box here. - return; + MessageBox.Show("You must assign an item name before you change the icon.", "Novetus Item Creation SDK", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { @@ -64,7 +66,7 @@ public partial class ItemCreationSDK : Form MessageBox.Show(icon.getInstallOutcome()); } - Image icon1 = CustomizationFuncs.LoadImage(icon.ItemDir + "\\" + icon.ItemName.Replace(" ", "") + ".png", GlobalPaths.extradir + "\\NoExtra.png"); + Image icon1 = CustomizationFuncs.LoadImage(icon.ItemDir + "\\" + icon.ItemName.Replace(" ", "") + ".png", ""); ItemIcon.Image = icon1; if (type == RobloxFileType.TShirt || type == RobloxFileType.Face) @@ -81,8 +83,13 @@ public partial class ItemCreationSDK : Form switch (type) { case RobloxFileType.Hat: - ToggleOptionSet(Option1Label, Option1TextBox, Option1BrowseButton, "Hat Mesh", Option1Path, true); - ToggleOptionSet(Option2Label, Option2TextBox, Option2BrowseButton, "Hat Texture", Option2Path, true); + ToggleOptionSet(Option1Label, Option1TextBox, Option1BrowseButton, "Hat Mesh", true); + Option1Path = ""; + Option1Required = true; + ToggleHatMeshBox("Uses Existing Hat Mesh"); + ToggleOptionSet(Option2Label, Option2TextBox, Option2BrowseButton, "Hat Texture", true); + Option2Path = ""; + Option2Required = true; ToggleGroup(CoordGroup, "Hat Attachment Point"); ToggleGroup(MeshOptionsGroup, "", false); Template = GlobalPaths.ConfigDirTemplates + "\\HatTemplate.rbxm"; @@ -90,48 +97,93 @@ public partial class ItemCreationSDK : Form FileDialogName1 = "Hat Mesh"; FileDialogFilter2 = "*.png"; FileDialogName2 = "Hat Texture"; + RequiresIconForTexture = false; break; case RobloxFileType.HeadNoCustomMesh: - ToggleOptionSet(Option1Label, Option1TextBox, Option1BrowseButton, "", Option1Path, false, false); - ToggleOptionSet(Option2Label, Option2TextBox, Option2BrowseButton, "", Option2Path, false, false); + ToggleOptionSet(Option1Label, Option1TextBox, Option1BrowseButton, "", false, false); + Option1Path = ""; + Option1Required = false; + ToggleHatMeshBox("", false); + ToggleOptionSet(Option2Label, Option2TextBox, Option2BrowseButton, "", false, false); + Option2Path = ""; + Option2Required = false; ToggleGroup(CoordGroup, "Head Mesh Scale"); ToggleGroup(MeshOptionsGroup, "Head Mesh Options"); Template = GlobalPaths.ConfigDirTemplates + "\\HeadNoCustomMeshTemplate.rbxm"; + RequiresIconForTexture = false; break; case RobloxFileType.Head: - ToggleOptionSet(Option1Label, Option1TextBox, Option1BrowseButton, "Head Mesh", Option1Path, true); - ToggleOptionSet(Option2Label, Option2TextBox, Option2BrowseButton, "Head Texture", Option2Path, true); + ToggleOptionSet(Option1Label, Option1TextBox, Option1BrowseButton, "Head Mesh", true); + Option1Path = ""; + Option1Required = true; + ToggleHatMeshBox("", false); + ToggleOptionSet(Option2Label, Option2TextBox, Option2BrowseButton, "Head Texture", true); + Option2Path = ""; + Option2Required = true; ToggleGroup(CoordGroup, "Head Mesh Scale"); ToggleGroup(MeshOptionsGroup, "", false); Template = GlobalPaths.ConfigDirTemplates + "\\HeadTemplate.rbxm"; + FileDialogFilter1 = "*.mesh"; + FileDialogName1 = "Head Mesh"; + FileDialogFilter2 = "*.png"; + FileDialogName2 = "Head Texture"; + RequiresIconForTexture = false; break; case RobloxFileType.Face: - ToggleOptionSet(Option1Label, Option1TextBox, Option1BrowseButton, "Load the Item Icon to load a T-Shirt Template.", Option1Path, false, false); - ToggleOptionSet(Option2Label, Option2TextBox, Option2BrowseButton, "", Option2Path, false, false); + ToggleOptionSet(Option1Label, Option1TextBox, Option1BrowseButton, "Load the Item Icon to load a Face Texture.", false, false); + Option1Path = ""; + Option1Required = false; + ToggleHatMeshBox("", false); + ToggleOptionSet(Option2Label, Option2TextBox, Option2BrowseButton, "", false, false); + Option2Path = ""; + Option2Required = false; ToggleGroup(CoordGroup, "", false); ToggleGroup(MeshOptionsGroup, "", false); Template = GlobalPaths.ConfigDirTemplates + "\\FaceTemplate.rbxm"; + RequiresIconForTexture = true; break; case RobloxFileType.TShirt: - ToggleOptionSet(Option1Label, Option1TextBox, Option1BrowseButton, "Load the Item Icon to load a T-Shirt Template.", Option1Path, false, false); - ToggleOptionSet(Option2Label, Option2TextBox, Option2BrowseButton, "", Option2Path, false, false); + ToggleOptionSet(Option1Label, Option1TextBox, Option1BrowseButton, "Load the Item Icon to load a T-Shirt Template.", false, false); + Option1Path = ""; + Option1Required = false; + ToggleHatMeshBox("", false); + ToggleOptionSet(Option2Label, Option2TextBox, Option2BrowseButton, "", false, false); + Option2Path = ""; + Option2Required = false; ToggleGroup(CoordGroup, "", false); ToggleGroup(MeshOptionsGroup, "", false); Template = GlobalPaths.ConfigDirTemplates + "\\TShirtTemplate.rbxm"; + RequiresIconForTexture = true; break; case RobloxFileType.Shirt: - ToggleOptionSet(Option1Label, Option1TextBox, Option1BrowseButton, "Shirt Template", Option1Path, true); - ToggleOptionSet(Option2Label, Option2TextBox, Option2BrowseButton, "", Option2Path, false, false); + ToggleOptionSet(Option1Label, Option1TextBox, Option1BrowseButton, "Shirt Template", true); + Option1Path = ""; + Option1Required = true; + ToggleHatMeshBox("", false); + ToggleOptionSet(Option2Label, Option2TextBox, Option2BrowseButton, "", false, false); + Option2Path = ""; + Option2Required = false; ToggleGroup(CoordGroup, "", false); ToggleGroup(MeshOptionsGroup, "", false); Template = GlobalPaths.ConfigDirTemplates + "\\ShirtTemplate.rbxm"; + FileDialogFilter1 = "*.png"; + FileDialogName1 = "Shirt Template"; + RequiresIconForTexture = false; break; case RobloxFileType.Pants: - ToggleOptionSet(Option1Label, Option1TextBox, Option1BrowseButton, "Pants Template", Option1Path, true); - ToggleOptionSet(Option2Label, Option2TextBox, Option2BrowseButton, "", Option2Path, false, false); + ToggleOptionSet(Option1Label, Option1TextBox, Option1BrowseButton, "Pants Template", true); + Option1Path = ""; + Option1Required = true; + ToggleHatMeshBox("", false); + ToggleOptionSet(Option2Label, Option2TextBox, Option2BrowseButton, "", false, false); + Option2Path = ""; + Option2Required = false; ToggleGroup(CoordGroup, "", false); ToggleGroup(MeshOptionsGroup, "", false); Template = GlobalPaths.ConfigDirTemplates + "\\PantsTemplate.rbxm"; + FileDialogFilter1 = "*.png"; + FileDialogName1 = "Pants Template"; + RequiresIconForTexture = false; break; default: break; @@ -140,55 +192,113 @@ public partial class ItemCreationSDK : Form private void CreateItemButton_Click(object sender, EventArgs e) { - if (string.IsNullOrWhiteSpace(ItemNameBox.Text) && ItemIcon.Image == null || string.IsNullOrWhiteSpace(ItemNameBox.Text) || ItemIcon.Image == null) - { - //message box here. + if (!CheckItemRequirements()) return; - } - else + + string ItemName = ItemNameBox.Text.Replace(" ", ""); + if (SDKFuncs.CreateItem(Template, + type, + ItemName, + new string[] { Option1Path, Option2Path, Option1TextBox.Text, Option2TextBox.Text }, + new double[] { Convert.ToDouble(XBox.Value), Convert.ToDouble(YBox.Value), Convert.ToDouble(ZBox.Value) }, + new double[] { Convert.ToDouble(BevelBox.Value), Convert.ToDouble(RoundnessBox.Value), Convert.ToDouble(BulgeBox.Value) }, + DescBox.Text + )) { - ItemNameBox.Text = ItemNameBox.Text.Replace(" ", ""); - SDKFuncs.CreateItem(Template, - type, - ItemNameBox.Text, - new string[] { Option1Path, Option2Path, Option1TextBox.Text, Option2TextBox.Text }, - new double[] { Convert.ToDouble(XBox.Value), Convert.ToDouble(YBox.Value), Convert.ToDouble(ZBox.Value) }, - new double[] { Convert.ToDouble(BevelBox.Value), Convert.ToDouble(RoundnessBox.Value), Convert.ToDouble(BulgeBox.Value) }, - DescBox.Text - ); + DialogResult LaunchCharCustom = MessageBox.Show("The creation of your item, " + ItemNameBox.Text + ", is successful! Would you like to test your item out in Character Customization?", "Novetus Item Creation SDK", MessageBoxButtons.YesNo, MessageBoxIcon.Information); + + if (LaunchCharCustom == DialogResult.Yes) + { + switch (GlobalVars.UserConfiguration.LauncherStyle) + { + case Settings.UIOptions.Style.Extended: + CharacterCustomizationExtended ccustom = new CharacterCustomizationExtended(); + ccustom.Show(); + break; + case Settings.UIOptions.Style.Compact: + CharacterCustomizationCompact ccustom2 = new CharacterCustomizationCompact(); + ccustom2.Show(); + break; + default: + break; + } + } } } private void Option1BrowseButton_Click(object sender, EventArgs e) { - LoadAsset(FileDialogName1, FileDialogFilter1, Option1Path, Option1TextBox); + Option1Path = LoadAsset(FileDialogName1, FileDialogFilter1); + Option1TextBox.Text = Path.GetFileName(Option1Path); } private void Option2BrowseButton_Click(object sender, EventArgs e) { - LoadAsset(FileDialogName2, FileDialogFilter2, Option2Path, Option2TextBox); + Option2Path = LoadAsset(FileDialogName2, FileDialogFilter2); + Option2TextBox.Text = Path.GetFileName(Option2Path); + } + + private void UsesHatMeshBox_SelectedIndexChanged(object sender, EventArgs e) + { + Option1Path = ""; + + if (UsesHatMeshBox.SelectedItem.ToString() != "None") + { + Option1TextBox.Text = UsesHatMeshBox.Text; + } + else + { + Option1TextBox.Text = ""; + } } #endregion #region Functions - private void ToggleOptionSet(Label label, TextBox textbox, Button button, string labelText, string Path, bool browseButton, bool enable = true) + private void ToggleOptionSet(Label label, TextBox textbox, Button button, string labelText, bool browseButton, bool enable = true) { label.Text = enable ? labelText : (string.IsNullOrWhiteSpace(labelText) ? "This option is disabled." : labelText); textbox.ReadOnly = !enable; textbox.Text = ""; button.Enabled = browseButton; - ItemIcon.Image = null; - Path = ""; + ItemIcon.Image = CustomizationFuncs.LoadImage("", ""); } private void ToggleGroup(GroupBox groupbox, string labelText, bool enable = true) { groupbox.Text = enable ? labelText : (string.IsNullOrWhiteSpace(labelText) ? "This option is disabled." : labelText); groupbox.Enabled = enable; - ItemIcon.Image = null; + ItemIcon.Image = CustomizationFuncs.LoadImage("", ""); } - private void LoadAsset(string assetName, string assetFilter, string optionPath, TextBox optionTextBox) + private void ToggleHatMeshBox(string labelText, bool enable = true) + { + UsesHatMeshLabel.Text = enable ? labelText : (string.IsNullOrWhiteSpace(labelText) ? "This option is disabled." : labelText); + UsesHatMeshBox.Enabled = enable; + + if (enable && Directory.Exists(GlobalPaths.hatdirFonts)) + { + UsesHatMeshBox.Items.Add("None"); + DirectoryInfo dinfo = new DirectoryInfo(GlobalPaths.hatdirFonts); + FileInfo[] Files = dinfo.GetFiles("*.mesh"); + foreach (FileInfo file in Files) + { + if (file.Name.Equals(string.Empty)) + { + continue; + } + + UsesHatMeshBox.Items.Add(file.Name); + } + + UsesHatMeshBox.SelectedItem = "None"; + } + else + { + UsesHatMeshBox.Items.Clear(); + } + } + + private string LoadAsset(string assetName, string assetFilter) { openFileDialog1 = new OpenFileDialog() { @@ -199,10 +309,50 @@ public partial class ItemCreationSDK : Form if (openFileDialog1.ShowDialog() == DialogResult.OK) { - MessageBox.Show(openFileDialog1.FileName); - optionPath = openFileDialog1.FileName; - optionTextBox.Text = Path.GetFileName(optionPath); + return openFileDialog1.FileName; } + else + { + return ""; + } + } + + private bool CheckItemRequirements() + { + string msgboxtext = "The Item Creation SDK has experienced an error: You are missing some requirements:\n"; + bool passed = true; + + if (string.IsNullOrWhiteSpace(ItemNameBox.Text) && ItemIcon.Image == null || string.IsNullOrWhiteSpace(ItemNameBox.Text) || ItemIcon.Image == null) + { + msgboxtext += "\n - You must assign an item name and/or icon."; + + if (RequiresIconForTexture && ItemIcon.Image == null) + { + msgboxtext += " This item type requires that you must select an Icon to select a Template or Texture."; + } + + passed = false; + } + + if (Option1Required && string.IsNullOrWhiteSpace(Option1TextBox.Text)) + { + msgboxtext += "\n - You must assign a " + Option1Label.Text + "."; + passed = false; + } + + if (Option2Required && string.IsNullOrWhiteSpace(Option2TextBox.Text)) + { + msgboxtext += "\n - You must assign a " + Option2Label.Text + "."; + passed = false; + } + + if (!passed) + { + msgboxtext += "\n\nThese requirements must be fullfiled before the item can be created."; + MessageBox.Show(msgboxtext, "Novetus Item Creation SDK", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + + return passed; } #endregion }