mirror of
https://github.com/4sval/FModel.git
synced 2026-03-22 01:34:37 -05:00
fully switched to a dynamic parsing method + refactored ui/ux in update mode + bug fixes
This commit is contained in:
parent
97d8179f50
commit
2b84278af7
|
|
@ -40,21 +40,6 @@
|
|||
<setting name="AESKey" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="UMCosmetics" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="UMVariants" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="UMConsumablesWeapons" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="UMTraps" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="UMChallenges" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="UMSize" serializeAs="String">
|
||||
<value>1</value>
|
||||
</setting>
|
||||
|
|
@ -67,30 +52,6 @@
|
|||
<setting name="UMFeatured" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="UMTCosmeticsVariants" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="UMTLoading" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="UMTWeapons" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="UMTBanners" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="UMTFeaturedIMGs" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="UMTAthena" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="UMTDevices" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="UMTVehicles" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="UMFilename" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
|
|
|
|||
|
|
@ -156,6 +156,7 @@
|
|||
<Compile Include="Methods\Serializer\AssetReader.cs" />
|
||||
<Compile Include="Methods\Serializer\LocRes\LocResSerializer.cs" />
|
||||
<Compile Include="Methods\Scintilla\MyScintilla.cs" />
|
||||
<Compile Include="Methods\UpdateMode\RegisterSettings.cs" />
|
||||
<Compile Include="Methods\Utilities\FontUtilities.cs" />
|
||||
<Compile Include="Methods\IconGenerator\ItemGenerator\ItemIcon.cs" />
|
||||
<Compile Include="Methods\IconGenerator\ItemGenerator\Rarity.cs" />
|
||||
|
|
@ -193,15 +194,6 @@
|
|||
<Compile Include="Methods\JohnWick\JohnWick.cs" />
|
||||
<Compile Include="Methods\Utilities\Utilities.cs" />
|
||||
<Compile Include="Methods\VarApp.cs" />
|
||||
<Compile Include="Parser\Banners\BannersParser.cs" />
|
||||
<Compile Include="Parser\Challenges\ChallengeBundleIdParser.cs" />
|
||||
<Compile Include="Parser\Featured\FeaturedParser.cs" />
|
||||
<Compile Include="Parser\Items\CosmeticSetsParser.cs" />
|
||||
<Compile Include="Parser\Items\ItemIDParser.cs" />
|
||||
<Compile Include="Parser\Meshes\MeshesParser.cs" />
|
||||
<Compile Include="Parser\Quests\QuestParser.cs" />
|
||||
<Compile Include="Parser\RenderMat\RenderSwitchMaterial.cs" />
|
||||
<Compile Include="Parser\Weapons\WeaponStatParser.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<EmbeddedResource Include="Forms\About.resx">
|
||||
|
|
@ -256,6 +248,7 @@
|
|||
<Content Include="DLLs\csharp-wick.dll" />
|
||||
<Content Include="DLLs\ScintillaNET FindReplaceDialog.dll" />
|
||||
<Content Include="FModel.ico" />
|
||||
<None Include="Resources\LBolt64.png" />
|
||||
<None Include="Resources\wTemplatev1.png" />
|
||||
<None Include="Resources\wTemplateFv1.png" />
|
||||
<None Include="Resources\U512v1.png" />
|
||||
|
|
@ -283,7 +276,6 @@
|
|||
<None Include="Resources\BurbankBigCondensed-Black-vJapanese.otf" />
|
||||
<None Include="Resources\reload64.png" />
|
||||
<None Include="Resources\clipSize64.png" />
|
||||
<None Include="Resources\LBolt64.png" />
|
||||
<None Include="Resources\dmg64.png" />
|
||||
<None Include="Resources\Challenges_Slider.png" />
|
||||
<None Include="Resources\T-Items-MTX-L.png" />
|
||||
|
|
|
|||
|
|
@ -52,8 +52,9 @@ namespace FModel.Forms
|
|||
|
||||
private void OKButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(textBox2.Text))
|
||||
if (!string.IsNullOrWhiteSpace(textBox2.Text) && textBox2.Text.StartsWith("0x"))
|
||||
{
|
||||
if (textBox2.Text.Contains(" ")) { textBox2.Text = textBox2.Text.Replace(" ", string.Empty); }
|
||||
Properties.Settings.Default.AESKey = textBox2.Text.Substring(2).ToUpper();
|
||||
}
|
||||
else { Properties.Settings.Default.AESKey = ""; }
|
||||
|
|
|
|||
496
FModel/Forms/UpdateModeSettings.Designer.cs
generated
496
FModel/Forms/UpdateModeSettings.Designer.cs
generated
|
|
@ -29,22 +29,13 @@ namespace FModel.Forms
|
|||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(UpdateModeSettings));
|
||||
this.panel2 = new System.Windows.Forms.Panel();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.checkBoxUMCTGalleries = new System.Windows.Forms.CheckBox();
|
||||
this.checkBox15 = new System.Windows.Forms.CheckBox();
|
||||
this.checkBox13 = new System.Windows.Forms.CheckBox();
|
||||
this.checkBox12 = new System.Windows.Forms.CheckBox();
|
||||
this.checkBox11 = new System.Windows.Forms.CheckBox();
|
||||
this.checkBox10 = new System.Windows.Forms.CheckBox();
|
||||
this.checkBox9 = new System.Windows.Forms.CheckBox();
|
||||
this.checkBox1 = new System.Windows.Forms.CheckBox();
|
||||
this.checkBox14 = new System.Windows.Forms.CheckBox();
|
||||
this.label7 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.optionsOKButton = new System.Windows.Forms.Button();
|
||||
this.groupBox4 = new System.Windows.Forms.GroupBox();
|
||||
this.checkBox1 = new System.Windows.Forms.CheckBox();
|
||||
this.comboBox1 = new System.Windows.Forms.ComboBox();
|
||||
this.label10 = new System.Windows.Forms.Label();
|
||||
this.checkBox8 = new System.Windows.Forms.CheckBox();
|
||||
this.checkBox7 = new System.Windows.Forms.CheckBox();
|
||||
this.filenameLabel = new System.Windows.Forms.Label();
|
||||
|
|
@ -54,193 +45,57 @@ namespace FModel.Forms
|
|||
this.label8 = new System.Windows.Forms.Label();
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.wPictureBox = new System.Windows.Forms.PictureBox();
|
||||
this.checkBox6 = new System.Windows.Forms.CheckBox();
|
||||
this.checkBox5 = new System.Windows.Forms.CheckBox();
|
||||
this.checkBox4 = new System.Windows.Forms.CheckBox();
|
||||
this.checkBox3 = new System.Windows.Forms.CheckBox();
|
||||
this.checkBox2 = new System.Windows.Forms.CheckBox();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.optionsOKButton = new System.Windows.Forms.Button();
|
||||
this.panel2.SuspendLayout();
|
||||
this.panel1.SuspendLayout();
|
||||
this.groupBox1.SuspendLayout();
|
||||
this.checkedListBox1 = new System.Windows.Forms.CheckedListBox();
|
||||
this.checkedListBox2 = new System.Windows.Forms.CheckedListBox();
|
||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.groupBox4.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.trackBar1)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.trackBar2)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.wPictureBox)).BeginInit();
|
||||
this.groupBox1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// panel2
|
||||
// label2
|
||||
//
|
||||
this.panel2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(181)))), ((int)(((byte)(215)))), ((int)(((byte)(243)))));
|
||||
this.panel2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.panel2.Controls.Add(this.label4);
|
||||
this.panel2.Location = new System.Drawing.Point(12, 296);
|
||||
this.panel2.Name = "panel2";
|
||||
this.panel2.Size = new System.Drawing.Size(253, 22);
|
||||
this.panel2.TabIndex = 24;
|
||||
this.panel2.Visible = false;
|
||||
this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.ForeColor = System.Drawing.Color.Red;
|
||||
this.label2.Location = new System.Drawing.Point(149, 443);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(320, 13);
|
||||
this.label2.TabIndex = 20;
|
||||
this.label2.Text = "The more Assets you choose, the more time it will take to complete";
|
||||
//
|
||||
// label4
|
||||
// label1
|
||||
//
|
||||
this.label4.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.label4.Location = new System.Drawing.Point(3, 3);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(245, 13);
|
||||
this.label4.TabIndex = 0;
|
||||
this.label4.Text = "- Include Sprays, Banners, Emojis, Musics, Toys";
|
||||
this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.ForeColor = System.Drawing.Color.Red;
|
||||
this.label1.Location = new System.Drawing.Point(133, 442);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(19, 13);
|
||||
this.label1.TabIndex = 19;
|
||||
this.label1.Text = "⚠️";
|
||||
//
|
||||
// panel1
|
||||
// optionsOKButton
|
||||
//
|
||||
this.panel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(181)))), ((int)(((byte)(215)))), ((int)(((byte)(243)))));
|
||||
this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.panel1.Controls.Add(this.label3);
|
||||
this.panel1.Location = new System.Drawing.Point(12, 310);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(232, 22);
|
||||
this.panel1.TabIndex = 23;
|
||||
this.panel1.Visible = false;
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.label3.Location = new System.Drawing.Point(3, 3);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(224, 13);
|
||||
this.label3.TabIndex = 0;
|
||||
this.label3.Text = "- Include All New Creative Devices Textures";
|
||||
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
this.groupBox1.Controls.Add(this.checkBoxUMCTGalleries);
|
||||
this.groupBox1.Controls.Add(this.checkBox15);
|
||||
this.groupBox1.Controls.Add(this.checkBox13);
|
||||
this.groupBox1.Controls.Add(this.checkBox12);
|
||||
this.groupBox1.Controls.Add(this.checkBox11);
|
||||
this.groupBox1.Controls.Add(this.checkBox10);
|
||||
this.groupBox1.Controls.Add(this.checkBox9);
|
||||
this.groupBox1.Controls.Add(this.checkBox1);
|
||||
this.groupBox1.Controls.Add(this.checkBox14);
|
||||
this.groupBox1.Controls.Add(this.label7);
|
||||
this.groupBox1.Location = new System.Drawing.Point(12, 231);
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.Size = new System.Drawing.Size(633, 68);
|
||||
this.groupBox1.TabIndex = 22;
|
||||
this.groupBox1.TabStop = false;
|
||||
this.groupBox1.Text = "Texture Extraction";
|
||||
//
|
||||
// checkBoxUMCTGalleries
|
||||
//
|
||||
this.checkBoxUMCTGalleries.AutoSize = true;
|
||||
this.checkBoxUMCTGalleries.Location = new System.Drawing.Point(438, 42);
|
||||
this.checkBoxUMCTGalleries.Name = "checkBoxUMCTGalleries";
|
||||
this.checkBoxUMCTGalleries.Size = new System.Drawing.Size(108, 17);
|
||||
this.checkBoxUMCTGalleries.TabIndex = 9;
|
||||
this.checkBoxUMCTGalleries.Text = "Creative Galleries";
|
||||
this.checkBoxUMCTGalleries.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBox15
|
||||
//
|
||||
this.checkBox15.AutoSize = true;
|
||||
this.checkBox15.Location = new System.Drawing.Point(360, 42);
|
||||
this.checkBox15.Name = "checkBox15";
|
||||
this.checkBox15.Size = new System.Drawing.Size(66, 17);
|
||||
this.checkBox15.TabIndex = 8;
|
||||
this.checkBox15.Text = "Vehicles";
|
||||
this.checkBox15.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBox13
|
||||
//
|
||||
this.checkBox13.AutoSize = true;
|
||||
this.checkBox13.Location = new System.Drawing.Point(438, 19);
|
||||
this.checkBox13.Name = "checkBox13";
|
||||
this.checkBox13.Size = new System.Drawing.Size(107, 17);
|
||||
this.checkBox13.TabIndex = 7;
|
||||
this.checkBox13.Text = "Creative Devices";
|
||||
this.checkBox13.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBox12
|
||||
//
|
||||
this.checkBox12.AutoSize = true;
|
||||
this.checkBox12.Location = new System.Drawing.Point(248, 42);
|
||||
this.checkBox12.Name = "checkBox12";
|
||||
this.checkBox12.Size = new System.Drawing.Size(60, 17);
|
||||
this.checkBox12.TabIndex = 6;
|
||||
this.checkBox12.Text = "Athena";
|
||||
this.checkBox12.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBox11
|
||||
//
|
||||
this.checkBox11.AutoSize = true;
|
||||
this.checkBox11.Location = new System.Drawing.Point(108, 42);
|
||||
this.checkBox11.Name = "checkBox11";
|
||||
this.checkBox11.Size = new System.Drawing.Size(105, 17);
|
||||
this.checkBox11.TabIndex = 5;
|
||||
this.checkBox11.Text = "Featured Images";
|
||||
this.checkBox11.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBox10
|
||||
//
|
||||
this.checkBox10.AutoSize = true;
|
||||
this.checkBox10.Location = new System.Drawing.Point(551, 19);
|
||||
this.checkBox10.Name = "checkBox10";
|
||||
this.checkBox10.Size = new System.Drawing.Size(72, 17);
|
||||
this.checkBox10.TabIndex = 4;
|
||||
this.checkBox10.Text = "2d Assets";
|
||||
this.checkBox10.UseVisualStyleBackColor = true;
|
||||
this.checkBox10.MouseEnter += new System.EventHandler(this.checkBox10_MouseEnter);
|
||||
this.checkBox10.MouseLeave += new System.EventHandler(this.checkBox10_MouseLeave);
|
||||
this.checkBox10.MouseMove += new System.Windows.Forms.MouseEventHandler(this.checkBox10_MouseMove);
|
||||
//
|
||||
// checkBox9
|
||||
//
|
||||
this.checkBox9.AutoSize = true;
|
||||
this.checkBox9.Location = new System.Drawing.Point(108, 19);
|
||||
this.checkBox9.Name = "checkBox9";
|
||||
this.checkBox9.Size = new System.Drawing.Size(124, 17);
|
||||
this.checkBox9.TabIndex = 3;
|
||||
this.checkBox9.Text = "Cosmetics && Variants";
|
||||
this.checkBox9.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBox1
|
||||
//
|
||||
this.checkBox1.AutoSize = true;
|
||||
this.checkBox1.Location = new System.Drawing.Point(360, 20);
|
||||
this.checkBox1.Name = "checkBox1";
|
||||
this.checkBox1.Size = new System.Drawing.Size(72, 17);
|
||||
this.checkBox1.TabIndex = 2;
|
||||
this.checkBox1.Text = "Weapons";
|
||||
this.checkBox1.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBox14
|
||||
//
|
||||
this.checkBox14.AutoSize = true;
|
||||
this.checkBox14.Location = new System.Drawing.Point(248, 20);
|
||||
this.checkBox14.Name = "checkBox14";
|
||||
this.checkBox14.Size = new System.Drawing.Size(106, 17);
|
||||
this.checkBox14.TabIndex = 1;
|
||||
this.checkBox14.Text = "Loading Screens";
|
||||
this.checkBox14.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// label7
|
||||
//
|
||||
this.label7.AutoSize = true;
|
||||
this.label7.Location = new System.Drawing.Point(6, 20);
|
||||
this.label7.Name = "label7";
|
||||
this.label7.Size = new System.Drawing.Size(96, 13);
|
||||
this.label7.TabIndex = 0;
|
||||
this.label7.Text = "Supported Folders:";
|
||||
this.optionsOKButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.optionsOKButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.optionsOKButton.Location = new System.Drawing.Point(475, 439);
|
||||
this.optionsOKButton.Name = "optionsOKButton";
|
||||
this.optionsOKButton.Size = new System.Drawing.Size(97, 21);
|
||||
this.optionsOKButton.TabIndex = 18;
|
||||
this.optionsOKButton.Text = "OK";
|
||||
this.optionsOKButton.UseVisualStyleBackColor = true;
|
||||
this.optionsOKButton.Click += new System.EventHandler(this.optionsOKButton_Click);
|
||||
//
|
||||
// groupBox4
|
||||
//
|
||||
this.groupBox4.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.groupBox4.Controls.Add(this.checkBox1);
|
||||
this.groupBox4.Controls.Add(this.comboBox1);
|
||||
this.groupBox4.Controls.Add(this.label10);
|
||||
this.groupBox4.Controls.Add(this.checkBox8);
|
||||
this.groupBox4.Controls.Add(this.checkBox7);
|
||||
this.groupBox4.Controls.Add(this.filenameLabel);
|
||||
|
|
@ -250,23 +105,62 @@ namespace FModel.Forms
|
|||
this.groupBox4.Controls.Add(this.label8);
|
||||
this.groupBox4.Controls.Add(this.button1);
|
||||
this.groupBox4.Controls.Add(this.wPictureBox);
|
||||
this.groupBox4.Controls.Add(this.checkBox6);
|
||||
this.groupBox4.Controls.Add(this.checkBox5);
|
||||
this.groupBox4.Controls.Add(this.checkBox4);
|
||||
this.groupBox4.Controls.Add(this.checkBox3);
|
||||
this.groupBox4.Controls.Add(this.checkBox2);
|
||||
this.groupBox4.Controls.Add(this.label6);
|
||||
this.groupBox4.Location = new System.Drawing.Point(12, 12);
|
||||
this.groupBox4.Location = new System.Drawing.Point(12, 232);
|
||||
this.groupBox4.Name = "groupBox4";
|
||||
this.groupBox4.Size = new System.Drawing.Size(633, 213);
|
||||
this.groupBox4.Size = new System.Drawing.Size(560, 195);
|
||||
this.groupBox4.TabIndex = 21;
|
||||
this.groupBox4.TabStop = false;
|
||||
this.groupBox4.Text = "Icon Creation";
|
||||
//
|
||||
// checkBox1
|
||||
//
|
||||
this.checkBox1.AutoSize = true;
|
||||
this.checkBox1.Location = new System.Drawing.Point(244, 54);
|
||||
this.checkBox1.Name = "checkBox1";
|
||||
this.checkBox1.Size = new System.Drawing.Size(139, 17);
|
||||
this.checkBox1.TabIndex = 30;
|
||||
this.checkBox1.Text = "New Rarity Background";
|
||||
this.checkBox1.UseVisualStyleBackColor = true;
|
||||
this.checkBox1.CheckedChanged += new System.EventHandler(this.CheckBox1_CheckedChanged);
|
||||
//
|
||||
// comboBox1
|
||||
//
|
||||
this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.comboBox1.FormattingEnabled = true;
|
||||
this.comboBox1.Items.AddRange(new object[] {
|
||||
"English",
|
||||
"French",
|
||||
"German",
|
||||
"Italian",
|
||||
"Spanish",
|
||||
"Spanish (LA)",
|
||||
"Arabic",
|
||||
"Japanese",
|
||||
"Korean",
|
||||
"Polish",
|
||||
"Portuguese (Brazil)",
|
||||
"Russian",
|
||||
"Turkish",
|
||||
"Chinese (S)",
|
||||
"Traditional Chinese"});
|
||||
this.comboBox1.Location = new System.Drawing.Point(70, 19);
|
||||
this.comboBox1.Name = "comboBox1";
|
||||
this.comboBox1.Size = new System.Drawing.Size(309, 21);
|
||||
this.comboBox1.TabIndex = 29;
|
||||
//
|
||||
// label10
|
||||
//
|
||||
this.label10.AutoSize = true;
|
||||
this.label10.Location = new System.Drawing.Point(6, 22);
|
||||
this.label10.Name = "label10";
|
||||
this.label10.Size = new System.Drawing.Size(58, 13);
|
||||
this.label10.TabIndex = 28;
|
||||
this.label10.Text = "Language:";
|
||||
//
|
||||
// checkBox8
|
||||
//
|
||||
this.checkBox8.AutoSize = true;
|
||||
this.checkBox8.Location = new System.Drawing.Point(6, 57);
|
||||
this.checkBox8.Location = new System.Drawing.Point(6, 54);
|
||||
this.checkBox8.Name = "checkBox8";
|
||||
this.checkBox8.Size = new System.Drawing.Size(177, 17);
|
||||
this.checkBox8.TabIndex = 26;
|
||||
|
|
@ -277,7 +171,7 @@ namespace FModel.Forms
|
|||
// checkBox7
|
||||
//
|
||||
this.checkBox7.AutoSize = true;
|
||||
this.checkBox7.Location = new System.Drawing.Point(6, 105);
|
||||
this.checkBox7.Location = new System.Drawing.Point(6, 90);
|
||||
this.checkBox7.Name = "checkBox7";
|
||||
this.checkBox7.Size = new System.Drawing.Size(15, 14);
|
||||
this.checkBox7.TabIndex = 25;
|
||||
|
|
@ -286,8 +180,10 @@ namespace FModel.Forms
|
|||
//
|
||||
// filenameLabel
|
||||
//
|
||||
this.filenameLabel.AutoEllipsis = true;
|
||||
this.filenameLabel.AutoSize = true;
|
||||
this.filenameLabel.Location = new System.Drawing.Point(115, 106);
|
||||
this.filenameLabel.Location = new System.Drawing.Point(115, 91);
|
||||
this.filenameLabel.MaximumSize = new System.Drawing.Size(260, 13);
|
||||
this.filenameLabel.Name = "filenameLabel";
|
||||
this.filenameLabel.Size = new System.Drawing.Size(60, 13);
|
||||
this.filenameLabel.TabIndex = 24;
|
||||
|
|
@ -295,10 +191,10 @@ namespace FModel.Forms
|
|||
//
|
||||
// trackBar1
|
||||
//
|
||||
this.trackBar1.Location = new System.Drawing.Point(58, 158);
|
||||
this.trackBar1.Location = new System.Drawing.Point(58, 144);
|
||||
this.trackBar1.Maximum = 100;
|
||||
this.trackBar1.Name = "trackBar1";
|
||||
this.trackBar1.Size = new System.Drawing.Size(398, 45);
|
||||
this.trackBar1.Size = new System.Drawing.Size(325, 45);
|
||||
this.trackBar1.TabIndex = 20;
|
||||
this.trackBar1.TickStyle = System.Windows.Forms.TickStyle.None;
|
||||
this.trackBar1.ValueChanged += new System.EventHandler(this.trackBar1_ValueChanged);
|
||||
|
|
@ -306,7 +202,7 @@ namespace FModel.Forms
|
|||
// label9
|
||||
//
|
||||
this.label9.AutoSize = true;
|
||||
this.label9.Location = new System.Drawing.Point(22, 129);
|
||||
this.label9.Location = new System.Drawing.Point(22, 115);
|
||||
this.label9.Name = "label9";
|
||||
this.label9.Size = new System.Drawing.Size(30, 13);
|
||||
this.label9.TabIndex = 23;
|
||||
|
|
@ -314,11 +210,11 @@ namespace FModel.Forms
|
|||
//
|
||||
// trackBar2
|
||||
//
|
||||
this.trackBar2.Location = new System.Drawing.Point(58, 129);
|
||||
this.trackBar2.Location = new System.Drawing.Point(58, 115);
|
||||
this.trackBar2.Maximum = 1000;
|
||||
this.trackBar2.Minimum = 1;
|
||||
this.trackBar2.Name = "trackBar2";
|
||||
this.trackBar2.Size = new System.Drawing.Size(398, 45);
|
||||
this.trackBar2.Size = new System.Drawing.Size(325, 45);
|
||||
this.trackBar2.TabIndex = 22;
|
||||
this.trackBar2.TickFrequency = 25;
|
||||
this.trackBar2.TickStyle = System.Windows.Forms.TickStyle.None;
|
||||
|
|
@ -328,7 +224,7 @@ namespace FModel.Forms
|
|||
// label8
|
||||
//
|
||||
this.label8.AutoSize = true;
|
||||
this.label8.Location = new System.Drawing.Point(6, 161);
|
||||
this.label8.Location = new System.Drawing.Point(6, 147);
|
||||
this.label8.Name = "label8";
|
||||
this.label8.Size = new System.Drawing.Size(46, 13);
|
||||
this.label8.TabIndex = 21;
|
||||
|
|
@ -336,7 +232,7 @@ namespace FModel.Forms
|
|||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.Location = new System.Drawing.Point(27, 99);
|
||||
this.button1.Location = new System.Drawing.Point(27, 84);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(82, 24);
|
||||
this.button1.TabIndex = 19;
|
||||
|
|
@ -347,121 +243,80 @@ namespace FModel.Forms
|
|||
// wPictureBox
|
||||
//
|
||||
this.wPictureBox.Image = global::FModel.Properties.Resources.wTemplate;
|
||||
this.wPictureBox.Location = new System.Drawing.Point(462, 42);
|
||||
this.wPictureBox.Location = new System.Drawing.Point(389, 19);
|
||||
this.wPictureBox.Name = "wPictureBox";
|
||||
this.wPictureBox.Size = new System.Drawing.Size(165, 165);
|
||||
this.wPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||
this.wPictureBox.TabIndex = 18;
|
||||
this.wPictureBox.TabStop = false;
|
||||
//
|
||||
// checkBox6
|
||||
// checkedListBox1
|
||||
//
|
||||
this.checkBox6.AutoSize = true;
|
||||
this.checkBox6.Location = new System.Drawing.Point(476, 19);
|
||||
this.checkBox6.Name = "checkBox6";
|
||||
this.checkBox6.Size = new System.Drawing.Size(78, 17);
|
||||
this.checkBox6.TabIndex = 14;
|
||||
this.checkBox6.Text = "Challenges";
|
||||
this.checkBox6.UseVisualStyleBackColor = true;
|
||||
this.checkedListBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.checkedListBox1.CheckOnClick = true;
|
||||
this.checkedListBox1.FormattingEnabled = true;
|
||||
this.checkedListBox1.Items.AddRange(new object[] {
|
||||
"[BR] Cosmetics",
|
||||
"[BR] Cosmetics Variants",
|
||||
"[BR] Banners",
|
||||
"[BR] Challenges",
|
||||
"[BR] Consumables",
|
||||
"[BR] Gadgets",
|
||||
"[BR] Traps",
|
||||
"[BR] Weapons",
|
||||
"[STW] Heroes",
|
||||
"[STW] Defenders",
|
||||
"[STW] Workers",
|
||||
"[STW] Traps",
|
||||
"[STW] Weapons",
|
||||
"[STW] Ingredients",
|
||||
"[STW] Persistent Resources",
|
||||
"[STW] CardPacks",
|
||||
"Tokens"});
|
||||
this.checkedListBox1.Location = new System.Drawing.Point(6, 22);
|
||||
this.checkedListBox1.Name = "checkedListBox1";
|
||||
this.checkedListBox1.Size = new System.Drawing.Size(270, 184);
|
||||
this.checkedListBox1.TabIndex = 22;
|
||||
//
|
||||
// checkBox5
|
||||
// checkedListBox2
|
||||
//
|
||||
this.checkBox5.AutoSize = true;
|
||||
this.checkBox5.Location = new System.Drawing.Point(189, 19);
|
||||
this.checkBox5.Name = "checkBox5";
|
||||
this.checkBox5.Size = new System.Drawing.Size(64, 17);
|
||||
this.checkBox5.TabIndex = 4;
|
||||
this.checkBox5.Text = "Variants";
|
||||
this.checkBox5.UseVisualStyleBackColor = true;
|
||||
this.checkedListBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.checkedListBox2.FormattingEnabled = true;
|
||||
this.checkedListBox2.Items.AddRange(new object[] {
|
||||
"[BR] 2D Assets",
|
||||
"[BR] Featured Images",
|
||||
"Icons",
|
||||
"Additional Banners",
|
||||
"Additional Loading Screens"});
|
||||
this.checkedListBox2.Location = new System.Drawing.Point(284, 22);
|
||||
this.checkedListBox2.Name = "checkedListBox2";
|
||||
this.checkedListBox2.Size = new System.Drawing.Size(270, 184);
|
||||
this.checkedListBox2.TabIndex = 23;
|
||||
//
|
||||
// checkBox4
|
||||
// groupBox1
|
||||
//
|
||||
this.checkBox4.AutoSize = true;
|
||||
this.checkBox4.Location = new System.Drawing.Point(415, 19);
|
||||
this.checkBox4.Name = "checkBox4";
|
||||
this.checkBox4.Size = new System.Drawing.Size(53, 17);
|
||||
this.checkBox4.TabIndex = 3;
|
||||
this.checkBox4.Text = "Traps";
|
||||
this.checkBox4.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// checkBox3
|
||||
//
|
||||
this.checkBox3.AutoSize = true;
|
||||
this.checkBox3.Location = new System.Drawing.Point(261, 19);
|
||||
this.checkBox3.Name = "checkBox3";
|
||||
this.checkBox3.Size = new System.Drawing.Size(147, 17);
|
||||
this.checkBox3.TabIndex = 2;
|
||||
this.checkBox3.Text = "Consumables && Weapons";
|
||||
this.checkBox3.UseVisualStyleBackColor = true;
|
||||
this.checkBox3.MouseEnter += new System.EventHandler(this.checkBox3_MouseEnter);
|
||||
this.checkBox3.MouseLeave += new System.EventHandler(this.checkBox3_MouseLeave);
|
||||
this.checkBox3.MouseMove += new System.Windows.Forms.MouseEventHandler(this.checkBox3_MouseMove);
|
||||
//
|
||||
// checkBox2
|
||||
//
|
||||
this.checkBox2.AutoSize = true;
|
||||
this.checkBox2.Location = new System.Drawing.Point(108, 19);
|
||||
this.checkBox2.Name = "checkBox2";
|
||||
this.checkBox2.Size = new System.Drawing.Size(74, 17);
|
||||
this.checkBox2.TabIndex = 1;
|
||||
this.checkBox2.Text = "Cosmetics";
|
||||
this.checkBox2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// label6
|
||||
//
|
||||
this.label6.AutoSize = true;
|
||||
this.label6.Location = new System.Drawing.Point(6, 20);
|
||||
this.label6.Name = "label6";
|
||||
this.label6.Size = new System.Drawing.Size(96, 13);
|
||||
this.label6.TabIndex = 0;
|
||||
this.label6.Text = "Supported Folders:";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.ForeColor = System.Drawing.Color.Red;
|
||||
this.label2.Location = new System.Drawing.Point(184, 315);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(320, 13);
|
||||
this.label2.TabIndex = 20;
|
||||
this.label2.Text = "The more Assets you choose, the more time it will take to complete";
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.ForeColor = System.Drawing.Color.Red;
|
||||
this.label1.Location = new System.Drawing.Point(168, 314);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(19, 13);
|
||||
this.label1.TabIndex = 19;
|
||||
this.label1.Text = "⚠️";
|
||||
//
|
||||
// optionsOKButton
|
||||
//
|
||||
this.optionsOKButton.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
|
||||
this.optionsOKButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.optionsOKButton.Location = new System.Drawing.Point(512, 311);
|
||||
this.optionsOKButton.Name = "optionsOKButton";
|
||||
this.optionsOKButton.Size = new System.Drawing.Size(97, 21);
|
||||
this.optionsOKButton.TabIndex = 18;
|
||||
this.optionsOKButton.Text = "OK";
|
||||
this.optionsOKButton.UseVisualStyleBackColor = true;
|
||||
this.optionsOKButton.Click += new System.EventHandler(this.optionsOKButton_Click);
|
||||
this.groupBox1.Controls.Add(this.checkedListBox2);
|
||||
this.groupBox1.Controls.Add(this.checkedListBox1);
|
||||
this.groupBox1.Location = new System.Drawing.Point(12, 12);
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.Size = new System.Drawing.Size(560, 214);
|
||||
this.groupBox1.TabIndex = 24;
|
||||
this.groupBox1.TabStop = false;
|
||||
this.groupBox1.Text = "Icon Creation " +
|
||||
" Texure";
|
||||
//
|
||||
// UpdateModeSettings
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(657, 344);
|
||||
this.Controls.Add(this.panel2);
|
||||
this.Controls.Add(this.panel1);
|
||||
this.Controls.Add(this.groupBox1);
|
||||
this.ClientSize = new System.Drawing.Size(584, 472);
|
||||
this.Controls.Add(this.groupBox4);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.optionsOKButton);
|
||||
this.Controls.Add(this.groupBox1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.MaximizeBox = false;
|
||||
|
|
@ -469,37 +324,25 @@ namespace FModel.Forms
|
|||
this.Name = "UpdateModeSettings";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "Update Mode Settings";
|
||||
this.panel2.ResumeLayout(false);
|
||||
this.panel1.ResumeLayout(false);
|
||||
this.groupBox1.ResumeLayout(false);
|
||||
this.groupBox1.PerformLayout();
|
||||
this.groupBox4.ResumeLayout(false);
|
||||
this.groupBox4.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.trackBar1)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.trackBar2)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.wPictureBox)).EndInit();
|
||||
this.groupBox1.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Panel panel2;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.GroupBox groupBox1;
|
||||
private System.Windows.Forms.CheckBox checkBox15;
|
||||
private System.Windows.Forms.CheckBox checkBox13;
|
||||
private System.Windows.Forms.CheckBox checkBox12;
|
||||
private System.Windows.Forms.CheckBox checkBox11;
|
||||
private System.Windows.Forms.CheckBox checkBox10;
|
||||
private System.Windows.Forms.CheckBox checkBox9;
|
||||
private System.Windows.Forms.CheckBox checkBox1;
|
||||
private System.Windows.Forms.CheckBox checkBox14;
|
||||
private System.Windows.Forms.Label label7;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Button optionsOKButton;
|
||||
private System.Windows.Forms.GroupBox groupBox4;
|
||||
private System.Windows.Forms.CheckBox checkBox1;
|
||||
private System.Windows.Forms.ComboBox comboBox1;
|
||||
private System.Windows.Forms.Label label10;
|
||||
private System.Windows.Forms.CheckBox checkBox8;
|
||||
private System.Windows.Forms.CheckBox checkBox7;
|
||||
private System.Windows.Forms.Label filenameLabel;
|
||||
|
|
@ -509,15 +352,8 @@ namespace FModel.Forms
|
|||
private System.Windows.Forms.Label label8;
|
||||
private System.Windows.Forms.Button button1;
|
||||
private System.Windows.Forms.PictureBox wPictureBox;
|
||||
private System.Windows.Forms.CheckBox checkBox6;
|
||||
private System.Windows.Forms.CheckBox checkBox5;
|
||||
private System.Windows.Forms.CheckBox checkBox4;
|
||||
private System.Windows.Forms.CheckBox checkBox3;
|
||||
private System.Windows.Forms.CheckBox checkBox2;
|
||||
private System.Windows.Forms.Label label6;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Button optionsOKButton;
|
||||
private System.Windows.Forms.CheckBox checkBoxUMCTGalleries;
|
||||
private System.Windows.Forms.CheckedListBox checkedListBox1;
|
||||
private System.Windows.Forms.CheckedListBox checkedListBox2;
|
||||
private System.Windows.Forms.GroupBox groupBox1;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
|
|
@ -8,6 +9,8 @@ namespace FModel.Forms
|
|||
{
|
||||
public partial class UpdateModeSettings : Form
|
||||
{
|
||||
private static string _oldLanguage;
|
||||
|
||||
public UpdateModeSettings()
|
||||
{
|
||||
// Check if watermark exists
|
||||
|
|
@ -15,12 +18,15 @@ namespace FModel.Forms
|
|||
|
||||
InitializeComponent();
|
||||
|
||||
//ICON CREATION
|
||||
checkBox2.Checked = Properties.Settings.Default.UMCosmetics;
|
||||
checkBox5.Checked = Properties.Settings.Default.UMVariants;
|
||||
checkBox3.Checked = Properties.Settings.Default.UMConsumablesWeapons;
|
||||
checkBox4.Checked = Properties.Settings.Default.UMTraps;
|
||||
checkBox6.Checked = Properties.Settings.Default.UMChallenges;
|
||||
checkBox1.Checked = Properties.Settings.Default.rarityNew;
|
||||
|
||||
//WATERMARK
|
||||
button1.Enabled = Properties.Settings.Default.UMWatermark;
|
||||
checkBox7.Checked = Properties.Settings.Default.UMWatermark;
|
||||
trackBar1.Enabled = Properties.Settings.Default.UMWatermark;
|
||||
trackBar2.Enabled = Properties.Settings.Default.UMWatermark;
|
||||
trackBar1.Value = Properties.Settings.Default.UMOpacity;
|
||||
trackBar2.Value = Properties.Settings.Default.UMSize;
|
||||
|
||||
//FEATURED
|
||||
checkBox8.Checked = Properties.Settings.Default.UMFeatured;
|
||||
|
|
@ -28,7 +34,15 @@ namespace FModel.Forms
|
|||
{
|
||||
filenameLabel.Text = @"File Name: " + Path.GetFileName(Properties.Settings.Default.UMFilename);
|
||||
|
||||
Bitmap bmp = new Bitmap(checkBox8.Checked ? Resources.wTemplateF : Resources.wTemplate);
|
||||
Bitmap bmp = null;
|
||||
if (Properties.Settings.Default.UMFeatured)
|
||||
{
|
||||
bmp = new Bitmap(Properties.Settings.Default.rarityNew ? new Bitmap(Resources.wTemplateF) : new Bitmap(Resources.wTemplateFv1));
|
||||
}
|
||||
else
|
||||
{
|
||||
bmp = new Bitmap(Properties.Settings.Default.rarityNew ? new Bitmap(Resources.wTemplate) : new Bitmap(Resources.wTemplatev1));
|
||||
}
|
||||
Graphics g = Graphics.FromImage(bmp);
|
||||
|
||||
Image watermark = Image.FromFile(Properties.Settings.Default.UMFilename);
|
||||
|
|
@ -38,48 +52,53 @@ namespace FModel.Forms
|
|||
wPictureBox.Image = bmp;
|
||||
}
|
||||
|
||||
//WATERMARK
|
||||
button1.Enabled = Properties.Settings.Default.UMWatermark;
|
||||
trackBar1.Enabled = Properties.Settings.Default.UMWatermark;
|
||||
trackBar2.Enabled = Properties.Settings.Default.UMWatermark;
|
||||
trackBar2.Value = Properties.Settings.Default.UMSize;
|
||||
trackBar1.Value = Properties.Settings.Default.UMOpacity;
|
||||
checkBox7.Checked = Properties.Settings.Default.UMWatermark;
|
||||
|
||||
//TEXTURES
|
||||
checkBox9.Checked = Properties.Settings.Default.UMTCosmeticsVariants;
|
||||
checkBox14.Checked = Properties.Settings.Default.UMTLoading;
|
||||
checkBox1.Checked = Properties.Settings.Default.UMTWeapons;
|
||||
checkBox10.Checked = Properties.Settings.Default.UMTBanners;
|
||||
checkBox11.Checked = Properties.Settings.Default.UMTFeaturedIMGs;
|
||||
checkBox12.Checked = Properties.Settings.Default.UMTAthena;
|
||||
checkBox13.Checked = Properties.Settings.Default.UMTDevices;
|
||||
checkBox15.Checked = Properties.Settings.Default.UMTVehicles;
|
||||
checkBoxUMCTGalleries.Checked = Properties.Settings.Default.UMCTGalleries;
|
||||
_oldLanguage = Properties.Settings.Default.IconLanguage;
|
||||
comboBox1.SelectedIndex = comboBox1.FindStringExact(Properties.Settings.Default.IconLanguage);
|
||||
}
|
||||
|
||||
private void optionsOKButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
Properties.Settings.Default.UMCosmetics = checkBox2.Checked;
|
||||
Properties.Settings.Default.UMVariants = checkBox5.Checked;
|
||||
Properties.Settings.Default.UMConsumablesWeapons = checkBox3.Checked;
|
||||
Properties.Settings.Default.UMTraps = checkBox4.Checked;
|
||||
Properties.Settings.Default.UMChallenges = checkBox6.Checked;
|
||||
RegisterSettings.updateModeListParameters = new List<string>();
|
||||
|
||||
Properties.Settings.Default.UMFeatured = checkBox8.Checked;
|
||||
Properties.Settings.Default.UMWatermark = checkBox7.Checked;
|
||||
Properties.Settings.Default.UMTCosmeticsVariants = checkBox9.Checked;
|
||||
Properties.Settings.Default.UMTLoading = checkBox14.Checked;
|
||||
Properties.Settings.Default.UMTWeapons = checkBox1.Checked;
|
||||
Properties.Settings.Default.UMTBanners = checkBox10.Checked;
|
||||
Properties.Settings.Default.UMTFeaturedIMGs = checkBox11.Checked;
|
||||
Properties.Settings.Default.UMTAthena = checkBox12.Checked;
|
||||
Properties.Settings.Default.UMTDevices = checkBox13.Checked;
|
||||
Properties.Settings.Default.UMTVehicles = checkBox15.Checked;
|
||||
Properties.Settings.Default.UMCTGalleries = checkBoxUMCTGalleries.Checked;
|
||||
Properties.Settings.Default.rarityNew = checkBox1.Checked;
|
||||
|
||||
Properties.Settings.Default.UMSize = trackBar2.Value;
|
||||
Properties.Settings.Default.UMOpacity = trackBar1.Value;
|
||||
|
||||
//PARAMETERS
|
||||
if (checkedListBox1.GetItemCheckState(0) == CheckState.Checked) { RegisterSettings.updateModeListParameters.Add("../FortniteGame/Content/Athena/Items/Cosmetics/"); }
|
||||
if (checkedListBox1.GetItemCheckState(1) == CheckState.Checked) { RegisterSettings.updateModeListParameters.Add("../FortniteGame/Content/Athena/Items/CosmeticVariantTokens/"); }
|
||||
if (checkedListBox1.GetItemCheckState(2) == CheckState.Checked) { RegisterSettings.updateModeListParameters.Add("../FortniteGame/Content/Athena/Items/BannerToken/"); }
|
||||
if (checkedListBox1.GetItemCheckState(3) == CheckState.Checked) { RegisterSettings.updateModeListParameters.Add("../FortniteGame/Content/Athena/Items/ChallengeBundles/"); }
|
||||
if (checkedListBox1.GetItemCheckState(4) == CheckState.Checked) { RegisterSettings.updateModeListParameters.Add("../FortniteGame/Content/Athena/Items/Consumables/"); }
|
||||
if (checkedListBox1.GetItemCheckState(5) == CheckState.Checked) { RegisterSettings.updateModeListParameters.Add("../FortniteGame/Content/Athena/Items/Gameplay/"); }
|
||||
if (checkedListBox1.GetItemCheckState(6) == CheckState.Checked) { RegisterSettings.updateModeListParameters.Add("../FortniteGame/Content/Athena/Items/Traps/"); }
|
||||
if (checkedListBox1.GetItemCheckState(7) == CheckState.Checked) { RegisterSettings.updateModeListParameters.Add("../FortniteGame/Content/Athena/Items/Weapons/"); }
|
||||
if (checkedListBox1.GetItemCheckState(8) == CheckState.Checked) { RegisterSettings.updateModeListParameters.Add("../FortniteGame/Content/Heroes/"); }
|
||||
if (checkedListBox1.GetItemCheckState(9) == CheckState.Checked) { RegisterSettings.updateModeListParameters.Add("../FortniteGame/Content/Items/Defenders/"); }
|
||||
if (checkedListBox1.GetItemCheckState(10) == CheckState.Checked) { RegisterSettings.updateModeListParameters.Add("../FortniteGame/Content/Items/Workers/"); }
|
||||
if (checkedListBox1.GetItemCheckState(11) == CheckState.Checked) { RegisterSettings.updateModeListParameters.Add("../FortniteGame/Content/Items/Traps/"); }
|
||||
if (checkedListBox1.GetItemCheckState(12) == CheckState.Checked) { RegisterSettings.updateModeListParameters.Add("../FortniteGame/Content/Items/Weapons/"); }
|
||||
if (checkedListBox1.GetItemCheckState(13) == CheckState.Checked) { RegisterSettings.updateModeListParameters.Add("../FortniteGame/Content/Items/Ingredients/"); }
|
||||
if (checkedListBox1.GetItemCheckState(14) == CheckState.Checked) { RegisterSettings.updateModeListParameters.Add("../FortniteGame/Content/Items/PersistentResources/"); }
|
||||
if (checkedListBox1.GetItemCheckState(15) == CheckState.Checked) { RegisterSettings.updateModeListParameters.Add("../FortniteGame/Content/Items/CardPacks/"); }
|
||||
if (checkedListBox1.GetItemCheckState(16) == CheckState.Checked) { RegisterSettings.updateModeListParameters.Add("../FortniteGame/Content/Items/Tokens/"); }
|
||||
|
||||
if (checkedListBox2.GetItemCheckState(0) == CheckState.Checked) { RegisterSettings.updateModeListParameters.Add("../FortniteGame/Content/2dAssets/"); }
|
||||
if (checkedListBox2.GetItemCheckState(1) == CheckState.Checked) { RegisterSettings.updateModeListParameters.Add("../FortniteGame/Content/UI/Foundation/Textures/BattleRoyale/FeaturedItems/"); }
|
||||
if (checkedListBox2.GetItemCheckState(2) == CheckState.Checked) { RegisterSettings.updateModeListParameters.Add("../FortniteGame/Content/UI/Foundation/Textures/Icons/"); }
|
||||
if (checkedListBox2.GetItemCheckState(3) == CheckState.Checked) { RegisterSettings.updateModeListParameters.Add("../FortniteGame/Content/UI/Foundation/Textures/Banner/"); }
|
||||
if (checkedListBox2.GetItemCheckState(4) == CheckState.Checked) { RegisterSettings.updateModeListParameters.Add("../FortniteGame/Content/UI/Foundation/Textures/LoadingScreens/"); }
|
||||
|
||||
//LOCRES
|
||||
Properties.Settings.Default.IconLanguage = comboBox1.SelectedItem.ToString();
|
||||
if (comboBox1.SelectedItem.ToString() != _oldLanguage)
|
||||
{
|
||||
LoadLocRes.LoadMySelectedLocRes(Properties.Settings.Default.IconLanguage);
|
||||
}
|
||||
|
||||
Properties.Settings.Default.Save();
|
||||
Close();
|
||||
}
|
||||
|
|
@ -155,48 +174,58 @@ namespace FModel.Forms
|
|||
|
||||
private void checkBox8_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
Bitmap bmp = new Bitmap(checkBox8.Checked ? Resources.wTemplateF : Resources.wTemplate);
|
||||
Graphics g = Graphics.FromImage(bmp);
|
||||
if (!string.IsNullOrEmpty(Properties.Settings.Default.UMFilename))
|
||||
if (!checkBox8.Checked)
|
||||
{
|
||||
Image watermark = Image.FromFile(Properties.Settings.Default.UMFilename);
|
||||
var opacityImage = ImageUtilities.SetImageOpacity(watermark, (float)trackBar1.Value / 100);
|
||||
g.DrawImage(ImageUtilities.ResizeImage(opacityImage, trackBar2.Value, trackBar2.Value), (522 - trackBar2.Value) / 2, (522 - trackBar2.Value) / 2, trackBar2.Value, trackBar2.Value);
|
||||
Bitmap bmp = checkBox1.Checked ? new Bitmap(Resources.wTemplate) : new Bitmap(Resources.wTemplatev1);
|
||||
Graphics g = Graphics.FromImage(bmp);
|
||||
if (File.Exists(Properties.Settings.Default.UMFilename))
|
||||
{
|
||||
Image watermark = Image.FromFile(Properties.Settings.Default.UMFilename);
|
||||
var opacityImage = ImageUtilities.SetImageOpacity(watermark, (float)trackBar1.Value / 100);
|
||||
g.DrawImage(ImageUtilities.ResizeImage(opacityImage, trackBar2.Value, trackBar2.Value), (522 - trackBar2.Value) / 2, (522 - trackBar2.Value) / 2, trackBar2.Value, trackBar2.Value);
|
||||
}
|
||||
wPictureBox.Image = bmp;
|
||||
}
|
||||
if (checkBox8.Checked)
|
||||
{
|
||||
Bitmap bmp = checkBox1.Checked ? new Bitmap(Resources.wTemplateF) : new Bitmap(Resources.wTemplateFv1);
|
||||
Graphics g = Graphics.FromImage(bmp);
|
||||
if (File.Exists(Properties.Settings.Default.UMFilename))
|
||||
{
|
||||
Image watermark = Image.FromFile(Properties.Settings.Default.UMFilename);
|
||||
var opacityImage = ImageUtilities.SetImageOpacity(watermark, (float)trackBar1.Value / 100);
|
||||
g.DrawImage(ImageUtilities.ResizeImage(opacityImage, trackBar2.Value, trackBar2.Value), (522 - trackBar2.Value) / 2, (522 - trackBar2.Value) / 2, trackBar2.Value, trackBar2.Value);
|
||||
}
|
||||
wPictureBox.Image = bmp;
|
||||
}
|
||||
|
||||
wPictureBox.Image = bmp;
|
||||
}
|
||||
|
||||
#region MOVE PANEL
|
||||
//CONSUMABLES & WEAPONS
|
||||
private void checkBox3_MouseEnter(object sender, EventArgs e)
|
||||
private void CheckBox1_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
panel1.Visible = true;
|
||||
if (!checkBox1.Checked)
|
||||
{
|
||||
Bitmap bmp = checkBox8.Checked ? new Bitmap(Resources.wTemplateFv1) : new Bitmap(Resources.wTemplatev1);
|
||||
Graphics g = Graphics.FromImage(bmp);
|
||||
if (File.Exists(Properties.Settings.Default.UMFilename))
|
||||
{
|
||||
Image watermark = Image.FromFile(Properties.Settings.Default.UMFilename);
|
||||
var opacityImage = ImageUtilities.SetImageOpacity(watermark, (float)trackBar1.Value / 100);
|
||||
g.DrawImage(ImageUtilities.ResizeImage(opacityImage, trackBar2.Value, trackBar2.Value), (522 - trackBar2.Value) / 2, (522 - trackBar2.Value) / 2, trackBar2.Value, trackBar2.Value);
|
||||
}
|
||||
wPictureBox.Image = bmp;
|
||||
}
|
||||
if (checkBox1.Checked)
|
||||
{
|
||||
Bitmap bmp = checkBox8.Checked ? new Bitmap(Resources.wTemplateF) : new Bitmap(Resources.wTemplate);
|
||||
Graphics g = Graphics.FromImage(bmp);
|
||||
if (File.Exists(Properties.Settings.Default.UMFilename))
|
||||
{
|
||||
Image watermark = Image.FromFile(Properties.Settings.Default.UMFilename);
|
||||
var opacityImage = ImageUtilities.SetImageOpacity(watermark, (float)trackBar1.Value / 100);
|
||||
g.DrawImage(ImageUtilities.ResizeImage(opacityImage, trackBar2.Value, trackBar2.Value), (522 - trackBar2.Value) / 2, (522 - trackBar2.Value) / 2, trackBar2.Value, trackBar2.Value);
|
||||
}
|
||||
wPictureBox.Image = bmp;
|
||||
}
|
||||
}
|
||||
private void checkBox3_MouseLeave(object sender, EventArgs e)
|
||||
{
|
||||
panel1.Visible = false;
|
||||
}
|
||||
private void checkBox3_MouseMove(object sender, MouseEventArgs e)
|
||||
{
|
||||
panel1.Left = e.X + 40;
|
||||
panel1.Top = e.Y + 5;
|
||||
}
|
||||
|
||||
//2D ASSETS
|
||||
private void checkBox10_MouseEnter(object sender, EventArgs e)
|
||||
{
|
||||
panel2.Visible = true;
|
||||
}
|
||||
private void checkBox10_MouseLeave(object sender, EventArgs e)
|
||||
{
|
||||
panel2.Visible = false;
|
||||
}
|
||||
private void checkBox10_MouseMove(object sender, MouseEventArgs e)
|
||||
{
|
||||
panel2.Left = e.X + 225;
|
||||
panel2.Top = e.Y + 225;
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,8 +14,6 @@ using AutoUpdaterDotNET;
|
|||
using csharp_wick;
|
||||
using FModel.Converter;
|
||||
using FModel.Forms;
|
||||
using FModel.Parser.Challenges;
|
||||
using FModel.Parser.Items;
|
||||
using FModel.Properties;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
|
|
@ -27,12 +25,9 @@ namespace FModel
|
|||
{
|
||||
public partial class MainWindow : Form
|
||||
{
|
||||
#region to refactor
|
||||
private static Stopwatch StopWatch { get; set; }
|
||||
private static Dictionary<string, string> _diffToExtract { get; set; }
|
||||
private static Stopwatch _stopWatch { get; set; }
|
||||
private static List<string> _itemsToDisplay { get; set; }
|
||||
public static string[] SelectedItemsArray { get; set; }
|
||||
#endregion
|
||||
private static string[] _selectedItemsArray { get; set; }
|
||||
|
||||
public MainWindow()
|
||||
{
|
||||
|
|
@ -175,7 +170,6 @@ namespace FModel
|
|||
AddToUI.checkAndAddDynamicKeys();
|
||||
Utilities.colorMyPaks(loadOneToolStripMenuItem);
|
||||
Utilities.SetFolderPermission(App.DefaultOutputPath);
|
||||
Utilities.JohnWickCheck();
|
||||
Utilities.CreateDefaultFolders();
|
||||
FontUtilities.SetFont();
|
||||
});
|
||||
|
|
@ -382,7 +376,7 @@ namespace FModel
|
|||
private void CreatePakList(ToolStripItemClickedEventArgs selectedPak = null, bool loadAllPaKs = false, bool getDiff = false, bool updateMode = false)
|
||||
{
|
||||
ThePak.AllpaksDictionary = new Dictionary<string, string>();
|
||||
_diffToExtract = new Dictionary<string, string>();
|
||||
RegisterSettings.updateModeDictionary = new Dictionary<string, string>();
|
||||
ThePak.PaksMountPoint = new Dictionary<string, string>();
|
||||
PakHelper.PakAsTxt = null;
|
||||
|
||||
|
|
@ -453,7 +447,7 @@ namespace FModel
|
|||
ComparePaKs();
|
||||
if (updateMode && Checking.DifferenceFileExists)
|
||||
{
|
||||
UmFilter(PakHelper.PakAsTxt, _diffToExtract);
|
||||
RegisterSettings.UpdateModeAddToDict(PakHelper.PakAsTxt);
|
||||
Checking.UmWorking = true;
|
||||
}
|
||||
|
||||
|
|
@ -570,77 +564,6 @@ namespace FModel
|
|||
backgroundWorker2.RunWorkerAsync();
|
||||
}
|
||||
}
|
||||
private void UmFilter(String[] theFile, Dictionary<string, string> diffToExtract)
|
||||
{
|
||||
List<string> searchResults = new List<string>();
|
||||
|
||||
if (Settings.Default.UMCosmetics)
|
||||
searchResults.Add("Athena/Items/Cosmetics/");
|
||||
if (Settings.Default.UMVariants)
|
||||
searchResults.Add("Athena/Items/CosmeticVariantTokens/");
|
||||
if (Settings.Default.UMConsumablesWeapons)
|
||||
{
|
||||
searchResults.Add("AGID_");
|
||||
searchResults.Add("WID_");
|
||||
}
|
||||
if (Settings.Default.UMTraps)
|
||||
searchResults.Add("Athena/Items/Traps/");
|
||||
if (Settings.Default.UMChallenges)
|
||||
searchResults.Add("Athena/Items/ChallengeBundles/");
|
||||
|
||||
if (Settings.Default.UMTCosmeticsVariants)
|
||||
{
|
||||
searchResults.Add("UI/Foundation/Textures/Icons/Backpacks/");
|
||||
searchResults.Add("UI/Foundation/Textures/Icons/Emotes/");
|
||||
searchResults.Add("UI/Foundation/Textures/Icons/Heroes/Athena/Soldier/");
|
||||
searchResults.Add("UI/Foundation/Textures/Icons/Heroes/Variants/");
|
||||
searchResults.Add("UI/Foundation/Textures/Icons/Skydiving/");
|
||||
searchResults.Add("UI/Foundation/Textures/Icons/Pets/");
|
||||
searchResults.Add("UI/Foundation/Textures/Icons/Wraps/");
|
||||
}
|
||||
if (Settings.Default.UMTLoading)
|
||||
{
|
||||
searchResults.Add("FortniteGame/Content/2dAssets/Loadingscreens/");
|
||||
searchResults.Add("UI/Foundation/Textures/LoadingScreens/");
|
||||
}
|
||||
if (Settings.Default.UMTWeapons)
|
||||
searchResults.Add("UI/Foundation/Textures/Icons/Weapons/Items/");
|
||||
if (Settings.Default.UMTBanners)
|
||||
{
|
||||
searchResults.Add("FortniteGame/Content/2dAssets/Banners/");
|
||||
searchResults.Add("UI/Foundation/Textures/Banner/");
|
||||
searchResults.Add("FortniteGame/Content/2dAssets/Sprays/");
|
||||
searchResults.Add("FortniteGame/Content/2dAssets/Emoji/");
|
||||
searchResults.Add("FortniteGame/Content/2dAssets/Music/");
|
||||
searchResults.Add("FortniteGame/Content/2dAssets/Toys/");
|
||||
}
|
||||
if (Settings.Default.UMTFeaturedIMGs)
|
||||
searchResults.Add("UI/Foundation/Textures/BattleRoyale/");
|
||||
if (Settings.Default.UMTAthena)
|
||||
searchResults.Add("UI/Foundation/Textures/Icons/Athena/");
|
||||
if (Settings.Default.UMTAthena)
|
||||
searchResults.Add("UI/Foundation/Textures/Icons/Athena/");
|
||||
if (Settings.Default.UMTDevices)
|
||||
searchResults.Add("UI/Foundation/Textures/Icons/Devices/");
|
||||
if (Settings.Default.UMTVehicles)
|
||||
searchResults.Add("UI/Foundation/Textures/Icons/Vehicles/");
|
||||
if (Settings.Default.UMCTGalleries)
|
||||
searchResults.Add("Athena/Items/Consumables/PlaysetGrenade/PlaysetGrenadeInstances/");
|
||||
|
||||
for (int i = 0; i < theFile.Length; i++)
|
||||
{
|
||||
bool b = searchResults.Any(s => theFile[i].Contains(s));
|
||||
if (b)
|
||||
{
|
||||
string filename = theFile[i].Substring(theFile[i].LastIndexOf("/", StringComparison.Ordinal) + 1);
|
||||
if (filename.Contains(".uasset") || filename.Contains(".uexp") || filename.Contains(".ubulk"))
|
||||
{
|
||||
if (!diffToExtract.ContainsKey(filename.Substring(0, filename.LastIndexOf(".", StringComparison.Ordinal))))
|
||||
diffToExtract.Add(filename.Substring(0, filename.LastIndexOf(".", StringComparison.Ordinal)), theFile[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//EVENTS
|
||||
private async void loadOneToolStripMenuItem_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
|
||||
|
|
@ -700,14 +623,14 @@ namespace FModel
|
|||
//UPDATE MODE
|
||||
private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e)
|
||||
{
|
||||
StopWatch = new Stopwatch();
|
||||
StopWatch.Start();
|
||||
_stopWatch = new Stopwatch();
|
||||
_stopWatch.Start();
|
||||
Utilities.CreateDefaultFolders();
|
||||
RegisterInArray(e, true);
|
||||
}
|
||||
private void backgroundWorker2_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
|
||||
{
|
||||
StopWatch.Stop();
|
||||
_stopWatch.Stop();
|
||||
if (e.Cancelled)
|
||||
{
|
||||
new UpdateMyState("Canceled!", "Error").ChangeProcessState();
|
||||
|
|
@ -722,12 +645,12 @@ namespace FModel
|
|||
}
|
||||
else
|
||||
{
|
||||
TimeSpan ts = StopWatch.Elapsed;
|
||||
TimeSpan ts = _stopWatch.Elapsed;
|
||||
string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10);
|
||||
new UpdateMyState("Time elapsed: " + elapsedTime, "Success").ChangeProcessState();
|
||||
}
|
||||
|
||||
SelectedItemsArray = null;
|
||||
_selectedItemsArray = null;
|
||||
Checking.UmWorking = false;
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
|
|
@ -861,7 +784,7 @@ namespace FModel
|
|||
}
|
||||
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (listBox1.SelectedItem != null && SelectedItemsArray == null)
|
||||
if (listBox1.SelectedItem != null && _selectedItemsArray == null)
|
||||
{
|
||||
ExtractButton.Enabled = true;
|
||||
}
|
||||
|
|
@ -888,10 +811,10 @@ namespace FModel
|
|||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
SelectedItemsArray = new string[_diffToExtract.Count];
|
||||
for (int i = 0; i < _diffToExtract.Count; i++) //ADD DICT ITEM TO ARRAY
|
||||
_selectedItemsArray = new string[RegisterSettings.updateModeDictionary.Count];
|
||||
for (int i = 0; i < RegisterSettings.updateModeDictionary.Count; i++) //ADD DICT ITEM TO ARRAY
|
||||
{
|
||||
SelectedItemsArray[i] = _diffToExtract.Keys.ElementAt(i);
|
||||
_selectedItemsArray[i] = RegisterSettings.updateModeDictionary.Keys.ElementAt(i);
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
|
@ -899,10 +822,10 @@ namespace FModel
|
|||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
SelectedItemsArray = new string[listBox1.SelectedItems.Count];
|
||||
_selectedItemsArray = new string[listBox1.SelectedItems.Count];
|
||||
for (int i = 0; i < listBox1.SelectedItems.Count; i++) //ADD SELECTED ITEM TO ARRAY
|
||||
{
|
||||
SelectedItemsArray[i] = listBox1.SelectedItems[i].ToString();
|
||||
_selectedItemsArray[i] = listBox1.SelectedItems[i].ToString();
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
|
@ -911,7 +834,7 @@ namespace FModel
|
|||
}
|
||||
private void ExtractAndSerializeItems(DoWorkEventArgs e)
|
||||
{
|
||||
for (int i = 0; i < SelectedItemsArray.Length; i++)
|
||||
for (int i = 0; i < _selectedItemsArray.Length; i++)
|
||||
{
|
||||
if (backgroundWorker1.CancellationPending && backgroundWorker1.IsBusy)
|
||||
{
|
||||
|
|
@ -924,7 +847,7 @@ namespace FModel
|
|||
return;
|
||||
}
|
||||
|
||||
ThePak.CurrentUsedItem = SelectedItemsArray[i];
|
||||
ThePak.CurrentUsedItem = _selectedItemsArray[i];
|
||||
|
||||
Checking.ExtractedFilePath = JohnWick.ExtractAsset(ThePak.AllpaksDictionary[ThePak.CurrentUsedItem], ThePak.CurrentUsedItem);
|
||||
|
||||
|
|
@ -976,99 +899,89 @@ namespace FModel
|
|||
}
|
||||
else { throw new ArgumentException("Can't serialize this file"); }
|
||||
}
|
||||
private void NavigateThroughJson(PakAsset theAsset, string questJson = null)
|
||||
private void NavigateThroughJson(PakAsset theAsset, string theAssetExtractedPath = null)
|
||||
{
|
||||
try
|
||||
{
|
||||
string parsedJson = string.Empty;
|
||||
|
||||
try
|
||||
{
|
||||
parsedJson = JToken.Parse(theAsset.GetSerialized()).ToString();
|
||||
}
|
||||
catch (JsonReaderException)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ItemsIdParser[] itemId = ItemsIdParser.FromJson(parsedJson);
|
||||
dynamic AssetData = JsonConvert.DeserializeObject(theAsset.GetSerialized());
|
||||
JArray AssetArray = JArray.FromObject(AssetData);
|
||||
|
||||
new UpdateMyState("Parsing " + ThePak.CurrentUsedItem + "...", "Waiting").ChangeProcessState();
|
||||
for (int i = 0; i < itemId.Length; i++)
|
||||
JToken exportToken = AssetArray[0]["export_type"];
|
||||
switch (exportToken != null ? exportToken.Value<string>() : "")
|
||||
{
|
||||
switch (itemId[i].ExportType)
|
||||
{
|
||||
case "AthenaBackpackItemDefinition":
|
||||
case "AthenaBattleBusItemDefinition":
|
||||
case "AthenaCharacterItemDefinition":
|
||||
case "AthenaConsumableEmoteItemDefinition":
|
||||
case "AthenaSkyDiveContrailItemDefinition":
|
||||
case "AthenaDanceItemDefinition":
|
||||
case "AthenaEmojiItemDefinition":
|
||||
case "AthenaGliderItemDefinition":
|
||||
case "AthenaItemWrapDefinition":
|
||||
case "AthenaLoadingScreenItemDefinition":
|
||||
case "AthenaMusicPackItemDefinition":
|
||||
case "AthenaPetCarrierItemDefinition":
|
||||
case "AthenaPickaxeItemDefinition":
|
||||
case "AthenaSprayItemDefinition":
|
||||
case "AthenaToyItemDefinition":
|
||||
case "AthenaVictoryPoseItemDefinition":
|
||||
case "FortBannerTokenType":
|
||||
case "AthenaGadgetItemDefinition":
|
||||
CreateItemIcon(itemId[i], "athIteDef");
|
||||
break;
|
||||
case "FortWeaponRangedItemDefinition":
|
||||
case "FortWeaponMeleeItemDefinition":
|
||||
case "FortIngredientItemDefinition":
|
||||
CreateItemIcon(itemId[i], "consAndWeap");
|
||||
break;
|
||||
case "FortVariantTokenType":
|
||||
CreateItemIcon(itemId[i], "variant");
|
||||
break;
|
||||
case "FortAmmoItemDefinition":
|
||||
CreateItemIcon(itemId[i], "ammo");
|
||||
break;
|
||||
case "FortHeroType":
|
||||
CreateItemIcon(itemId[i], "stwHeroes");
|
||||
break;
|
||||
case "FortDefenderItemDefinition":
|
||||
CreateItemIcon(itemId[i], "stwDefenders");
|
||||
break;
|
||||
case "FortContextTrapItemDefinition":
|
||||
case "FortTrapItemDefinition":
|
||||
case "FortCardPackItemDefinition":
|
||||
case "FortPlaysetGrenadeItemDefinition":
|
||||
case "FortConsumableAccountItemDefinition":
|
||||
case "FortBadgeItemDefinition":
|
||||
case "FortCurrencyItemDefinition":
|
||||
case "FortConversionControlItemDefinition":
|
||||
case "FortHomebaseNodeItemDefinition":
|
||||
case "FortPersonalVehicleItemDefinition":
|
||||
case "FortCampaignHeroLoadoutItemDefinition":
|
||||
case "FortNeverPersistItemDefinition":
|
||||
case "FortPersistentResourceItemDefinition":
|
||||
case "FortResourceItemDefinition":
|
||||
case "FortGadgetItemDefinition":
|
||||
case "FortStatItemDefinition":
|
||||
case "FortTokenType":
|
||||
case "FortDailyRewardScheduleTokenDefinition":
|
||||
case "FortWorkerType":
|
||||
case "FortConditionalResourceItemDefinition":
|
||||
case "FortAwardItemDefinition":
|
||||
case "FortChallengeBundleScheduleDefinition":
|
||||
CreateItemIcon(itemId[i]);
|
||||
break;
|
||||
case "FortChallengeBundleItemDefinition":
|
||||
CreateBundleChallengesIcon(itemId[i], parsedJson, questJson);
|
||||
break;
|
||||
case "Texture2D":
|
||||
ConvertTexture2D();
|
||||
break;
|
||||
case "SoundWave":
|
||||
ConvertSoundWave();
|
||||
break;
|
||||
}
|
||||
case "AthenaBackpackItemDefinition":
|
||||
case "AthenaBattleBusItemDefinition":
|
||||
case "AthenaCharacterItemDefinition":
|
||||
case "AthenaConsumableEmoteItemDefinition":
|
||||
case "AthenaSkyDiveContrailItemDefinition":
|
||||
case "AthenaDanceItemDefinition":
|
||||
case "AthenaEmojiItemDefinition":
|
||||
case "AthenaGliderItemDefinition":
|
||||
case "AthenaItemWrapDefinition":
|
||||
case "AthenaLoadingScreenItemDefinition":
|
||||
case "AthenaMusicPackItemDefinition":
|
||||
case "AthenaPetCarrierItemDefinition":
|
||||
case "AthenaPickaxeItemDefinition":
|
||||
case "AthenaSprayItemDefinition":
|
||||
case "AthenaToyItemDefinition":
|
||||
case "AthenaVictoryPoseItemDefinition":
|
||||
case "FortBannerTokenType":
|
||||
case "AthenaGadgetItemDefinition":
|
||||
CreateItemIcon(AssetArray[0], "athIteDef");
|
||||
break;
|
||||
case "FortWeaponRangedItemDefinition":
|
||||
case "FortWeaponMeleeItemDefinition":
|
||||
case "FortIngredientItemDefinition":
|
||||
CreateItemIcon(AssetArray[0], "consAndWeap");
|
||||
break;
|
||||
case "FortVariantTokenType":
|
||||
CreateItemIcon(AssetArray[0], "variant");
|
||||
break;
|
||||
case "FortAmmoItemDefinition":
|
||||
CreateItemIcon(AssetArray[0], "ammo");
|
||||
break;
|
||||
case "FortHeroType":
|
||||
CreateItemIcon(AssetArray[0], "stwHeroes");
|
||||
break;
|
||||
case "FortDefenderItemDefinition":
|
||||
CreateItemIcon(AssetArray[0], "stwDefenders");
|
||||
break;
|
||||
case "FortContextTrapItemDefinition":
|
||||
case "FortTrapItemDefinition":
|
||||
case "FortCardPackItemDefinition":
|
||||
case "FortPlaysetGrenadeItemDefinition":
|
||||
case "FortConsumableAccountItemDefinition":
|
||||
case "FortBadgeItemDefinition":
|
||||
case "FortCurrencyItemDefinition":
|
||||
case "FortConversionControlItemDefinition":
|
||||
case "FortHomebaseNodeItemDefinition":
|
||||
case "FortPersonalVehicleItemDefinition":
|
||||
case "FortCampaignHeroLoadoutItemDefinition":
|
||||
case "FortNeverPersistItemDefinition":
|
||||
case "FortPersistentResourceItemDefinition":
|
||||
case "FortResourceItemDefinition":
|
||||
case "FortGadgetItemDefinition":
|
||||
case "FortStatItemDefinition":
|
||||
case "FortTokenType":
|
||||
case "FortDailyRewardScheduleTokenDefinition":
|
||||
case "FortWorkerType":
|
||||
case "FortConditionalResourceItemDefinition":
|
||||
case "FortAwardItemDefinition":
|
||||
case "FortChallengeBundleScheduleDefinition":
|
||||
CreateItemIcon(AssetArray[0]);
|
||||
break;
|
||||
case "FortChallengeBundleItemDefinition":
|
||||
CreateBundleChallengesIcon(AssetArray[0], theAssetExtractedPath);
|
||||
break;
|
||||
case "Texture2D":
|
||||
ConvertTexture2D();
|
||||
break;
|
||||
case "SoundWave":
|
||||
ConvertSoundWave();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
|
@ -1076,7 +989,7 @@ namespace FModel
|
|||
throw new ArgumentException(ex.Message);
|
||||
}
|
||||
}
|
||||
private void CreateItemIcon(ItemsIdParser theItem, string specialMode = null)
|
||||
private void CreateItemIcon(JToken theItem, string specialMode = null)
|
||||
{
|
||||
new UpdateMyState(ThePak.CurrentUsedItem + " is an Item Definition", "Success").ChangeProcessState();
|
||||
|
||||
|
|
@ -1144,10 +1057,9 @@ namespace FModel
|
|||
/// <param name="theParsedJson"> to parse from this instead of calling MyAsset.GetSerialized() again </param>
|
||||
/// <param name="extractedBundlePath"> needed for the LastFolder </param>
|
||||
/// <returns> the bundle image ready to be displayed in pictureBox1 </returns>
|
||||
private void CreateBundleChallengesIcon(ItemsIdParser theItem, string theParsedJson, string extractedBundlePath)
|
||||
private void CreateBundleChallengesIcon(JToken theItem, string extractedBundlePath)
|
||||
{
|
||||
ChallengeBundleIdParser bundleParser = ChallengeBundleIdParser.FromJson(theParsedJson).FirstOrDefault();
|
||||
BundleInfos.getBundleData(bundleParser);
|
||||
BundleInfos.getBundleData(theItem);
|
||||
bool isFortbyte = false;
|
||||
|
||||
Bitmap bmp = new Bitmap(2500, 15000);
|
||||
|
|
@ -1158,7 +1070,7 @@ namespace FModel
|
|||
BundleDesign.toDrawOn.SmoothingMode = SmoothingMode.HighQuality;
|
||||
BundleDesign.myItem = theItem;
|
||||
|
||||
BundleDesign.drawBackground(bmp, bundleParser);
|
||||
BundleDesign.drawBackground(bmp, theItem);
|
||||
|
||||
if (BundleInfos.BundleData[0].rewardItemId != null && string.Equals(BundleInfos.BundleData[0].rewardItemId, "AthenaFortbyte", StringComparison.CurrentCultureIgnoreCase))
|
||||
isFortbyte = true;
|
||||
|
|
@ -1204,7 +1116,7 @@ namespace FModel
|
|||
}
|
||||
new UpdateMyConsole("", Color.Black, true).AppendToConsole();
|
||||
|
||||
BundleDesign.drawCompletionReward(bundleParser);
|
||||
BundleDesign.drawCompletionReward(theItem);
|
||||
BundleDesign.drawWatermark(bmp);
|
||||
|
||||
//cut if too long and return the bitmap
|
||||
|
|
@ -1217,7 +1129,6 @@ namespace FModel
|
|||
pictureBox1.Image = newImg;
|
||||
}
|
||||
|
||||
new UpdateMyState(theItem.DisplayName.SourceString, "Success").ChangeProcessState();
|
||||
if (autoSaveImagesToolStripMenuItem.Checked || Checking.UmWorking)
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
|
|
@ -1319,14 +1230,14 @@ namespace FModel
|
|||
//EVENTS
|
||||
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
|
||||
{
|
||||
StopWatch = new Stopwatch();
|
||||
StopWatch.Start();
|
||||
_stopWatch = new Stopwatch();
|
||||
_stopWatch.Start();
|
||||
Utilities.CreateDefaultFolders();
|
||||
RegisterInArray(e);
|
||||
}
|
||||
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
|
||||
{
|
||||
StopWatch.Stop();
|
||||
_stopWatch.Stop();
|
||||
if (e.Cancelled)
|
||||
{
|
||||
new UpdateMyState("Canceled!", "Error").ChangeProcessState();
|
||||
|
|
@ -1337,12 +1248,12 @@ namespace FModel
|
|||
}
|
||||
else
|
||||
{
|
||||
TimeSpan ts = StopWatch.Elapsed;
|
||||
TimeSpan ts = _stopWatch.Elapsed;
|
||||
string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10);
|
||||
new UpdateMyState("Time elapsed: " + elapsedTime, "Success").ChangeProcessState();
|
||||
}
|
||||
|
||||
SelectedItemsArray = null;
|
||||
_selectedItemsArray = null;
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
StopButton.Enabled = false;
|
||||
|
|
@ -1357,7 +1268,7 @@ namespace FModel
|
|||
}
|
||||
private void ListBox1_MouseDoubleClick(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (listBox1.SelectedItem != null && SelectedItemsArray == null)
|
||||
if (listBox1.SelectedItem != null && _selectedItemsArray == null)
|
||||
{
|
||||
ExtractProcess();
|
||||
}
|
||||
|
|
@ -1682,7 +1593,7 @@ namespace FModel
|
|||
|
||||
private void ExtractFolderContentsToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
_diffToExtract = new Dictionary<string, string>();
|
||||
RegisterSettings.updateModeDictionary = new Dictionary<string, string>();
|
||||
|
||||
for (int i = 0; i < PakHelper.PakAsTxt.Length; i++)
|
||||
{
|
||||
|
|
@ -1691,8 +1602,8 @@ namespace FModel
|
|||
string filename = Path.GetFileName(PakHelper.PakAsTxt[i]);
|
||||
if (filename.Contains(".uasset") || filename.Contains(".uexp") || filename.Contains(".ubulk"))
|
||||
{
|
||||
if (!_diffToExtract.ContainsKey(filename.Substring(0, filename.LastIndexOf(".", StringComparison.Ordinal))))
|
||||
_diffToExtract.Add(filename.Substring(0, filename.LastIndexOf(".", StringComparison.Ordinal)), PakHelper.PakAsTxt[i]);
|
||||
if (!RegisterSettings.updateModeDictionary.ContainsKey(filename.Substring(0, filename.LastIndexOf(".", StringComparison.Ordinal))))
|
||||
RegisterSettings.updateModeDictionary.Add(filename.Substring(0, filename.LastIndexOf(".", StringComparison.Ordinal)), PakHelper.PakAsTxt[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,11 +1,10 @@
|
|||
using FModel.Parser.Challenges;
|
||||
using FModel.Parser.Items;
|
||||
using FModel.Properties;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.IO;
|
||||
using System.Windows.Forms;
|
||||
using System;
|
||||
using Newtonsoft.Json.Linq;
|
||||
|
||||
namespace FModel
|
||||
{
|
||||
|
|
@ -14,7 +13,7 @@ namespace FModel
|
|||
public static string BundlePath { get; set; }
|
||||
public static int theY { get; set; }
|
||||
public static Graphics toDrawOn { get; set; }
|
||||
public static ItemsIdParser myItem { get; set; }
|
||||
public static JToken myItem { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// get a random color in case DisplayStyle doesn't exist in drawBackground()
|
||||
|
|
@ -36,10 +35,12 @@ namespace FModel
|
|||
/// </summary>
|
||||
/// <param name="myBitmap"></param>
|
||||
/// <param name="myBundle"></param>
|
||||
public static void drawBackground(Bitmap myBitmap, ChallengeBundleIdParser myBundle)
|
||||
public static void drawBackground(Bitmap myBitmap, JToken myBundle)
|
||||
{
|
||||
new UpdateMyState("Drawing...", "Waiting").ChangeProcessState();
|
||||
if (myBundle.DisplayStyle != null)
|
||||
|
||||
JToken displayStyle = myBundle["DisplayStyle"];
|
||||
if (displayStyle != null)
|
||||
{
|
||||
//main header
|
||||
toDrawOn.FillRectangle(new SolidBrush(BundleInfos.getSecondaryColor(myBundle)), new Rectangle(0, 0, myBitmap.Width, 281));
|
||||
|
|
@ -72,25 +73,35 @@ namespace FModel
|
|||
toDrawOn.DrawString(BundleInfos.getBundleDisplayName(myItem), new Font(Settings.Default.IconLanguage == "Japanese" ? FontUtilities.pfc.Families[2] : FontUtilities.pfc.Families[1], 115), new SolidBrush(Color.White), new Point(325, 70));
|
||||
|
||||
//image
|
||||
if (myBundle.DisplayStyle.DisplayImage != null)
|
||||
JToken displayImage = displayStyle["DisplayImage"];
|
||||
JToken largePreviewImage = myBundle["LargePreviewImage"];
|
||||
if (displayImage != null)
|
||||
{
|
||||
string textureFile = Path.GetFileName(myBundle.DisplayStyle.DisplayImage.AssetPathName).Substring(0, Path.GetFileName(myBundle.DisplayStyle.DisplayImage.AssetPathName).LastIndexOf('.'));
|
||||
Image challengeIcon;
|
||||
using (var bmpTemp = new Bitmap(JohnWick.AssetToTexture2D(textureFile)))
|
||||
JToken assetPathName = displayImage["asset_path_name"];
|
||||
if (assetPathName != null)
|
||||
{
|
||||
challengeIcon = new Bitmap(bmpTemp);
|
||||
string textureFile = Path.GetFileName(assetPathName.Value<string>()).Substring(0, Path.GetFileName(assetPathName.Value<string>()).LastIndexOf('.'));
|
||||
Image challengeIcon;
|
||||
using (var bmpTemp = new Bitmap(JohnWick.AssetToTexture2D(textureFile)))
|
||||
{
|
||||
challengeIcon = new Bitmap(bmpTemp);
|
||||
}
|
||||
toDrawOn.DrawImage(ImageUtilities.ResizeImage(challengeIcon, 282, 282), new Point(40, 0));
|
||||
}
|
||||
toDrawOn.DrawImage(ImageUtilities.ResizeImage(challengeIcon, 282, 282), new Point(40, 0));
|
||||
}
|
||||
else if (myBundle.LargePreviewImage != null)
|
||||
else if (largePreviewImage != null)
|
||||
{
|
||||
string textureFile = Path.GetFileName(myBundle.LargePreviewImage.AssetPathName).Substring(0, Path.GetFileName(myBundle.LargePreviewImage.AssetPathName).LastIndexOf('.'));
|
||||
Image challengeIcon;
|
||||
using (var bmpTemp = new Bitmap(JohnWick.AssetToTexture2D(textureFile)))
|
||||
JToken assetPathName = largePreviewImage["asset_path_name"];
|
||||
if (assetPathName != null)
|
||||
{
|
||||
challengeIcon = new Bitmap(bmpTemp);
|
||||
string textureFile = Path.GetFileName(assetPathName.Value<string>()).Substring(0, Path.GetFileName(assetPathName.Value<string>()).LastIndexOf('.'));
|
||||
Image challengeIcon;
|
||||
using (var bmpTemp = new Bitmap(JohnWick.AssetToTexture2D(textureFile)))
|
||||
{
|
||||
challengeIcon = new Bitmap(bmpTemp);
|
||||
}
|
||||
toDrawOn.DrawImage(ImageUtilities.ResizeImage(challengeIcon, 282, 282), new Point(40, 0));
|
||||
}
|
||||
toDrawOn.DrawImage(ImageUtilities.ResizeImage(challengeIcon, 282, 282), new Point(40, 0));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -139,45 +150,67 @@ namespace FModel
|
|||
/// ignoring these 2 should give us an item id, we draw this item
|
||||
/// </summary>
|
||||
/// <param name="myBundle"></param>
|
||||
public static void drawCompletionReward(ChallengeBundleIdParser myBundle)
|
||||
public static void drawCompletionReward(JToken myBundle)
|
||||
{
|
||||
if (myBundle.BundleCompletionRewards != null)
|
||||
JToken bundleCompletionRewards = myBundle["BundleCompletionRewards"];
|
||||
if (bundleCompletionRewards != null)
|
||||
{
|
||||
theY += 100;
|
||||
for (int x = 0; x < myBundle.BundleCompletionRewards.Length; x++)
|
||||
JArray bundleCompletionRewardsArray = bundleCompletionRewards.Value<JArray>();
|
||||
foreach (JToken token in bundleCompletionRewardsArray)
|
||||
{
|
||||
for (int i = 0; i < myBundle.BundleCompletionRewards[x].Rewards.Length; i++)
|
||||
string compCount = string.Empty;
|
||||
JToken completionCount = token["CompletionCount"];
|
||||
if (completionCount != null)
|
||||
{
|
||||
string compCount = myBundle.BundleCompletionRewards[x].CompletionCount.ToString();
|
||||
string itemQuantity = myBundle.BundleCompletionRewards[x].Rewards[i].Quantity.ToString();
|
||||
compCount = completionCount.Value<string>();
|
||||
}
|
||||
|
||||
if (myBundle.BundleCompletionRewards[x].Rewards[i].ItemDefinition.AssetPathName == "None")
|
||||
JToken rewards = token["Rewards"];
|
||||
if (rewards != null)
|
||||
{
|
||||
JArray rewardsArray = rewards.Value<JArray>();
|
||||
for (int i = 0; i < rewardsArray.Count; i++)
|
||||
{
|
||||
theY += 140;
|
||||
|
||||
DrawingRewards.getRewards(myBundle.BundleCompletionRewards[x].Rewards[i].TemplateId, itemQuantity);
|
||||
|
||||
drawCompletionText(compCount);
|
||||
}
|
||||
else
|
||||
{
|
||||
string rewardId = Path.GetFileName(myBundle.BundleCompletionRewards[x].Rewards[i].ItemDefinition.AssetPathName.Substring(0, myBundle.BundleCompletionRewards[x].Rewards[i].ItemDefinition.AssetPathName.LastIndexOf(".", StringComparison.Ordinal)));
|
||||
|
||||
if (rewardId != "AthenaBattlePass_WeeklyChallenge_Token" && rewardId != "AthenaBattlePass_WeeklyBundle_Token")
|
||||
string itemQuantity = string.Empty;
|
||||
JToken quantity = rewardsArray[i]["Quantity"];
|
||||
if (quantity != null)
|
||||
{
|
||||
theY += 140;
|
||||
itemQuantity = quantity.Value<string>();
|
||||
}
|
||||
|
||||
try //needed for rare cases where the icon is in /Content/icon.uasset and atm idk why but i can't extract
|
||||
JToken itemDefinition = rewardsArray[i]["ItemDefinition"];
|
||||
if (itemDefinition != null)
|
||||
{
|
||||
JToken assetPathName = itemDefinition["asset_path_name"];
|
||||
if (assetPathName != null)
|
||||
{
|
||||
if (rewardId.Contains("Fortbyte_WeeklyChallengesComplete_")) { drawForbyteReward(); }
|
||||
else { DrawingRewards.getRewards(rewardId, itemQuantity); }
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
drawUnknownReward();
|
||||
}
|
||||
if (assetPathName.Value<string>().Equals("None"))
|
||||
{
|
||||
theY += 140;
|
||||
DrawingRewards.getRewards(rewardsArray[i]["TemplateId"].Value<string>(), itemQuantity);
|
||||
drawCompletionText(compCount);
|
||||
}
|
||||
else
|
||||
{
|
||||
string rewardId = Path.GetFileName(assetPathName.Value<string>().Substring(0, assetPathName.Value<string>().LastIndexOf(".", StringComparison.Ordinal)));
|
||||
|
||||
drawCompletionText(compCount);
|
||||
if (!rewardId.Equals("AthenaBattlePass_WeeklyChallenge_Token") && !rewardId.Equals("AthenaBattlePass_WeeklyBundle_Token"))
|
||||
{
|
||||
theY += 140;
|
||||
try //needed for rare cases where the icon is in /Content/icon.uasset and atm idk why but i can't extract
|
||||
{
|
||||
if (rewardId.Contains("Fortbyte_WeeklyChallengesComplete_")) { drawForbyteReward(); }
|
||||
else { DrawingRewards.getRewards(rewardId, itemQuantity); }
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
drawUnknownReward();
|
||||
}
|
||||
drawCompletionText(compCount);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -245,7 +278,7 @@ namespace FModel
|
|||
|
||||
if (text.Contains("{Bundle_Name}"))
|
||||
{
|
||||
text = text.Replace("{Bundle_Name}", SearchResource.getTextByKey(myItem.DisplayName.Key, myItem.DisplayName.SourceString));
|
||||
text = text.Replace("{Bundle_Name}", SearchResource.getTextByKey(myItem["DisplayName"]["key"].Value<string>(), myItem["DisplayName"]["source_string"].Value<string>()));
|
||||
}
|
||||
if (text.Contains("{Date}"))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,7 +1,4 @@
|
|||
using csharp_wick;
|
||||
using FModel.Parser.Challenges;
|
||||
using FModel.Parser.Items;
|
||||
using FModel.Parser.Quests;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System;
|
||||
|
|
@ -15,26 +12,74 @@ namespace FModel
|
|||
static class BundleInfos
|
||||
{
|
||||
public static List<BundleInfoEntry> BundleData { get; set; }
|
||||
public static Color getSecondaryColor(ChallengeBundleIdParser myBundle)
|
||||
public static Color getSecondaryColor(JToken myBundle)
|
||||
{
|
||||
int Red = (int)(myBundle.DisplayStyle.SecondaryColor.R * 255);
|
||||
int Green = (int)(myBundle.DisplayStyle.SecondaryColor.G * 255);
|
||||
int Blue = (int)(myBundle.DisplayStyle.SecondaryColor.B * 255);
|
||||
int Red = 0;
|
||||
int Green = 0;
|
||||
int Blue = 0;
|
||||
|
||||
JToken displayStyle = myBundle["DisplayStyle"];
|
||||
if (displayStyle != null)
|
||||
{
|
||||
JToken secondaryColor = displayStyle["SecondaryColor"];
|
||||
if (secondaryColor != null)
|
||||
{
|
||||
JToken r = secondaryColor["r"];
|
||||
JToken g = secondaryColor["g"];
|
||||
JToken b = secondaryColor["b"];
|
||||
if (r != null && g != null && b != null)
|
||||
{
|
||||
Red = (int)(r.Value<double>() * 255);
|
||||
Green = (int)(g.Value<double>() * 255);
|
||||
Blue = (int)(b.Value<double>() * 255);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (Red + Green + Blue <= 75 || getLastFolder(BundleDesign.BundlePath) == "LTM") { return getAccentColor(myBundle); }
|
||||
else { return Color.FromArgb(255, Red, Green, Blue); }
|
||||
}
|
||||
public static Color getAccentColor(ChallengeBundleIdParser myBundle)
|
||||
public static Color getAccentColor(JToken myBundle)
|
||||
{
|
||||
int Red = (int)(myBundle.DisplayStyle.AccentColor.R * 255);
|
||||
int Green = (int)(myBundle.DisplayStyle.AccentColor.G * 255);
|
||||
int Blue = (int)(myBundle.DisplayStyle.AccentColor.B * 255);
|
||||
int Red = 0;
|
||||
int Green = 0;
|
||||
int Blue = 0;
|
||||
|
||||
JToken displayStyle = myBundle["DisplayStyle"];
|
||||
if (displayStyle != null)
|
||||
{
|
||||
JToken accentColor = displayStyle["AccentColor"];
|
||||
if (accentColor != null)
|
||||
{
|
||||
JToken r = accentColor["r"];
|
||||
JToken g = accentColor["g"];
|
||||
JToken b = accentColor["b"];
|
||||
if (r != null && g != null && b != null)
|
||||
{
|
||||
Red = (int)(r.Value<double>() * 255);
|
||||
Green = (int)(g.Value<double>() * 255);
|
||||
Blue = (int)(b.Value<double>() * 255);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return Color.FromArgb(255, Red, Green, Blue);
|
||||
}
|
||||
public static string getBundleDisplayName(ItemsIdParser theItem)
|
||||
public static string getBundleDisplayName(JToken theItem)
|
||||
{
|
||||
string text = SearchResource.getTextByKey(theItem.DisplayName.Key, theItem.DisplayName.SourceString);
|
||||
string text = string.Empty;
|
||||
|
||||
JToken displayName = theItem["DisplayName"];
|
||||
if (displayName != null)
|
||||
{
|
||||
JToken key = displayName["key"];
|
||||
JToken sourceString = displayName["source_string"];
|
||||
if (key != null && sourceString != null)
|
||||
{
|
||||
text = SearchResource.getTextByKey(key.Value<string>(), sourceString.Value<string>());
|
||||
}
|
||||
}
|
||||
|
||||
return text.ToUpper();
|
||||
}
|
||||
public static string getLastFolder(string pathToExtractedBundle)
|
||||
|
|
@ -48,14 +93,27 @@ namespace FModel
|
|||
/// foreach questfile to getQuestData()
|
||||
/// </summary>
|
||||
/// <param name="myBundle"></param>
|
||||
public static void getBundleData(ChallengeBundleIdParser myBundle)
|
||||
public static void getBundleData(JToken myBundle)
|
||||
{
|
||||
BundleData = new List<BundleInfoEntry>();
|
||||
|
||||
for (int i = 0; i < myBundle.QuestInfos.Length; i++)
|
||||
JToken questInfos = myBundle["QuestInfos"];
|
||||
if (questInfos != null)
|
||||
{
|
||||
string questName = Path.GetFileName(myBundle.QuestInfos[i].QuestDefinition.AssetPathName).Substring(0, Path.GetFileName(myBundle.QuestInfos[i].QuestDefinition.AssetPathName).LastIndexOf(".", StringComparison.Ordinal));
|
||||
getQuestData(questName);
|
||||
JArray questInfosArray = questInfos.Value<JArray>();
|
||||
foreach (JToken token in questInfosArray)
|
||||
{
|
||||
JToken questDefinition = token["QuestDefinition"];
|
||||
if (questDefinition != null)
|
||||
{
|
||||
JToken assetPathName = questDefinition["asset_path_name"];
|
||||
if (assetPathName != null)
|
||||
{
|
||||
string questName = Path.GetFileName(assetPathName.Value<string>()).Substring(0, Path.GetFileName(assetPathName.Value<string>()).LastIndexOf(".", StringComparison.Ordinal));
|
||||
getQuestData(questName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -80,83 +138,121 @@ namespace FModel
|
|||
{
|
||||
new UpdateMyState("Parsing " + questFile + "...", "Waiting").ChangeProcessState();
|
||||
|
||||
QuestParser[] questParser = QuestParser.FromJson(JToken.Parse(JohnWick.MyAsset.GetSerialized()).ToString());
|
||||
for (int x = 0; x < questParser.Length; x++)
|
||||
{
|
||||
string oldQuest = string.Empty;
|
||||
long oldCount = 0;
|
||||
dynamic AssetData = JsonConvert.DeserializeObject(JohnWick.MyAsset.GetSerialized());
|
||||
JArray AssetArray = JArray.FromObject(AssetData);
|
||||
|
||||
//fortbyte check
|
||||
bool isFortbyte = false;
|
||||
Parser.Quests.Reward assetTypeToken = null;
|
||||
if (questParser[x].Rewards != null) //this caused a null exception for some challenges (most of them in the Styles folder)
|
||||
//fortbyte check
|
||||
JToken rewards = AssetArray[0]["Rewards"];
|
||||
JToken assetTypeToken = null;
|
||||
bool isFortbyte = false;
|
||||
if (rewards != null)
|
||||
{
|
||||
JArray rewardsArray = rewards.Value<JArray>();
|
||||
assetTypeToken = rewardsArray.Where(item => item["ItemPrimaryAssetId"]["PrimaryAssetType"]["Name"].Value<string>().Equals("Token")).FirstOrDefault();
|
||||
if (assetTypeToken != null)
|
||||
{
|
||||
assetTypeToken = questParser[x].Rewards.Where(item => item.ItemPrimaryAssetId.PrimaryAssetType.Name == "Token").FirstOrDefault();
|
||||
if (assetTypeToken != null)
|
||||
isFortbyte = rewardsArray.Any(item => item["ItemPrimaryAssetId"]["PrimaryAssetName"].Value<string>().Equals("AthenaFortbyte"));
|
||||
}
|
||||
}
|
||||
|
||||
JToken objectives = AssetArray[0]["Objectives"];
|
||||
if (objectives != null)
|
||||
{
|
||||
long questCount = 0;
|
||||
string descriptionKey = string.Empty;
|
||||
string descriptionSource = string.Empty;
|
||||
|
||||
JArray objectivesArray = objectives.Value<JArray>();
|
||||
foreach (JToken token in objectivesArray)
|
||||
{
|
||||
//quest count
|
||||
JToken count = token["Count"];
|
||||
if (count != null)
|
||||
{
|
||||
isFortbyte = assetTypeToken.ItemPrimaryAssetId.PrimaryAssetName == "AthenaFortbyte";
|
||||
questCount = count.Value<long>();
|
||||
JToken objectiveCompletionCount = AssetArray[0]["ObjectiveCompletionCount"];
|
||||
if (objectiveCompletionCount != null && objectiveCompletionCount.Value<long>() > 0)
|
||||
{
|
||||
questCount = objectiveCompletionCount.Value<long>();
|
||||
}
|
||||
}
|
||||
|
||||
//quest description
|
||||
JToken description = token["Description"];
|
||||
if (description != null)
|
||||
{
|
||||
descriptionKey = description["key"].Value<string>();
|
||||
descriptionSource = description["source_string"].Value<string>();
|
||||
}
|
||||
JToken descriptionMain = AssetArray[0]["Description"];
|
||||
if (descriptionMain != null)
|
||||
{
|
||||
descriptionKey = descriptionMain["key"].Value<string>();
|
||||
descriptionSource = descriptionMain["source_string"].Value<string>();
|
||||
}
|
||||
}
|
||||
|
||||
for (int p = 0; p < questParser[x].Objectives.Length; p++)
|
||||
string questDescription = SearchResource.getTextByKey(descriptionKey, descriptionSource);
|
||||
if (string.IsNullOrEmpty(questDescription)) { questDescription = " "; }
|
||||
|
||||
if (rewards != null && !isFortbyte)
|
||||
{
|
||||
long newCount = questParser[x].Objectives[p].Count;
|
||||
if (questParser[x].ObjectiveCompletionCount > 0)
|
||||
newCount = questParser[x].ObjectiveCompletionCount;
|
||||
|
||||
// In the game "Description" has priority over "Objectives.Description"
|
||||
string descriptionKey = questParser[x].Objectives[p].Description.Key;
|
||||
string descriptionSource = questParser[x].Objectives[p].Description.SourceString;
|
||||
if (questParser[x].Description != null)
|
||||
//quest rewards
|
||||
JArray rewardsArray = rewards.Value<JArray>();
|
||||
try
|
||||
{
|
||||
descriptionKey = questParser[x].Description.Key;
|
||||
descriptionSource = questParser[x].Description.SourceString;
|
||||
string rewardId = rewardsArray.Where(item => !item["ItemPrimaryAssetId"]["PrimaryAssetType"]["Name"].Value<string>().Equals("Quest") && !item["ItemPrimaryAssetId"]["PrimaryAssetType"]["Name"].Value<string>().Equals("Token")).FirstOrDefault()["ItemPrimaryAssetId"]["PrimaryAssetName"].Value<string>();
|
||||
string rewardQuantity = rewardsArray.Where(item => !item["ItemPrimaryAssetId"]["PrimaryAssetType"]["Name"].Value<string>().Equals("Quest") && !item["ItemPrimaryAssetId"]["PrimaryAssetType"]["Name"].Value<string>().Equals("Token")).FirstOrDefault()["Quantity"].Value<string>();
|
||||
|
||||
BundleInfoEntry currentData = new BundleInfoEntry(questDescription, questCount, rewardId, rewardQuantity);
|
||||
bool isAlreadyAdded = BundleData.Any(item => item.questDescr.Equals(currentData.questDescr, StringComparison.InvariantCultureIgnoreCase) && item.questCount == currentData.questCount);
|
||||
if (!isAlreadyAdded) { BundleData.Add(currentData); }
|
||||
}
|
||||
|
||||
string newQuest = SearchResource.getTextByKey(descriptionKey, descriptionSource);
|
||||
if (string.IsNullOrEmpty(newQuest)) { newQuest = " "; }
|
||||
if (newQuest != oldQuest && newCount != oldCount)
|
||||
catch (NullReferenceException)
|
||||
{
|
||||
if (questParser[x].Rewards != null && !isFortbyte)
|
||||
JToken hiddenRewards = AssetArray[0]["HiddenRewards"];
|
||||
if (hiddenRewards != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
string rewardId = questParser[x].Rewards.Where(item => item.ItemPrimaryAssetId.PrimaryAssetType.Name != "Quest").Where(item => item.ItemPrimaryAssetId.PrimaryAssetType.Name != "Token").FirstOrDefault().ItemPrimaryAssetId.PrimaryAssetName;
|
||||
string rewardQuantity = questParser[x].Rewards.Where(item => item.ItemPrimaryAssetId.PrimaryAssetType.Name != "Quest").Where(item => item.ItemPrimaryAssetId.PrimaryAssetType.Name != "Token").FirstOrDefault().Quantity.ToString();
|
||||
string rewardId = hiddenRewards[0]["TemplateId"].Value<string>();
|
||||
string rewardQuantity = hiddenRewards[0]["Quantity"].Value<string>();
|
||||
|
||||
BundleData.Add(new BundleInfoEntry(newQuest, newCount, rewardId, rewardQuantity));
|
||||
}
|
||||
catch (NullReferenceException)
|
||||
{
|
||||
if (questParser[x].HiddenRewards != null)
|
||||
{
|
||||
string rewardId = questParser[x].HiddenRewards.FirstOrDefault().TemplateId;
|
||||
string rewardQuantity = questParser[x].HiddenRewards.FirstOrDefault().Quantity.ToString();
|
||||
|
||||
BundleData.Add(new BundleInfoEntry(newQuest, newCount, rewardId, rewardQuantity));
|
||||
}
|
||||
}
|
||||
|
||||
//get stage
|
||||
for (int k = 0; k < questParser[x].Rewards.Length; k++)
|
||||
{
|
||||
string qAssetType = questParser[x].Rewards[k].ItemPrimaryAssetId.PrimaryAssetType.Name;
|
||||
string qAssetName = questParser[x].Rewards[k].ItemPrimaryAssetId.PrimaryAssetName;
|
||||
|
||||
if (qAssetType == "Quest")
|
||||
{
|
||||
getQuestData(qAssetName);
|
||||
}
|
||||
}
|
||||
BundleInfoEntry currentData = new BundleInfoEntry(questDescription, questCount, rewardId, rewardQuantity);
|
||||
bool isAlreadyAdded = BundleData.Any(item => item.questDescr.Equals(currentData.questDescr, StringComparison.InvariantCultureIgnoreCase) && item.questCount == currentData.questCount);
|
||||
if (!isAlreadyAdded) { BundleData.Add(currentData); }
|
||||
}
|
||||
else if (isFortbyte && assetTypeToken != null)
|
||||
BundleData.Add(new BundleInfoEntry(newQuest, newCount, assetTypeToken.ItemPrimaryAssetId.PrimaryAssetName, questParser[x].Weight > 0 ? questParser[x].Weight.ToString() : "01"));
|
||||
else
|
||||
BundleData.Add(new BundleInfoEntry(newQuest, newCount, "", ""));
|
||||
|
||||
oldQuest = newQuest;
|
||||
oldCount = newCount;
|
||||
}
|
||||
|
||||
//quest stage
|
||||
foreach (JToken token in rewardsArray)
|
||||
{
|
||||
string qAssetType = token["ItemPrimaryAssetId"]["PrimaryAssetType"]["Name"].Value<string>();
|
||||
string qAssetName = token["ItemPrimaryAssetId"]["PrimaryAssetName"].Value<string>();
|
||||
|
||||
if (qAssetType == "Quest")
|
||||
{
|
||||
getQuestData(qAssetName);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (isFortbyte && assetTypeToken != null)
|
||||
{
|
||||
//thank you Quest_BR_S9_Fortbyte_04
|
||||
JToken weight = AssetArray[0]["Weight"];
|
||||
JToken weightToUse = null;
|
||||
if (weight != null)
|
||||
{
|
||||
weightToUse = weight;
|
||||
}
|
||||
|
||||
BundleInfoEntry currentData = new BundleInfoEntry(questDescription, questCount, assetTypeToken["ItemPrimaryAssetId"]["PrimaryAssetName"].Value<string>(), weightToUse == null ? "01" : weightToUse.Value<string>());
|
||||
bool isAlreadyAdded = BundleData.Any(item => item.questDescr.Equals(currentData.questDescr, StringComparison.InvariantCultureIgnoreCase) && item.questCount == currentData.questCount);
|
||||
if (!isAlreadyAdded) { BundleData.Add(currentData); }
|
||||
}
|
||||
else
|
||||
{
|
||||
BundleInfoEntry currentData = new BundleInfoEntry(questDescription, questCount, "", "");
|
||||
bool isAlreadyAdded = BundleData.Any(item => item.questDescr.Equals(currentData.questDescr, StringComparison.InvariantCultureIgnoreCase) && item.questCount == currentData.questCount);
|
||||
if (!isAlreadyAdded) { BundleData.Add(currentData); }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -170,8 +266,7 @@ namespace FModel
|
|||
}
|
||||
catch (KeyNotFoundException)
|
||||
{
|
||||
//do not stop when questFile doesn't exist
|
||||
//Console.WriteLine("Can't extract " + questFile);
|
||||
new UpdateMyConsole("[FModel] Can't extract " + questFile, Color.Red, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
using csharp_wick;
|
||||
using FModel.Parser.Items;
|
||||
using FModel.Properties;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
|
|
@ -66,13 +65,12 @@ namespace FModel
|
|||
{
|
||||
if (JohnWick.MyAsset.GetSerialized() != null)
|
||||
{
|
||||
var itemId = ItemsIdParser.FromJson(JToken.Parse(JohnWick.MyAsset.GetSerialized()).ToString());
|
||||
for (int i = 0; i < itemId.Length; i++)
|
||||
{
|
||||
ItemIcon.SearchAthIteDefIcon(itemId[i]);
|
||||
dynamic AssetData = JsonConvert.DeserializeObject(JohnWick.MyAsset.GetSerialized());
|
||||
JArray AssetArray = JArray.FromObject(AssetData);
|
||||
|
||||
drawIcon(item);
|
||||
}
|
||||
ItemIcon.SearchAthIteDefIcon(AssetArray[0]);
|
||||
|
||||
drawIcon(item);
|
||||
}
|
||||
}
|
||||
catch (JsonSerializationException)
|
||||
|
|
@ -104,30 +102,34 @@ namespace FModel
|
|||
{
|
||||
if (JohnWick.MyAsset.GetSerialized() != null)
|
||||
{
|
||||
string parsedJson = JToken.Parse(JohnWick.MyAsset.GetSerialized()).ToString().TrimStart('[').TrimEnd(']');
|
||||
JObject jo = JObject.Parse(parsedJson);
|
||||
foreach (JToken token in jo.FindTokens(bannerName))
|
||||
dynamic AssetData = JsonConvert.DeserializeObject(JohnWick.MyAsset.GetSerialized());
|
||||
JArray AssetArray = JArray.FromObject(AssetData);
|
||||
|
||||
JToken bannerToken = ((JObject)AssetArray[0]).GetValue(bannerName, StringComparison.InvariantCultureIgnoreCase);
|
||||
if (bannerToken != null)
|
||||
{
|
||||
var bannerId = Parser.Banners.BannersParser.FromJson(token.ToString());
|
||||
|
||||
if (bannerId.LargeImage != null)
|
||||
JToken largeImage = bannerToken["LargeImage"];
|
||||
JToken smallImage = bannerToken["SmallImage"];
|
||||
if (largeImage != null)
|
||||
{
|
||||
string textureFile = Path.GetFileName(bannerId.LargeImage.AssetPathName)
|
||||
?.Substring(0,
|
||||
Path.GetFileName(bannerId.LargeImage.AssetPathName).LastIndexOf('.'));
|
||||
|
||||
ItemIcon.ItemIconPath = JohnWick.AssetToTexture2D(textureFile);
|
||||
JToken assetPathName = largeImage["asset_path_name"];
|
||||
if (assetPathName != null)
|
||||
{
|
||||
string textureFile = Path.GetFileName(assetPathName.Value<string>()).Substring(0, Path.GetFileName(assetPathName.Value<string>()).LastIndexOf('.'));
|
||||
ItemIcon.ItemIconPath = JohnWick.AssetToTexture2D(textureFile);
|
||||
drawIcon(bannerName);
|
||||
}
|
||||
}
|
||||
else if (bannerId.SmallImage != null)
|
||||
else if (smallImage != null)
|
||||
{
|
||||
string textureFile = Path.GetFileName(bannerId.SmallImage.AssetPathName)
|
||||
?.Substring(0,
|
||||
Path.GetFileName(bannerId.SmallImage.AssetPathName).LastIndexOf('.'));
|
||||
|
||||
ItemIcon.ItemIconPath = JohnWick.AssetToTexture2D(textureFile);
|
||||
JToken assetPathName = smallImage["asset_path_name"];
|
||||
if (assetPathName != null)
|
||||
{
|
||||
string textureFile = Path.GetFileName(assetPathName.Value<string>()).Substring(0, Path.GetFileName(assetPathName.Value<string>()).LastIndexOf('.'));
|
||||
ItemIcon.ItemIconPath = JohnWick.AssetToTexture2D(textureFile);
|
||||
drawIcon(bannerName);
|
||||
}
|
||||
}
|
||||
|
||||
drawIcon(bannerName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,13 +1,10 @@
|
|||
using csharp_wick;
|
||||
using FModel.Parser.Items;
|
||||
using FModel.Properties;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.IO;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace FModel
|
||||
{
|
||||
|
|
@ -19,15 +16,17 @@ namespace FModel
|
|||
private static string CosmeticId { get; set; }
|
||||
private static string MaxStackSize { get; set; }
|
||||
private static string ItemAction { get; set; }
|
||||
private static string WeaponDataTable { get; set; }
|
||||
private static string WeaponRowName { get; set; }
|
||||
private static string CosmeticUff { get; set; }
|
||||
private static string HeroType { get; set; }
|
||||
private static string DefenderType { get; set; }
|
||||
private static string MinToMax { get; set; }
|
||||
private static JObject cSetsjo { get; set; }
|
||||
private static JObject weaponStats { get; set; }
|
||||
private static JArray cosmeticsSetsArray { get; set; }
|
||||
private static JArray weaponsStatsArray { get; set; }
|
||||
private static string weaponStatsFilename { get; set; }
|
||||
|
||||
public static void DrawTexts(ItemsIdParser theItem, Graphics myGraphic, string mode)
|
||||
public static void DrawTexts(JToken theItem, Graphics myGraphic, string mode)
|
||||
{
|
||||
using (myGraphic)
|
||||
{
|
||||
|
|
@ -63,20 +62,21 @@ namespace FModel
|
|||
break;
|
||||
}
|
||||
|
||||
if (theItem.ExportType == "AthenaItemWrapDefinition" && Checking.WasFeatured && ItemIcon.ItemIconPath.Contains("WeaponRenders"))
|
||||
JToken exportToken = theItem["export_type"];
|
||||
if (exportToken != null && exportToken.Value<string>().Equals("AthenaItemWrapDefinition") && Checking.WasFeatured && ItemIcon.ItemIconPath.Contains("WeaponRenders"))
|
||||
{
|
||||
DrawAdditionalImage(theItem, myGraphic);
|
||||
}
|
||||
if (theItem.AmmoData != null && theItem.AmmoData.AssetPathName.Contains("Ammo")) //TO AVOID TRIGGERING CONSUMABLES, NAME SHOULD CONTAIN "AMMO"
|
||||
|
||||
JToken ammoToken = theItem["AmmoData"];
|
||||
if (ammoToken != null)
|
||||
{
|
||||
ItemIcon.GetAmmoData(theItem.AmmoData.AssetPathName, myGraphic);
|
||||
try
|
||||
JToken assetPathName = ammoToken["asset_path_name"];
|
||||
if (assetPathName != null && assetPathName.Value<string>().Contains("Ammo")) //TO AVOID TRIGGERING CONSUMABLES, NAME SHOULD CONTAIN "AMMO"
|
||||
{
|
||||
DrawWeaponStat(WeaponRowName, myGraphic);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
//stw weapons
|
||||
ItemIcon.GetAmmoData(assetPathName.Value<string>(), myGraphic);
|
||||
|
||||
DrawWeaponStat(WeaponDataTable, WeaponRowName, myGraphic);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -88,7 +88,7 @@ namespace FModel
|
|||
/// todo: find a better way to handle errors
|
||||
/// </summary>
|
||||
/// <param name="theItem"></param>
|
||||
private static void SetTexts(ItemsIdParser theItem)
|
||||
private static void SetTexts(JToken theItem)
|
||||
{
|
||||
CosmeticSource = "";
|
||||
CosmeticSet = "";
|
||||
|
|
@ -96,14 +96,19 @@ namespace FModel
|
|||
CosmeticId = "";
|
||||
MaxStackSize = "";
|
||||
ItemAction = "";
|
||||
WeaponDataTable = "";
|
||||
WeaponRowName = "";
|
||||
CosmeticUff = "";
|
||||
HeroType = "";
|
||||
DefenderType = "";
|
||||
MinToMax = "";
|
||||
|
||||
try
|
||||
JToken shortDescription = theItem["ShortDescription"];
|
||||
if (shortDescription != null)
|
||||
{
|
||||
JToken key = shortDescription["key"];
|
||||
JToken sourceString = shortDescription["source_string"];
|
||||
|
||||
switch (Settings.Default.IconLanguage)
|
||||
{
|
||||
case "French":
|
||||
|
|
@ -120,99 +125,107 @@ namespace FModel
|
|||
case "Turkish":
|
||||
case "Chinese (S)":
|
||||
case "Traditional Chinese":
|
||||
ShortDescription = theItem.ShortDescription != null ? SearchResource.getTextByKey(theItem.ShortDescription.Key, theItem.ShortDescription.SourceString) : "";
|
||||
if (key != null && sourceString != null)
|
||||
{
|
||||
ShortDescription = SearchResource.getTextByKey(key.Value<string>(), sourceString.Value<string>());
|
||||
}
|
||||
break;
|
||||
default:
|
||||
ShortDescription = theItem.ShortDescription != null ? theItem.ShortDescription.SourceString : "";
|
||||
if (sourceString != null)
|
||||
{
|
||||
ShortDescription = sourceString.Value<string>();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
|
||||
JToken gameplayTags = theItem["GameplayTags"];
|
||||
if (gameplayTags != null)
|
||||
{
|
||||
//avoid generator to stop when a string isn't found
|
||||
}
|
||||
try
|
||||
{
|
||||
CosmeticSet = theItem.GameplayTags.GameplayTagsGameplayTags[Array.FindIndex(theItem.GameplayTags.GameplayTagsGameplayTags, x => x.StartsWith("Cosmetics.Set."))];
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
//avoid generator to stop when a string isn't found
|
||||
}
|
||||
try
|
||||
{
|
||||
CosmeticSource = theItem.GameplayTags.GameplayTagsGameplayTags[Array.FindIndex(theItem.GameplayTags.GameplayTagsGameplayTags, x => x.StartsWith("Cosmetics.Source."))].Substring(17);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
//avoid generator to stop when a string isn't found
|
||||
}
|
||||
try
|
||||
{
|
||||
CosmeticId = theItem.CosmeticItem;
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
//avoid generator to stop when a string isn't found
|
||||
}
|
||||
try
|
||||
{
|
||||
MaxStackSize = "Max Stack Size: " + theItem.MaxStackSize;
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
//avoid generator to stop when a string isn't found
|
||||
}
|
||||
try
|
||||
{
|
||||
ItemAction = theItem.GameplayTags.GameplayTagsGameplayTags[Array.FindIndex(theItem.GameplayTags.GameplayTagsGameplayTags, x => x.StartsWith("Athena.ItemAction."))].Substring(18);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
//avoid generator to stop when a string isn't found
|
||||
}
|
||||
try
|
||||
{
|
||||
if (theItem.WeaponStatHandle != null && theItem.WeaponStatHandle.RowName != "Harvest_Pickaxe_Athena_C_T01" && theItem.WeaponStatHandle.RowName != "Edged_Sword_Athena_C_T01")
|
||||
JToken gameplayTagsTwo = gameplayTags["gameplay_tags"];
|
||||
if (gameplayTagsTwo != null)
|
||||
{
|
||||
WeaponRowName = theItem.WeaponStatHandle.RowName;
|
||||
JArray gameplayTagsArray = gameplayTagsTwo.Value<JArray>();
|
||||
|
||||
JToken cosmeticSet = gameplayTagsArray.Children<JToken>().FirstOrDefault(x => x.ToString().StartsWith("Cosmetics.Set."));
|
||||
if (cosmeticSet != null)
|
||||
{
|
||||
CosmeticSet = gameplayTagsArray[gameplayTagsArray.IndexOf(cosmeticSet)].Value<string>();
|
||||
}
|
||||
|
||||
JToken cosmeticSource = gameplayTagsArray.Children<JToken>().FirstOrDefault(x => x.ToString().StartsWith("Cosmetics.Source."));
|
||||
if (cosmeticSource != null)
|
||||
{
|
||||
CosmeticSource = cosmeticSource.Value<string>().Substring(17);
|
||||
}
|
||||
|
||||
JToken athenaItemAction = gameplayTagsArray.Children<JToken>().FirstOrDefault(x => x.ToString().StartsWith("Athena.ItemAction."));
|
||||
if (athenaItemAction != null)
|
||||
{
|
||||
ItemAction = athenaItemAction.Value<string>().Substring(18);
|
||||
}
|
||||
|
||||
JToken userFacingFlags = gameplayTagsArray.Children<JToken>().FirstOrDefault(x => x.ToString().StartsWith("Cosmetics.UserFacingFlags."));
|
||||
if (userFacingFlags != null)
|
||||
{
|
||||
CosmeticUff = userFacingFlags.Value<string>();
|
||||
}
|
||||
|
||||
JToken defenderType = gameplayTagsArray.Children<JToken>().FirstOrDefault(x => x.ToString().StartsWith("NPC.CharacterType.Survivor.Defender."));
|
||||
if (defenderType != null)
|
||||
{
|
||||
DefenderType = defenderType.Value<string>().Substring(36);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
|
||||
JToken cosmeticId = theItem["cosmetic_item"];
|
||||
if (cosmeticId != null)
|
||||
{
|
||||
//avoid generator to stop when a string isn't found
|
||||
CosmeticId = cosmeticId.Value<string>();
|
||||
}
|
||||
try
|
||||
|
||||
JToken maxStackSize = theItem["MaxStackSize"];
|
||||
if (maxStackSize != null)
|
||||
{
|
||||
CosmeticUff = theItem.GameplayTags.GameplayTagsGameplayTags[Array.FindIndex(theItem.GameplayTags.GameplayTagsGameplayTags, x => x.StartsWith("Cosmetics.UserFacingFlags."))];
|
||||
MaxStackSize = "Max Stack Size: " + maxStackSize.Value<string>();
|
||||
}
|
||||
catch (Exception)
|
||||
|
||||
JToken weaponStatHandle = theItem["WeaponStatHandle"];
|
||||
if (weaponStatHandle != null)
|
||||
{
|
||||
//avoid generator to stop when a string isn't found
|
||||
JToken dataTable = weaponStatHandle["DataTable"];
|
||||
if (dataTable != null)
|
||||
{
|
||||
WeaponDataTable = dataTable.Value<string>();
|
||||
}
|
||||
|
||||
JToken rowName = weaponStatHandle["RowName"];
|
||||
if (rowName != null)
|
||||
{
|
||||
WeaponRowName = rowName.Value<string>();
|
||||
}
|
||||
}
|
||||
try
|
||||
|
||||
JToken attributeInitKey = theItem["AttributeInitKey"];
|
||||
if (attributeInitKey != null)
|
||||
{
|
||||
HeroType = theItem.AttributeInitKey != null ? theItem.AttributeInitKey.AttributeInitCategory : "";
|
||||
JToken attributeInitCategory = attributeInitKey["AttributeInitCategory"];
|
||||
if (attributeInitCategory != null)
|
||||
{
|
||||
HeroType = attributeInitCategory.Value<string>();
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
|
||||
JToken minLevel = theItem["MinLevel"];
|
||||
JToken maxLevel = theItem["MaxLevel"];
|
||||
if (maxLevel != null)
|
||||
{
|
||||
//avoid generator to stop when a string isn't found
|
||||
}
|
||||
try
|
||||
{
|
||||
DefenderType = theItem.GameplayTags.GameplayTagsGameplayTags[Array.FindIndex(theItem.GameplayTags.GameplayTagsGameplayTags, x => x.StartsWith("NPC.CharacterType.Survivor.Defender."))].Substring(36);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
//avoid generator to stop when a string isn't found
|
||||
}
|
||||
try
|
||||
{
|
||||
MinToMax = " " + theItem.MinLevel + " to " + theItem.MaxLevel;
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
//avoid generator to stop when a string isn't found
|
||||
MinToMax = " 0 to " + maxLevel.Value<string>();
|
||||
if (minLevel != null)
|
||||
{
|
||||
MinToMax = " " + minLevel.Value<string>() + " to " + maxLevel.Value<string>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -222,7 +235,7 @@ namespace FModel
|
|||
/// </summary>
|
||||
/// <param name="theItem"></param>
|
||||
/// <param name="myGraphic"></param>
|
||||
private static void DrawCosmeticUff(ItemsIdParser theItem, Graphics myGraphic)
|
||||
private static void DrawCosmeticUff(JToken theItem, Graphics myGraphic)
|
||||
{
|
||||
Image imageLogo = null;
|
||||
Point pointCoords = new Point(6, 6);
|
||||
|
|
@ -231,9 +244,9 @@ namespace FModel
|
|||
{
|
||||
if (CosmeticUff.Contains("Animated"))
|
||||
imageLogo = Resources.Animated64;
|
||||
else if (CosmeticUff.Contains("HasUpgradeQuests") && theItem.ExportType != "AthenaPetCarrierItemDefinition")
|
||||
else if (CosmeticUff.Contains("HasUpgradeQuests") && !theItem["export_type"].Value<string>().Equals("AthenaPetCarrierItemDefinition"))
|
||||
imageLogo = Resources.Quests64;
|
||||
else if (CosmeticUff.Contains("HasUpgradeQuests") && theItem.ExportType == "AthenaPetCarrierItemDefinition")
|
||||
else if (CosmeticUff.Contains("HasUpgradeQuests") && theItem["export_type"].Value<string>().Equals("AthenaPetCarrierItemDefinition"))
|
||||
imageLogo = Resources.Pets64;
|
||||
else if (CosmeticUff.Contains("HasVariants"))
|
||||
imageLogo = Resources.Variant64;
|
||||
|
|
@ -255,28 +268,34 @@ namespace FModel
|
|||
/// </summary>
|
||||
/// <param name="theItem"></param>
|
||||
/// <param name="myGraphic"></param>
|
||||
private static void DrawDisplayName(ItemsIdParser theItem, Graphics myGraphic)
|
||||
private static void DrawDisplayName(JToken theItem, Graphics myGraphic)
|
||||
{
|
||||
if (theItem.DisplayName != null)
|
||||
JToken displayName = theItem["DisplayName"];
|
||||
if (displayName != null)
|
||||
{
|
||||
//myGraphic.DrawRectangle(new Pen(new SolidBrush(Color.Red)), new Rectangle(5, 405, 512, 55));
|
||||
JToken key = displayName["key"];
|
||||
JToken sourceString = displayName["source_string"];
|
||||
if (key != null && sourceString != null)
|
||||
{
|
||||
//myGraphic.DrawRectangle(new Pen(new SolidBrush(Color.Red)), new Rectangle(5, 405, 512, 55));
|
||||
|
||||
string text = SearchResource.getTextByKey(theItem.DisplayName.Key, theItem.DisplayName.SourceString);
|
||||
string text = SearchResource.getTextByKey(key.Value<string>(), sourceString.Value<string>());
|
||||
|
||||
Font goodFont = FontUtilities.FindFont(
|
||||
myGraphic,
|
||||
text,
|
||||
Settings.Default.rarityNew ? new Rectangle(5, 405, 512, 55).Size : new Rectangle(5, 395, 512, 49).Size,
|
||||
new Font(Settings.Default.IconLanguage == "Japanese" ? FontUtilities.pfc.Families[2] : FontUtilities.pfc.Families[0], 35)
|
||||
);
|
||||
Font goodFont = FontUtilities.FindFont(
|
||||
myGraphic,
|
||||
text,
|
||||
Settings.Default.rarityNew ? new Rectangle(5, 405, 512, 55).Size : new Rectangle(5, 395, 512, 49).Size,
|
||||
new Font(Settings.Default.IconLanguage == "Japanese" ? FontUtilities.pfc.Families[2] : FontUtilities.pfc.Families[0], 35)
|
||||
);
|
||||
|
||||
myGraphic.DrawString(
|
||||
text,
|
||||
goodFont,
|
||||
new SolidBrush(Color.White),
|
||||
Settings.Default.rarityNew ? new Point(522, 405) : new Point(522 / 2, 395),
|
||||
Settings.Default.rarityNew ? FontUtilities.rightString : FontUtilities.centeredString
|
||||
);
|
||||
myGraphic.DrawString(
|
||||
text,
|
||||
goodFont,
|
||||
new SolidBrush(Color.White),
|
||||
Settings.Default.rarityNew ? new Point(522, 405) : new Point(522 / 2, 395),
|
||||
Settings.Default.rarityNew ? FontUtilities.rightString : FontUtilities.centeredString
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -285,35 +304,42 @@ namespace FModel
|
|||
/// </summary>
|
||||
/// <param name="theItem"></param>
|
||||
/// <param name="myGraphic"></param>
|
||||
private static void DrawDescription(ItemsIdParser theItem, Graphics myGraphic)
|
||||
private static void DrawDescription(JToken theItem, Graphics myGraphic)
|
||||
{
|
||||
if (theItem.Description != null)
|
||||
JToken description = theItem["Description"];
|
||||
if (description != null)
|
||||
{
|
||||
//myGraphic.DrawRectangle(new Pen(new SolidBrush(Color.Pink)), new Rectangle(5, 455, 512, 42));
|
||||
|
||||
string text = SearchResource.getTextByKey(theItem.Description.Key, theItem.Description.SourceString);
|
||||
if (!string.IsNullOrEmpty(CosmeticSet))
|
||||
JToken key = description["key"];
|
||||
JToken sourceString = description["source_string"];
|
||||
if (key != null && sourceString != null)
|
||||
{
|
||||
string theSet = DrawCosmeticSet(CosmeticSet);
|
||||
if (!string.IsNullOrEmpty(theSet))
|
||||
{
|
||||
text += theSet;
|
||||
}
|
||||
}
|
||||
//myGraphic.DrawRectangle(new Pen(new SolidBrush(Color.Pink)), new Rectangle(5, 455, 512, 42));
|
||||
|
||||
myGraphic.DrawString(
|
||||
text,
|
||||
new Font("Arial", Settings.Default.rarityNew ? 9 : 10),
|
||||
new SolidBrush(Color.White),
|
||||
new RectangleF(5, Settings.Default.rarityNew ? 455 : 441, 512, Settings.Default.rarityNew ? 42 : 49),
|
||||
Settings.Default.rarityNew ? FontUtilities.rightString : FontUtilities.centeredStringLine
|
||||
);
|
||||
string text = SearchResource.getTextByKey(key.Value<string>(), sourceString.Value<string>());
|
||||
|
||||
if (!string.IsNullOrEmpty(CosmeticSet))
|
||||
{
|
||||
string theSet = DrawCosmeticSet(CosmeticSet);
|
||||
if (!string.IsNullOrEmpty(theSet))
|
||||
{
|
||||
text += theSet;
|
||||
}
|
||||
}
|
||||
|
||||
myGraphic.DrawString(
|
||||
text,
|
||||
new Font("Arial", Settings.Default.rarityNew ? 9 : 10),
|
||||
new SolidBrush(Color.White),
|
||||
new RectangleF(5, Settings.Default.rarityNew ? 455 : 441, 512, Settings.Default.rarityNew ? 42 : 49),
|
||||
Settings.Default.rarityNew ? FontUtilities.rightString : FontUtilities.centeredStringLine
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static string DrawCosmeticSet(string setName)
|
||||
{
|
||||
if (cSetsjo == null)
|
||||
if (cosmeticsSetsArray == null)
|
||||
{
|
||||
string extractedCosmeticsSetsPath = JohnWick.ExtractAsset(ThePak.AllpaksDictionary["CosmeticSets"], "CosmeticSets");
|
||||
|
||||
|
|
@ -326,8 +352,8 @@ namespace FModel
|
|||
{
|
||||
if (JohnWick.MyAsset.GetSerialized() != null)
|
||||
{
|
||||
string parsedJson = JToken.Parse(JohnWick.MyAsset.GetSerialized()).ToString().TrimStart('[').TrimEnd(']');
|
||||
cSetsjo = JObject.Parse(parsedJson);
|
||||
dynamic AssetData = JsonConvert.DeserializeObject(JohnWick.MyAsset.GetSerialized());
|
||||
cosmeticsSetsArray = JArray.FromObject(AssetData);
|
||||
return searchSetName(setName);
|
||||
}
|
||||
else { return ""; }
|
||||
|
|
@ -346,37 +372,37 @@ namespace FModel
|
|||
}
|
||||
private static string searchSetName(string setName)
|
||||
{
|
||||
string toReturn = string.Empty;
|
||||
|
||||
JToken setToken = cSetsjo.FindTokens(setName).FirstOrDefault();
|
||||
Parser.CosmeticSetsParser.CosmeticSetsParser cSetsParsed = Parser.CosmeticSetsParser.CosmeticSetsParser.FromJson(setToken.ToString());
|
||||
|
||||
switch (Settings.Default.IconLanguage)
|
||||
JToken setToken = cosmeticsSetsArray[0][setName];
|
||||
if (setToken != null)
|
||||
{
|
||||
case "French":
|
||||
case "German":
|
||||
case "Italian":
|
||||
case "Spanish":
|
||||
case "Spanish (LA)":
|
||||
case "Arabic":
|
||||
case "Japanese":
|
||||
case "Korean":
|
||||
case "Polish":
|
||||
case "Portuguese (Brazil)":
|
||||
case "Russian":
|
||||
case "Turkish":
|
||||
case "Chinese (S)":
|
||||
case "Traditional Chinese":
|
||||
string translatedName = SearchResource.getTextByKey(cSetsParsed.DisplayName.Key, cSetsParsed.DisplayName.SourceString, cSetsParsed.DisplayName.Namespace);
|
||||
string toReturn = string.Empty;
|
||||
switch (Settings.Default.IconLanguage)
|
||||
{
|
||||
case "French":
|
||||
case "German":
|
||||
case "Italian":
|
||||
case "Spanish":
|
||||
case "Spanish (LA)":
|
||||
case "Arabic":
|
||||
case "Japanese":
|
||||
case "Korean":
|
||||
case "Polish":
|
||||
case "Portuguese (Brazil)":
|
||||
case "Russian":
|
||||
case "Turkish":
|
||||
case "Chinese (S)":
|
||||
case "Traditional Chinese":
|
||||
string translatedName = SearchResource.getTextByKey(setToken["DisplayName"]["key"].Value<string>(), setToken["DisplayName"]["source_string"].Value<string>(), setToken["DisplayName"]["namespace"].Value<string>());
|
||||
|
||||
toReturn = string.Format(SearchResource.getTextByKey("CosmeticItemDescription_SetMembership_NotRich", cSetsParsed.DisplayName.SourceString, "Fort.Cosmetics"), translatedName);
|
||||
break;
|
||||
default:
|
||||
toReturn = string.Format("\nPart of the {0} set.", cSetsParsed.DisplayName.SourceString);
|
||||
break;
|
||||
toReturn = string.Format(SearchResource.getTextByKey("CosmeticItemDescription_SetMembership_NotRich", setToken["DisplayName"]["source_string"].Value<string>(), "Fort.Cosmetics"), translatedName);
|
||||
break;
|
||||
default:
|
||||
toReturn = string.Format("\nPart of the {0} set.", setToken["DisplayName"]["source_string"].Value<string>());
|
||||
break;
|
||||
}
|
||||
return toReturn;
|
||||
}
|
||||
|
||||
return toReturn;
|
||||
else { return ""; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -405,20 +431,27 @@ namespace FModel
|
|||
/// </summary>
|
||||
/// <param name="theItem"></param>
|
||||
/// <param name="myGraphic"></param>
|
||||
private static void DrawAdditionalImage(ItemsIdParser theItem, Graphics myGraphic)
|
||||
private static void DrawAdditionalImage(JToken theItem, Graphics myGraphic)
|
||||
{
|
||||
string wrapAddImg = theItem.LargePreviewImage.AssetPathName.Substring(theItem.LargePreviewImage.AssetPathName.LastIndexOf(".", StringComparison.Ordinal) + 1);
|
||||
|
||||
ItemIcon.ItemIconPath = JohnWick.AssetToTexture2D(wrapAddImg);
|
||||
|
||||
if (File.Exists(ItemIcon.ItemIconPath))
|
||||
JToken largePreviewImage = theItem["LargePreviewImage"];
|
||||
if (largePreviewImage != null)
|
||||
{
|
||||
Image itemIcon;
|
||||
using (var bmpTemp = new Bitmap(ItemIcon.ItemIconPath))
|
||||
JToken assetPathName = largePreviewImage["asset_path_name"];
|
||||
if (assetPathName != null)
|
||||
{
|
||||
itemIcon = new Bitmap(bmpTemp);
|
||||
string textureFile = Path.GetFileName(assetPathName.Value<string>()).Substring(0, Path.GetFileName(assetPathName.Value<string>()).LastIndexOf('.') + 1);
|
||||
|
||||
ItemIcon.ItemIconPath = JohnWick.AssetToTexture2D(textureFile);
|
||||
if (File.Exists(ItemIcon.ItemIconPath))
|
||||
{
|
||||
Image itemIcon;
|
||||
using (var bmpTemp = new Bitmap(ItemIcon.ItemIconPath))
|
||||
{
|
||||
itemIcon = new Bitmap(bmpTemp);
|
||||
}
|
||||
myGraphic.DrawImage(ImageUtilities.ResizeImage(itemIcon, 122, 122), new Point(275, 272));
|
||||
}
|
||||
}
|
||||
myGraphic.DrawImage(ImageUtilities.ResizeImage(itemIcon, 122, 122), new Point(275, 272));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -428,12 +461,12 @@ namespace FModel
|
|||
/// </summary>
|
||||
/// <param name="weaponName"></param>
|
||||
/// <param name="myGraphic"></param>
|
||||
private static void DrawWeaponStat(string weaponName, Graphics myGraphic)
|
||||
private static void DrawWeaponStat(string filename, string weaponName, Graphics myGraphic)
|
||||
{
|
||||
if (weaponStats == null)
|
||||
if (weaponsStatsArray == null || !weaponStatsFilename.Equals(filename))
|
||||
{
|
||||
ItemIcon.ItemIconPath = string.Empty;
|
||||
string extractedWeaponsStatPath = JohnWick.ExtractAsset(ThePak.AllpaksDictionary["AthenaRangedWeapons"], "AthenaRangedWeapons");
|
||||
string extractedWeaponsStatPath = JohnWick.ExtractAsset(ThePak.AllpaksDictionary[filename], filename);
|
||||
if (extractedWeaponsStatPath != null)
|
||||
{
|
||||
if (extractedWeaponsStatPath.Contains(".uasset") || extractedWeaponsStatPath.Contains(".uexp") || extractedWeaponsStatPath.Contains(".ubulk"))
|
||||
|
|
@ -443,7 +476,9 @@ namespace FModel
|
|||
{
|
||||
if (JohnWick.MyAsset.GetSerialized() != null)
|
||||
{
|
||||
weaponStats = JObject.Parse(JohnWick.MyAsset.GetSerialized().ToString().TrimStart('[').TrimEnd(']'));
|
||||
dynamic AssetData = JsonConvert.DeserializeObject(JohnWick.MyAsset.GetSerialized());
|
||||
weaponsStatsArray = JArray.FromObject(AssetData);
|
||||
weaponStatsFilename = filename;
|
||||
loopingLol(weaponName, myGraphic);
|
||||
}
|
||||
}
|
||||
|
|
@ -458,24 +493,36 @@ namespace FModel
|
|||
}
|
||||
private static void loopingLol(string weaponName, Graphics myGraphic)
|
||||
{
|
||||
IEnumerable<JProperty> myStats = weaponStats.Value<JObject>(weaponName).Properties();
|
||||
JToken weaponToken = weaponsStatsArray[0][weaponName];
|
||||
if (weaponToken != null)
|
||||
{
|
||||
JToken dmgPb = weaponToken["DmgPB"];
|
||||
if (dmgPb != null)
|
||||
{
|
||||
Image bulletImage = Resources.dmg64;
|
||||
myGraphic.DrawImage(ImageUtilities.ResizeImage(bulletImage, 15, 15), new Point(5, 502));
|
||||
DrawToLeft(" " + dmgPb.Value<string>(), myGraphic); //damage per bullet
|
||||
}
|
||||
|
||||
string damagePerBullet = myStats.Where(x => x.Name == "DmgPB").Select(x => x.Value).FirstOrDefault().ToString();
|
||||
Image bulletImage = Resources.dmg64;
|
||||
myGraphic.DrawImage(ImageUtilities.ResizeImage(bulletImage, 15, 15), new Point(5, 502));
|
||||
DrawToLeft(" " + damagePerBullet, myGraphic); //damage per bullet
|
||||
JToken clipSize = weaponToken["ClipSize"];
|
||||
if (clipSize != null)
|
||||
{
|
||||
Image clipSizeImage = Resources.clipSize64;
|
||||
myGraphic.DrawImage(ImageUtilities.ResizeImage(clipSizeImage, 15, 15), new Point(52, 502));
|
||||
myGraphic.DrawString(" " + clipSize.Value<string>(), new Font(FontUtilities.pfc.Families[0], 11), new SolidBrush(Color.White), new Point(50, 503));
|
||||
}
|
||||
else { clipSize = ""; }
|
||||
|
||||
string clipSize = myStats.Where(x => x.Name == "ClipSize").Select(x => x.Value).FirstOrDefault().ToString();
|
||||
Image clipSizeImage = Resources.clipSize64;
|
||||
myGraphic.DrawImage(ImageUtilities.ResizeImage(clipSizeImage, 15, 15), new Point(52, 502));
|
||||
myGraphic.DrawString(" " + clipSize, new Font(FontUtilities.pfc.Families[0], 11), new SolidBrush(Color.White), new Point(50, 503));
|
||||
JToken reloadTime = weaponToken["ReloadTime"];
|
||||
if (reloadTime != null)
|
||||
{
|
||||
Image reload = Resources.reload64;
|
||||
myGraphic.DrawImage(ImageUtilities.ResizeImage(reload, 15, 15), new Point(50 + (clipSize.Value<string>().Length * 7) + 47, 502)); //50=clipsize text position | for each clipsize letter we add 7 to x | 47=difference between 2 icons
|
||||
myGraphic.DrawString(reloadTime + " " + SearchResource.getTextByKey("6BA53D764BA5CC13E821D2A807A72365", "seconds"), new Font(FontUtilities.pfc.Families[0], 11), new SolidBrush(Color.White), new Point(64 + (clipSize.Value<string>().Length * 7) + 47, 503)); //64=50+icon size (-1 because that wasn't perfectly at the position i wanted)
|
||||
}
|
||||
|
||||
string reloadTime = myStats.Where(x => x.Name == "ReloadTime").Select(x => x.Value).FirstOrDefault().ToString();
|
||||
Image reload = Resources.reload64;
|
||||
myGraphic.DrawImage(ImageUtilities.ResizeImage(reload, 15, 15), new Point(50 + (clipSize.Length * 7) + 47, 502)); //50=clipsize text position | for each clipsize letter we add 7 to x | 47=difference between 2 icons
|
||||
myGraphic.DrawString(reloadTime + " " + SearchResource.getTextByKey("6BA53D764BA5CC13E821D2A807A72365", "seconds"), new Font(FontUtilities.pfc.Families[0], 11), new SolidBrush(Color.White), new Point(64 + (clipSize.Length * 7) + 47, 503)); //64=50+icon size (-1 because that wasn't perfectly at the position i wanted)
|
||||
|
||||
DrawToRight(weaponName, myGraphic);
|
||||
DrawToRight(weaponName, myGraphic);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -485,10 +532,13 @@ namespace FModel
|
|||
/// <param name="myGraphic"></param>
|
||||
private static void DrawPower(Graphics myGraphic)
|
||||
{
|
||||
Image bolt = Resources.LBolt64;
|
||||
myGraphic.DrawImage(ImageUtilities.ResizeImage(bolt, 15, 15), new Point(5, 501));
|
||||
if (!string.IsNullOrEmpty(MinToMax))
|
||||
{
|
||||
Image bolt = Resources.LBolt64;
|
||||
myGraphic.DrawImage(ImageUtilities.ResizeImage(bolt, 15, 15), new Point(5, 501));
|
||||
|
||||
DrawToLeft(MinToMax, myGraphic);
|
||||
DrawToLeft(MinToMax, myGraphic);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,10 +1,7 @@
|
|||
using csharp_wick;
|
||||
using FModel.Parser.Featured;
|
||||
using FModel.Parser.Items;
|
||||
using FModel.Properties;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
|
|
@ -21,7 +18,7 @@ namespace FModel
|
|||
/// </summary>
|
||||
/// <param name="theItem"></param>
|
||||
/// <param name="featured"></param>
|
||||
public static void GetItemIcon(ItemsIdParser theItem, bool featured = false)
|
||||
public static void GetItemIcon(JToken theItem, bool featured = false)
|
||||
{
|
||||
if (!featured)
|
||||
{
|
||||
|
|
@ -30,12 +27,17 @@ namespace FModel
|
|||
}
|
||||
else
|
||||
{
|
||||
if (theItem.DisplayAssetPath != null && theItem.DisplayAssetPath.AssetPathName.Contains("/Game/Catalog/DisplayAssets/"))
|
||||
JToken displayAssetPathToken = theItem["DisplayAssetPath"];
|
||||
if (displayAssetPathToken != null)
|
||||
{
|
||||
string catalogName = theItem.DisplayAssetPath.AssetPathName;
|
||||
SearchFeaturedIcon(theItem, catalogName.Substring(catalogName.LastIndexOf('.') + 1));
|
||||
JToken displayAssetPathNameToken = displayAssetPathToken["asset_path_name"];
|
||||
if (displayAssetPathNameToken != null && displayAssetPathNameToken.Value<string>().Contains("/Game/Catalog/DisplayAssets/"))
|
||||
{
|
||||
string catalogName = displayAssetPathNameToken.Value<string>();
|
||||
SearchFeaturedIcon(theItem, catalogName.Substring(catalogName.LastIndexOf('.') + 1));
|
||||
}
|
||||
}
|
||||
else if (theItem.DisplayAssetPath == null)
|
||||
else if (displayAssetPathToken == null)
|
||||
{
|
||||
SearchFeaturedIcon(theItem, "DA_Featured_" + ThePak.CurrentUsedItem);
|
||||
}
|
||||
|
|
@ -51,11 +53,13 @@ namespace FModel
|
|||
/// if no HeroDefinition and WeaponDefinition move to SearchLargeSmallIcon
|
||||
/// </summary>
|
||||
/// <param name="theItem"></param>
|
||||
public static void SearchAthIteDefIcon(ItemsIdParser theItem)
|
||||
public static void SearchAthIteDefIcon(JToken theItem)
|
||||
{
|
||||
if (theItem.HeroDefinition != null)
|
||||
JToken heroDefinition = theItem["HeroDefinition"];
|
||||
JToken weaponDefinition = theItem["WeaponDefinition"];
|
||||
if (heroDefinition != null)
|
||||
{
|
||||
string heroFilePath = JohnWick.ExtractAsset(ThePak.AllpaksDictionary[theItem.HeroDefinition], theItem.HeroDefinition);
|
||||
string heroFilePath = JohnWick.ExtractAsset(ThePak.AllpaksDictionary[heroDefinition.Value<string>()], heroDefinition.Value<string>());
|
||||
if (heroFilePath != null)
|
||||
{
|
||||
if (heroFilePath.Contains(".uasset") || heroFilePath.Contains(".uexp") || heroFilePath.Contains(".ubulk"))
|
||||
|
|
@ -65,17 +69,16 @@ namespace FModel
|
|||
{
|
||||
if (JohnWick.MyAsset.GetSerialized() != null)
|
||||
{
|
||||
string parsedJson = JToken.Parse(JohnWick.MyAsset.GetSerialized()).ToString();
|
||||
var itemId = ItemsIdParser.FromJson(parsedJson);
|
||||
for (int i = 0; i < itemId.Length; i++)
|
||||
{
|
||||
if (itemId[i].LargePreviewImage != null)
|
||||
{
|
||||
string textureFile = Path.GetFileName(itemId[i].LargePreviewImage.AssetPathName)
|
||||
?.Substring(0,
|
||||
Path.GetFileName(itemId[i].LargePreviewImage.AssetPathName)
|
||||
.LastIndexOf('.'));
|
||||
dynamic AssetData = JsonConvert.DeserializeObject(JohnWick.MyAsset.GetSerialized());
|
||||
JArray AssetArray = JArray.FromObject(AssetData);
|
||||
|
||||
JToken largePreviewImage = AssetArray[0]["LargePreviewImage"];
|
||||
if (largePreviewImage != null)
|
||||
{
|
||||
JToken assetPathName = largePreviewImage["asset_path_name"];
|
||||
if (assetPathName != null)
|
||||
{
|
||||
string textureFile = Path.GetFileName(assetPathName.Value<string>()).Substring(0, Path.GetFileName(assetPathName.Value<string>()).LastIndexOf('.'));
|
||||
|
||||
ItemIconPath = JohnWick.AssetToTexture2D(textureFile);
|
||||
}
|
||||
|
|
@ -89,19 +92,19 @@ namespace FModel
|
|||
}
|
||||
}
|
||||
}
|
||||
else if (theItem.WeaponDefinition != null)
|
||||
else if (weaponDefinition != null)
|
||||
{
|
||||
//MANUAL FIX
|
||||
if (theItem.WeaponDefinition == "WID_Harvest_Pickaxe_NutCracker")
|
||||
if (weaponDefinition.Value<string>().Equals("WID_Harvest_Pickaxe_NutCracker"))
|
||||
{
|
||||
theItem.WeaponDefinition = "WID_Harvest_Pickaxe_Nutcracker";
|
||||
weaponDefinition = "WID_Harvest_Pickaxe_Nutcracker";
|
||||
}
|
||||
if (theItem.WeaponDefinition == "WID_Harvest_Pickaxe_Wukong")
|
||||
if (weaponDefinition.Value<string>().Equals("WID_Harvest_Pickaxe_Wukong"))
|
||||
{
|
||||
theItem.WeaponDefinition = "WID_Harvest_Pickaxe_WuKong";
|
||||
weaponDefinition = "WID_Harvest_Pickaxe_WuKong";
|
||||
}
|
||||
|
||||
string weaponFilePath = JohnWick.ExtractAsset(ThePak.AllpaksDictionary[theItem.WeaponDefinition], theItem.WeaponDefinition);
|
||||
string weaponFilePath = JohnWick.ExtractAsset(ThePak.AllpaksDictionary[weaponDefinition.Value<string>()], weaponDefinition.Value<string>());
|
||||
if (weaponFilePath != null)
|
||||
{
|
||||
if (weaponFilePath.Contains(".uasset") || weaponFilePath.Contains(".uexp") || weaponFilePath.Contains(".ubulk"))
|
||||
|
|
@ -111,16 +114,16 @@ namespace FModel
|
|||
{
|
||||
if (JohnWick.MyAsset.GetSerialized() != null)
|
||||
{
|
||||
string parsedJson = JToken.Parse(JohnWick.MyAsset.GetSerialized()).ToString();
|
||||
var itemId = ItemsIdParser.FromJson(parsedJson);
|
||||
for (int i = 0; i < itemId.Length; i++)
|
||||
dynamic AssetData = JsonConvert.DeserializeObject(JohnWick.MyAsset.GetSerialized());
|
||||
JArray AssetArray = JArray.FromObject(AssetData);
|
||||
|
||||
JToken largePreviewImage = AssetArray[0]["LargePreviewImage"];
|
||||
if (largePreviewImage != null)
|
||||
{
|
||||
if (itemId[i].LargePreviewImage != null)
|
||||
JToken assetPathName = largePreviewImage["asset_path_name"];
|
||||
if (assetPathName != null)
|
||||
{
|
||||
string textureFile = Path.GetFileName(itemId[i].LargePreviewImage.AssetPathName)
|
||||
?.Substring(0,
|
||||
Path.GetFileName(itemId[i].LargePreviewImage.AssetPathName)
|
||||
.LastIndexOf('.'));
|
||||
string textureFile = Path.GetFileName(assetPathName.Value<string>()).Substring(0, Path.GetFileName(assetPathName.Value<string>()).LastIndexOf('.'));
|
||||
|
||||
ItemIconPath = JohnWick.AssetToTexture2D(textureFile);
|
||||
}
|
||||
|
|
@ -141,21 +144,29 @@ namespace FModel
|
|||
/// convert Large or Small image to a png image
|
||||
/// </summary>
|
||||
/// <param name="theItem"></param>
|
||||
private static void SearchLargeSmallIcon(ItemsIdParser theItem)
|
||||
private static void SearchLargeSmallIcon(JToken theItem)
|
||||
{
|
||||
if (theItem.LargePreviewImage != null)
|
||||
JToken largePreviewImage = theItem["LargePreviewImage"];
|
||||
JToken smallPreviewImage = theItem["SmallPreviewImage"];
|
||||
if (largePreviewImage != null)
|
||||
{
|
||||
string textureFile = Path.GetFileName(theItem.LargePreviewImage.AssetPathName)?.Substring(0,
|
||||
Path.GetFileName(theItem.LargePreviewImage.AssetPathName).LastIndexOf('.'));
|
||||
JToken assetPathName = largePreviewImage["asset_path_name"];
|
||||
if (assetPathName != null)
|
||||
{
|
||||
string textureFile = Path.GetFileName(assetPathName.Value<string>()).Substring(0, Path.GetFileName(assetPathName.Value<string>()).LastIndexOf('.'));
|
||||
|
||||
ItemIconPath = JohnWick.AssetToTexture2D(textureFile);
|
||||
ItemIconPath = JohnWick.AssetToTexture2D(textureFile);
|
||||
}
|
||||
}
|
||||
else if (theItem.SmallPreviewImage != null)
|
||||
else if (smallPreviewImage != null)
|
||||
{
|
||||
string textureFile = Path.GetFileName(theItem.SmallPreviewImage.AssetPathName)?.Substring(0,
|
||||
Path.GetFileName(theItem.SmallPreviewImage.AssetPathName).LastIndexOf('.'));
|
||||
JToken assetPathName = smallPreviewImage["asset_path_name"];
|
||||
if (assetPathName != null)
|
||||
{
|
||||
string textureFile = Path.GetFileName(assetPathName.Value<string>()).Substring(0, Path.GetFileName(assetPathName.Value<string>()).LastIndexOf('.'));
|
||||
|
||||
ItemIconPath = JohnWick.AssetToTexture2D(textureFile);
|
||||
ItemIconPath = JohnWick.AssetToTexture2D(textureFile);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -165,7 +176,7 @@ namespace FModel
|
|||
/// </summary>
|
||||
/// <param name="theItem"></param>
|
||||
/// <param name="catName"></param>
|
||||
public static void SearchFeaturedIcon(ItemsIdParser theItem, string catName)
|
||||
public static void SearchFeaturedIcon(JToken theItem, string catName)
|
||||
{
|
||||
switch (catName)
|
||||
{
|
||||
|
|
@ -192,7 +203,7 @@ namespace FModel
|
|||
/// </summary>
|
||||
/// <param name="theItem"></param>
|
||||
/// <param name="catName"></param>
|
||||
private static void GetFeaturedItemIcon(ItemsIdParser theItem, string catName)
|
||||
private static void GetFeaturedItemIcon(JToken theItem, string catName)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
@ -208,28 +219,38 @@ namespace FModel
|
|||
if (JohnWick.MyAsset.GetSerialized() != null)
|
||||
{
|
||||
ThePak.CurrentUsedItem = catName;
|
||||
string parsedJson = JToken.Parse(JohnWick.MyAsset.GetSerialized()).ToString();
|
||||
var featuredId = FeaturedParser.FromJson(parsedJson);
|
||||
for (int i = 0; i < featuredId.Length; i++)
|
||||
dynamic AssetData = JsonConvert.DeserializeObject(JohnWick.MyAsset.GetSerialized());
|
||||
JArray AssetArray = JArray.FromObject(AssetData);
|
||||
|
||||
switch (catName)
|
||||
{
|
||||
switch (catName)
|
||||
{
|
||||
case "DA_Featured_Glider_ID_070_DarkViking":
|
||||
case "DA_Featured_CID_319_Athena_Commando_F_Nautilus":
|
||||
if (featuredId[i].TileImage != null)
|
||||
case "DA_Featured_Glider_ID_070_DarkViking":
|
||||
case "DA_Featured_CID_319_Athena_Commando_F_Nautilus":
|
||||
JToken tileImage = AssetArray[0]["TileImage"];
|
||||
if (tileImage != null)
|
||||
{
|
||||
JToken resourceObject = tileImage["ResourceObject"];
|
||||
if (resourceObject != null)
|
||||
{
|
||||
string textureFile = featuredId[i].TileImage.ResourceObject;
|
||||
string textureFile = resourceObject.Value<string>();
|
||||
|
||||
ItemIconPath = JohnWick.AssetToTexture2D(textureFile);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (featuredId[i].DetailsImage != null)
|
||||
}
|
||||
break;
|
||||
default:
|
||||
JToken detailsImage = AssetArray[0]["DetailsImage"];
|
||||
if (detailsImage != null)
|
||||
{
|
||||
JToken resourceObject = detailsImage["ResourceObject"];
|
||||
if (resourceObject != null)
|
||||
{
|
||||
string textureFile = featuredId[i].DetailsImage.ResourceObject;
|
||||
string textureFile = resourceObject.Value<string>();
|
||||
|
||||
ItemIconPath = JohnWick.AssetToTexture2D(textureFile);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
// There is no featured image (as legends pack, shadow pack...)
|
||||
|
|
@ -270,26 +291,24 @@ namespace FModel
|
|||
{
|
||||
if (JohnWick.MyAsset.GetSerialized() != null)
|
||||
{
|
||||
string parsedJson = JToken.Parse(JohnWick.MyAsset.GetSerialized()).ToString();
|
||||
var ammoId = ItemsIdParser.FromJson(parsedJson);
|
||||
for (int i = 0; i < ammoId.Length; i++)
|
||||
{
|
||||
SearchLargeSmallIcon(ammoId[i]);
|
||||
dynamic AssetData = JsonConvert.DeserializeObject(JohnWick.MyAsset.GetSerialized());
|
||||
JArray AssetArray = JArray.FromObject(AssetData);
|
||||
|
||||
if (File.Exists(ItemIconPath))
|
||||
SearchLargeSmallIcon(AssetArray[0]);
|
||||
|
||||
if (File.Exists(ItemIconPath))
|
||||
{
|
||||
Image itemIcon;
|
||||
using (var bmpTemp = new Bitmap(ItemIconPath))
|
||||
{
|
||||
Image itemIcon;
|
||||
using (var bmpTemp = new Bitmap(ItemIconPath))
|
||||
{
|
||||
itemIcon = new Bitmap(bmpTemp);
|
||||
}
|
||||
toDrawOn.DrawImage(ImageUtilities.ResizeImage(itemIcon, 64, 64), new Point(6, 6));
|
||||
}
|
||||
else
|
||||
{
|
||||
Image itemIcon = Resources.unknown512;
|
||||
toDrawOn.DrawImage(ImageUtilities.ResizeImage(itemIcon, 64, 64), new Point(6, 6));
|
||||
itemIcon = new Bitmap(bmpTemp);
|
||||
}
|
||||
toDrawOn.DrawImage(ImageUtilities.ResizeImage(itemIcon, 64, 64), new Point(6, 6));
|
||||
}
|
||||
else
|
||||
{
|
||||
Image itemIcon = Resources.unknown512;
|
||||
toDrawOn.DrawImage(ImageUtilities.ResizeImage(itemIcon, 64, 64), new Point(6, 6));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
using FModel.Parser.Items;
|
||||
using FModel.Properties;
|
||||
using FModel.Properties;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System.Drawing;
|
||||
|
||||
namespace FModel
|
||||
|
|
@ -11,9 +11,10 @@ namespace FModel
|
|||
/// </summary>
|
||||
/// <param name="theItem"></param>
|
||||
/// <returns> the resource image depending on the rarity </returns>
|
||||
private static Image GetRarityImage(ItemsIdParser theItem)
|
||||
private static Image GetRarityImage(JToken theItem)
|
||||
{
|
||||
switch (theItem.Rarity)
|
||||
JToken raritiesToken = theItem["Rarity"];
|
||||
switch (raritiesToken != null ? raritiesToken.Value<string>() : "")
|
||||
{
|
||||
case "EFortRarity::Transcendent":
|
||||
return Settings.Default.rarityNew ? Resources.T512 : Resources.T512v1;
|
||||
|
|
@ -39,9 +40,9 @@ namespace FModel
|
|||
/// </summary>
|
||||
/// <param name="theItem"></param>
|
||||
/// <returns> the resource image depending on the series </returns>
|
||||
private static Image GetSeriesImage(ItemsIdParser theItem)
|
||||
private static Image GetSeriesImage(JToken theItem, string theSeries)
|
||||
{
|
||||
if (theItem.Series == "MarvelSeries")
|
||||
if (theSeries.Equals("MarvelSeries"))
|
||||
{
|
||||
return Settings.Default.rarityNew ? Resources.Marvel512 : Resources.Marvel512v1;
|
||||
}
|
||||
|
|
@ -58,7 +59,7 @@ namespace FModel
|
|||
/// <param name="theItem"></param>
|
||||
/// <param name="specialMode"></param>
|
||||
/// <returns> the resource image depending on specialMode </returns>
|
||||
private static Image GetSpecialModeImage(ItemsIdParser theItem, string specialMode)
|
||||
private static Image GetSpecialModeImage(JToken theItem, string specialMode)
|
||||
{
|
||||
if (specialMode == "ammo")
|
||||
{
|
||||
|
|
@ -76,13 +77,13 @@ namespace FModel
|
|||
/// <param name="theItem"></param>
|
||||
/// <param name="toDrawOn"></param>
|
||||
/// <param name="specialMode"></param>
|
||||
public static void DrawRarity(ItemsIdParser theItem, Graphics toDrawOn, string specialMode = null)
|
||||
public static void DrawRarity(JToken theItem, Graphics toDrawOn, string specialMode = null)
|
||||
{
|
||||
Image rarityBg;
|
||||
|
||||
if (theItem.Series != null)
|
||||
JToken seriesToken = theItem["Series"];
|
||||
if (!string.IsNullOrEmpty(seriesToken != null ? seriesToken.Value<string>() : ""))
|
||||
{
|
||||
rarityBg = GetSeriesImage(theItem);
|
||||
rarityBg = GetSeriesImage(theItem, seriesToken.Value<string>());
|
||||
}
|
||||
else if (specialMode != null)
|
||||
{
|
||||
|
|
@ -92,7 +93,6 @@ namespace FModel
|
|||
{
|
||||
rarityBg = GetRarityImage(theItem);
|
||||
}
|
||||
|
||||
toDrawOn.DrawImage(rarityBg, new Point(0, 0));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
using csharp_wick;
|
||||
using FModel.Parser.RenderMat;
|
||||
using FModel.Properties;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
|
|
@ -93,7 +92,7 @@ namespace FModel
|
|||
string TexturePath = string.Empty;
|
||||
if (!string.IsNullOrEmpty(textureFilePath))
|
||||
{
|
||||
if ((textureFilePath.Contains("MI_UI_FeaturedRenderSwitch_") || textureFilePath.Contains("M_UI_ChallengeTile_PCB") || textureFilePath.Contains("Wraps\\FeaturedMaterials\\") || textureFilePath.Contains("M-Wraps-StreetDemon")))
|
||||
if (textureFilePath.Contains("MI_UI_FeaturedRenderSwitch_") || textureFilePath.Contains("M_UI_ChallengeTile_PCB") || textureFilePath.Contains("Wraps\\FeaturedMaterials\\") || textureFilePath.Contains("M-Wraps-StreetDemon"))
|
||||
return GetRenderSwitchMaterialTexture(textureFilePath);
|
||||
else
|
||||
{
|
||||
|
|
@ -121,15 +120,38 @@ namespace FModel
|
|||
{
|
||||
if (MyAsset.GetSerialized() != null)
|
||||
{
|
||||
string parsedRsmJson = JToken.Parse(MyAsset.GetSerialized()).ToString();
|
||||
var rsmid = RenderSwitchMaterial.FromJson(parsedRsmJson);
|
||||
for (int i = 0; i < rsmid.Length; i++)
|
||||
{
|
||||
if (rsmid[i].TextureParameterValues.FirstOrDefault()?.ParameterValue != null)
|
||||
{
|
||||
string textureFile = rsmid[i].TextureParameterValues.FirstOrDefault()?.ParameterValue;
|
||||
dynamic AssetData = JsonConvert.DeserializeObject(MyAsset.GetSerialized());
|
||||
JArray AssetArray = JArray.FromObject(AssetData);
|
||||
|
||||
TexturePath = AssetToTexture2D(textureFile);
|
||||
JToken textureParameterValues = AssetArray[0]["TextureParameterValues"];
|
||||
if (textureParameterValues != null)
|
||||
{
|
||||
JArray textureParameterValuesArray = textureParameterValues.Value<JArray>();
|
||||
foreach (JToken token in textureParameterValuesArray)
|
||||
{
|
||||
JToken parameterInfo = token["ParameterInfo"];
|
||||
if (parameterInfo != null)
|
||||
{
|
||||
JToken name = parameterInfo["Name"];
|
||||
if (name != null && name.Value<string>().Equals("TextureB"))
|
||||
{
|
||||
JToken parameterValue = token["ParameterValue"];
|
||||
if (parameterValue != null)
|
||||
{
|
||||
string textureFile = parameterValue.Value<string>();
|
||||
TexturePath = AssetToTexture2D(textureFile);
|
||||
}
|
||||
}
|
||||
else if (name != null && name.Value<string>().Contains("Texture"))
|
||||
{
|
||||
JToken parameterValue = token["ParameterValue"];
|
||||
if (parameterValue != null)
|
||||
{
|
||||
string textureFile = parameterValue.Value<string>();
|
||||
TexturePath = AssetToTexture2D(textureFile);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
30
FModel/Methods/UpdateMode/RegisterSettings.cs
Normal file
30
FModel/Methods/UpdateMode/RegisterSettings.cs
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
using FModel.Properties;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace FModel
|
||||
{
|
||||
static class RegisterSettings
|
||||
{
|
||||
public static Dictionary<string, string> updateModeDictionary { get; set; }
|
||||
public static List<string> updateModeListParameters { get; set; }
|
||||
|
||||
public static void UpdateModeAddToDict(string[] myPaksFilesList)
|
||||
{
|
||||
for (int i = 0; i < myPaksFilesList.Length; i++)
|
||||
{
|
||||
bool b = updateModeListParameters.Any(s => myPaksFilesList[i].Contains(s));
|
||||
if (b)
|
||||
{
|
||||
string filename = myPaksFilesList[i].Substring(myPaksFilesList[i].LastIndexOf("/", StringComparison.Ordinal) + 1);
|
||||
if (filename.Contains(".uasset") || filename.Contains(".uexp") || filename.Contains(".ubulk"))
|
||||
{
|
||||
if (!updateModeDictionary.ContainsKey(filename.Substring(0, filename.LastIndexOf(".", StringComparison.Ordinal))))
|
||||
updateModeDictionary.Add(filename.Substring(0, filename.LastIndexOf(".", StringComparison.Ordinal)), myPaksFilesList[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -76,21 +76,6 @@ namespace FModel
|
|||
Directory.CreateDirectory(App.DefaultOutputPath);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public static void JohnWickCheck()
|
||||
{
|
||||
if (File.Exists(App.DefaultOutputPath + "\\john-wick-parse-modded.exe")) //2.0-
|
||||
{
|
||||
File.Delete(App.DefaultOutputPath + "\\john-wick-parse-modded.exe");
|
||||
}
|
||||
if (File.Exists(App.DefaultOutputPath + "\\john-wick-parse_custom.exe")) //2.0+
|
||||
{
|
||||
File.Delete(App.DefaultOutputPath + "\\john-wick-parse_custom.exe");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// this should tell me if i can read the file, to avoid crash when a pak is being written by the launcher
|
||||
/// </summary>
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
using System;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
|
|
|
|||
|
|
@ -1,79 +0,0 @@
|
|||
// <auto-generated />
|
||||
//
|
||||
// To parse this JSON data, add NuGet 'Newtonsoft.Json' then do:
|
||||
//
|
||||
// using FModel.Parser.Banners;
|
||||
//
|
||||
// var bannersParser = BannersParser.FromJson(jsonString);
|
||||
|
||||
using System.Globalization;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Converters;
|
||||
|
||||
namespace FModel.Parser.Banners
|
||||
{
|
||||
public partial class BannersParser
|
||||
{
|
||||
[JsonProperty("export_type")]
|
||||
public string ExportType { get; set; }
|
||||
|
||||
[JsonProperty("SmallImage")]
|
||||
public Image SmallImage { get; set; }
|
||||
|
||||
[JsonProperty("LargeImage")]
|
||||
public Image LargeImage { get; set; }
|
||||
|
||||
[JsonProperty("CategoryRowName")]
|
||||
public string CategoryRowName { get; set; }
|
||||
|
||||
[JsonProperty("DisplayName")]
|
||||
public FTextInfos DisplayName { get; set; }
|
||||
|
||||
[JsonProperty("DisplayDescription")]
|
||||
public FTextInfos DisplayDescription { get; set; }
|
||||
|
||||
[JsonProperty("bFullUsageRights")]
|
||||
public bool BFullUsageRights { get; set; }
|
||||
}
|
||||
|
||||
public partial class FTextInfos
|
||||
{
|
||||
[JsonProperty("key")]
|
||||
public string Key { get; set; }
|
||||
|
||||
[JsonProperty("source_string")]
|
||||
public string SourceString { get; set; }
|
||||
}
|
||||
|
||||
public class Image
|
||||
{
|
||||
[JsonProperty("asset_path_name")]
|
||||
public string AssetPathName { get; set; }
|
||||
|
||||
[JsonProperty("sub_path_string")]
|
||||
public string SubPathString { get; set; }
|
||||
}
|
||||
|
||||
public partial class BannersParser
|
||||
{
|
||||
public static BannersParser FromJson(string json) => JsonConvert.DeserializeObject<BannersParser>(json, Converter.Settings);
|
||||
}
|
||||
|
||||
public static class Serialize
|
||||
{
|
||||
public static string ToJson(this BannersParser self) => JsonConvert.SerializeObject(self, Converter.Settings);
|
||||
}
|
||||
|
||||
internal static class Converter
|
||||
{
|
||||
public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
|
||||
{
|
||||
MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
|
||||
DateParseHandling = DateParseHandling.None,
|
||||
Converters =
|
||||
{
|
||||
new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
@ -1,155 +0,0 @@
|
|||
using System.Globalization;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Converters;
|
||||
|
||||
namespace FModel.Parser.Challenges
|
||||
{
|
||||
public partial class ChallengeBundleIdParser
|
||||
{
|
||||
[JsonProperty("export_type")]
|
||||
public string ExportType { get; set; }
|
||||
|
||||
[JsonProperty("QuestInfos")]
|
||||
public QuestInfo[] QuestInfos { get; set; }
|
||||
|
||||
[JsonProperty("BundleCompletionRewards")]
|
||||
public BundleCompletionReward[] BundleCompletionRewards { get; set; }
|
||||
|
||||
[JsonProperty("DisplayStyle")]
|
||||
public DisplayStyle DisplayStyle { get; set; }
|
||||
|
||||
[JsonProperty("DisplayName")]
|
||||
public DisplayName DisplayName { get; set; }
|
||||
|
||||
[JsonProperty("SmallPreviewImage")]
|
||||
public LargePreviewImage SmallPreviewImage { get; set; }
|
||||
|
||||
[JsonProperty("LargePreviewImage")]
|
||||
public LargePreviewImage LargePreviewImage { get; set; }
|
||||
}
|
||||
|
||||
public partial class DisplayName
|
||||
{
|
||||
[JsonProperty("key")]
|
||||
public string Key { get; set; }
|
||||
|
||||
[JsonProperty("source_string")]
|
||||
public string SourceString { get; set; }
|
||||
}
|
||||
|
||||
public class BundleCompletionReward
|
||||
{
|
||||
[JsonProperty("CompletionCount")]
|
||||
public long CompletionCount { get; set; }
|
||||
|
||||
[JsonProperty("Rewards")]
|
||||
public Reward[] Rewards { get; set; }
|
||||
}
|
||||
|
||||
public class Reward
|
||||
{
|
||||
[JsonProperty("ItemDefinition")]
|
||||
public LargePreviewImage ItemDefinition { get; set; }
|
||||
|
||||
[JsonProperty("TemplateId")]
|
||||
public string TemplateId { get; set; }
|
||||
|
||||
[JsonProperty("Quantity")]
|
||||
public long Quantity { get; set; }
|
||||
|
||||
[JsonProperty("RewardGiftBox")]
|
||||
public RewardGiftBox RewardGiftBox { get; set; }
|
||||
|
||||
[JsonProperty("IsChaseReward")]
|
||||
public bool IsChaseReward { get; set; }
|
||||
|
||||
[JsonProperty("RewardType")]
|
||||
public string RewardType { get; set; }
|
||||
}
|
||||
|
||||
public class LargePreviewImage
|
||||
{
|
||||
[JsonProperty("asset_path_name")]
|
||||
public string AssetPathName { get; set; }
|
||||
|
||||
[JsonProperty("sub_path_string")]
|
||||
public string SubPathString { get; set; }
|
||||
}
|
||||
|
||||
public class RewardGiftBox
|
||||
{
|
||||
[JsonProperty("GiftBoxToUse")]
|
||||
public LargePreviewImage GiftBoxToUse { get; set; }
|
||||
|
||||
[JsonProperty("GiftBoxFormatData")]
|
||||
public object[] GiftBoxFormatData { get; set; }
|
||||
}
|
||||
|
||||
public class DisplayStyle
|
||||
{
|
||||
[JsonProperty("PrimaryColor")]
|
||||
public ColorChallenge PrimaryColor { get; set; }
|
||||
|
||||
[JsonProperty("SecondaryColor")]
|
||||
public ColorChallenge SecondaryColor { get; set; }
|
||||
|
||||
[JsonProperty("AccentColor")]
|
||||
public ColorChallenge AccentColor { get; set; }
|
||||
|
||||
[JsonProperty("DisplayImage")]
|
||||
public LargePreviewImage DisplayImage { get; set; }
|
||||
}
|
||||
|
||||
public class ColorChallenge
|
||||
{
|
||||
[JsonProperty("r")]
|
||||
public double R { get; set; }
|
||||
|
||||
[JsonProperty("g")]
|
||||
public double G { get; set; }
|
||||
|
||||
[JsonProperty("b")]
|
||||
public double B { get; set; }
|
||||
|
||||
[JsonProperty("a")]
|
||||
public long A { get; set; }
|
||||
}
|
||||
|
||||
public class QuestInfo
|
||||
{
|
||||
[JsonProperty("QuestDefinition")]
|
||||
public LargePreviewImage QuestDefinition { get; set; }
|
||||
|
||||
[JsonProperty("QuestUnlockType")]
|
||||
public string QuestUnlockType { get; set; }
|
||||
|
||||
[JsonProperty("UnlockValue")]
|
||||
public long UnlockValue { get; set; }
|
||||
|
||||
[JsonProperty("RewardGiftBox")]
|
||||
public RewardGiftBox RewardGiftBox { get; set; }
|
||||
}
|
||||
|
||||
public partial class ChallengeBundleIdParser
|
||||
{
|
||||
public static ChallengeBundleIdParser[] FromJson(string json) => JsonConvert.DeserializeObject<ChallengeBundleIdParser[]>(json, Converter.Settings);
|
||||
}
|
||||
|
||||
public static class Serialize
|
||||
{
|
||||
public static string ToJson(this ChallengeBundleIdParser[] self) => JsonConvert.SerializeObject(self, Converter.Settings);
|
||||
}
|
||||
|
||||
internal static class Converter
|
||||
{
|
||||
public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
|
||||
{
|
||||
MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
|
||||
DateParseHandling = DateParseHandling.None,
|
||||
Converters =
|
||||
{
|
||||
new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
@ -1,89 +0,0 @@
|
|||
using System.Globalization;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Converters;
|
||||
|
||||
namespace FModel.Parser.Featured
|
||||
{
|
||||
public partial class FeaturedParser
|
||||
{
|
||||
[JsonProperty("export_type")]
|
||||
public string ExportType { get; set; }
|
||||
|
||||
[JsonProperty("TileImage")]
|
||||
public ImageLol TileImage { get; set; }
|
||||
|
||||
[JsonProperty("DetailsImage")]
|
||||
public ImageLol DetailsImage { get; set; }
|
||||
|
||||
[JsonProperty("Gradient")]
|
||||
public Gradient Gradient { get; set; }
|
||||
|
||||
[JsonProperty("Background")]
|
||||
public Background Background { get; set; }
|
||||
}
|
||||
|
||||
public class Background
|
||||
{
|
||||
[JsonProperty("r")]
|
||||
public double R { get; set; }
|
||||
|
||||
[JsonProperty("g")]
|
||||
public double G { get; set; }
|
||||
|
||||
[JsonProperty("b")]
|
||||
public double B { get; set; }
|
||||
|
||||
[JsonProperty("a")]
|
||||
public long A { get; set; }
|
||||
}
|
||||
|
||||
public class ImageLol
|
||||
{
|
||||
[JsonProperty("ImageSize")]
|
||||
public ImageSize ImageSize { get; set; }
|
||||
|
||||
[JsonProperty("ResourceObject")]
|
||||
public string ResourceObject { get; set; }
|
||||
}
|
||||
|
||||
public class ImageSize
|
||||
{
|
||||
[JsonProperty("x")]
|
||||
public long X { get; set; }
|
||||
|
||||
[JsonProperty("y")]
|
||||
public long Y { get; set; }
|
||||
}
|
||||
|
||||
public class Gradient
|
||||
{
|
||||
[JsonProperty("Start")]
|
||||
public Background Start { get; set; }
|
||||
|
||||
[JsonProperty("Stop")]
|
||||
public Background Stop { get; set; }
|
||||
}
|
||||
|
||||
public partial class FeaturedParser
|
||||
{
|
||||
public static FeaturedParser[] FromJson(string json) => JsonConvert.DeserializeObject<FeaturedParser[]>(json, Converter.Settings);
|
||||
}
|
||||
|
||||
public static class Serialize
|
||||
{
|
||||
public static string ToJson(this FeaturedParser[] self) => JsonConvert.SerializeObject(self, Converter.Settings);
|
||||
}
|
||||
|
||||
internal static class Converter
|
||||
{
|
||||
public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
|
||||
{
|
||||
MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
|
||||
DateParseHandling = DateParseHandling.None,
|
||||
Converters =
|
||||
{
|
||||
new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
@ -1,70 +0,0 @@
|
|||
// <auto-generated />
|
||||
//
|
||||
// To parse this JSON data, add NuGet 'Newtonsoft.Json' then do:
|
||||
//
|
||||
// using FModel.Parser.CosmeticSetsParser;
|
||||
//
|
||||
// var cosmeticSetsParser = CosmeticSetsParser.FromJson(jsonString);
|
||||
|
||||
namespace FModel.Parser.CosmeticSetsParser
|
||||
{
|
||||
using System.Globalization;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Converters;
|
||||
|
||||
public partial class CosmeticSetsParser
|
||||
{
|
||||
[JsonProperty("export_type")]
|
||||
public string ExportType { get; set; }
|
||||
|
||||
[JsonProperty("Tag")]
|
||||
public Tag Tag { get; set; }
|
||||
|
||||
[JsonProperty("DisplayName")]
|
||||
public Description DisplayName { get; set; }
|
||||
|
||||
[JsonProperty("Description")]
|
||||
public Description Description { get; set; }
|
||||
}
|
||||
|
||||
public partial class Description
|
||||
{
|
||||
[JsonProperty("namespace")]
|
||||
public string Namespace { get; set; }
|
||||
|
||||
[JsonProperty("key")]
|
||||
public string Key { get; set; }
|
||||
|
||||
[JsonProperty("source_string")]
|
||||
public string SourceString { get; set; }
|
||||
}
|
||||
|
||||
public partial class Tag
|
||||
{
|
||||
[JsonProperty("TagName")]
|
||||
public string TagName { get; set; }
|
||||
}
|
||||
|
||||
public partial class CosmeticSetsParser
|
||||
{
|
||||
public static CosmeticSetsParser FromJson(string json) => JsonConvert.DeserializeObject<CosmeticSetsParser>(json, FModel.Parser.CosmeticSetsParser.Converter.Settings);
|
||||
}
|
||||
|
||||
public static class Serialize
|
||||
{
|
||||
public static string ToJson(this CosmeticSetsParser self) => JsonConvert.SerializeObject(self, FModel.Parser.CosmeticSetsParser.Converter.Settings);
|
||||
}
|
||||
|
||||
internal static class Converter
|
||||
{
|
||||
public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
|
||||
{
|
||||
MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
|
||||
DateParseHandling = DateParseHandling.None,
|
||||
Converters =
|
||||
{
|
||||
new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
@ -1,155 +0,0 @@
|
|||
using System.Globalization;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Converters;
|
||||
|
||||
namespace FModel.Parser.Items
|
||||
{
|
||||
public partial class ItemsIdParser
|
||||
{
|
||||
[JsonProperty("export_type")]
|
||||
public string ExportType { get; set; }
|
||||
|
||||
[JsonProperty("cosmetic_item")]
|
||||
public string CosmeticItem { get; set; }
|
||||
|
||||
[JsonProperty("CharacterParts")]
|
||||
public string[] CharacterParts { get; set; }
|
||||
|
||||
[JsonProperty("HeroDefinition")]
|
||||
public string HeroDefinition { get; set; }
|
||||
|
||||
[JsonProperty("WeaponDefinition")]
|
||||
public string WeaponDefinition { get; set; }
|
||||
|
||||
[JsonProperty("Rarity")]
|
||||
public string Rarity { get; set; }
|
||||
|
||||
[JsonProperty("Series")]
|
||||
public string Series { get; set; }
|
||||
|
||||
[JsonProperty("DisplayName")]
|
||||
public FTextInfos DisplayName { get; set; }
|
||||
|
||||
[JsonProperty("ShortDescription")]
|
||||
public FTextInfos ShortDescription { get; set; }
|
||||
|
||||
[JsonProperty("Description")]
|
||||
public FTextInfos Description { get; set; }
|
||||
|
||||
[JsonProperty("GameplayTags")]
|
||||
public GameplayTags GameplayTags { get; set; }
|
||||
|
||||
[JsonProperty("SmallPreviewImage")]
|
||||
public PreviewImage SmallPreviewImage { get; set; }
|
||||
|
||||
[JsonProperty("LargePreviewImage")]
|
||||
public PreviewImage LargePreviewImage { get; set; }
|
||||
|
||||
[JsonProperty("DisplayAssetPath")]
|
||||
public DisplayAssetPath DisplayAssetPath { get; set; }
|
||||
|
||||
[JsonProperty("AmmoData")]
|
||||
public AmmoData AmmoData { get; set; }
|
||||
|
||||
[JsonProperty("AttributeInitKey")]
|
||||
public AttributeInitKey AttributeInitKey { get; set; }
|
||||
|
||||
[JsonProperty("MaxStackSize")]
|
||||
public long MaxStackSize { get; set; }
|
||||
|
||||
[JsonProperty("MinLevel")]
|
||||
public long MinLevel { get; set; }
|
||||
|
||||
[JsonProperty("MaxLevel")]
|
||||
public long MaxLevel { get; set; }
|
||||
|
||||
[JsonProperty("WeaponStatHandle")]
|
||||
public WeaponStatHandle WeaponStatHandle { get; set; }
|
||||
}
|
||||
|
||||
public partial class FTextInfos
|
||||
{
|
||||
[JsonProperty("namespace")]
|
||||
public string Namespace { get; set; }
|
||||
|
||||
[JsonProperty("key")]
|
||||
public string Key { get; set; }
|
||||
|
||||
[JsonProperty("source_string")]
|
||||
public string SourceString { get; set; }
|
||||
}
|
||||
|
||||
public class GameplayTags
|
||||
{
|
||||
[JsonProperty("gameplay_tags")]
|
||||
public string[] GameplayTagsGameplayTags { get; set; }
|
||||
}
|
||||
|
||||
public class PreviewImage
|
||||
{
|
||||
[JsonProperty("asset_path_name")]
|
||||
public string AssetPathName { get; set; }
|
||||
|
||||
[JsonProperty("sub_path_string")]
|
||||
public string SubPathString { get; set; }
|
||||
}
|
||||
|
||||
public class DisplayAssetPath
|
||||
{
|
||||
[JsonProperty("asset_path_name")]
|
||||
public string AssetPathName { get; set; }
|
||||
|
||||
[JsonProperty("sub_path_string")]
|
||||
public string SubPathString { get; set; }
|
||||
}
|
||||
|
||||
public partial class AmmoData
|
||||
{
|
||||
[JsonProperty("asset_path_name")]
|
||||
public string AssetPathName { get; set; }
|
||||
|
||||
[JsonProperty("sub_path_string")]
|
||||
public string SubPathString { get; set; }
|
||||
}
|
||||
|
||||
public partial class AttributeInitKey
|
||||
{
|
||||
[JsonProperty("AttributeInitCategory")]
|
||||
public string AttributeInitCategory { get; set; }
|
||||
|
||||
[JsonProperty("AttributeInitSubCategory")]
|
||||
public string AttributeInitSubCategory { get; set; }
|
||||
}
|
||||
|
||||
public partial class WeaponStatHandle
|
||||
{
|
||||
[JsonProperty("DataTable")]
|
||||
public string DataTable { get; set; }
|
||||
|
||||
[JsonProperty("RowName")]
|
||||
public string RowName { get; set; }
|
||||
}
|
||||
|
||||
public partial class ItemsIdParser
|
||||
{
|
||||
public static ItemsIdParser[] FromJson(string json) => JsonConvert.DeserializeObject<ItemsIdParser[]>(json, Converter.Settings);
|
||||
}
|
||||
|
||||
public static class Serialize
|
||||
{
|
||||
public static string ToJson(this ItemsIdParser[] self) => JsonConvert.SerializeObject(self, Converter.Settings);
|
||||
}
|
||||
|
||||
internal static class Converter
|
||||
{
|
||||
public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
|
||||
{
|
||||
MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
|
||||
DateParseHandling = DateParseHandling.None,
|
||||
Converters =
|
||||
{
|
||||
new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
@ -1,538 +0,0 @@
|
|||
// <auto-generated />
|
||||
//
|
||||
// To parse this JSON data, add NuGet 'Newtonsoft.Json' then do:
|
||||
//
|
||||
// using FModel.Parser.Meshes;
|
||||
//
|
||||
// var meshesParser = MeshesParser.FromJson(jsonString);
|
||||
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Converters;
|
||||
|
||||
namespace FModel.Parser.Meshes
|
||||
{
|
||||
public partial class MeshesParser
|
||||
{
|
||||
[JsonProperty("super_object")]
|
||||
public SuperObject SuperObject { get; set; }
|
||||
|
||||
[JsonProperty("imported_bounds")]
|
||||
public ImportedBounds ImportedBounds { get; set; }
|
||||
|
||||
[JsonProperty("materials")]
|
||||
public Material[] Materials { get; set; }
|
||||
|
||||
[JsonProperty("ref_skeleton")]
|
||||
public RefSkeleton RefSkeleton { get; set; }
|
||||
|
||||
[JsonProperty("lod_models")]
|
||||
public LodModel[] LodModels { get; set; }
|
||||
}
|
||||
|
||||
public class ImportedBounds
|
||||
{
|
||||
[JsonProperty("origin")]
|
||||
public BoxExtend Origin { get; set; }
|
||||
|
||||
[JsonProperty("box_extend")]
|
||||
public BoxExtend BoxExtend { get; set; }
|
||||
|
||||
[JsonProperty("sphere_radius")]
|
||||
public double SphereRadius { get; set; }
|
||||
}
|
||||
|
||||
public class BoxExtend
|
||||
{
|
||||
[JsonProperty("x")]
|
||||
public double X { get; set; }
|
||||
|
||||
[JsonProperty("y")]
|
||||
public double Y { get; set; }
|
||||
|
||||
[JsonProperty("z")]
|
||||
public double Z { get; set; }
|
||||
|
||||
[JsonProperty("w", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public double? W { get; set; }
|
||||
}
|
||||
|
||||
public class LodModel
|
||||
{
|
||||
[JsonProperty("sections")]
|
||||
public Section[] Sections { get; set; }
|
||||
|
||||
[JsonProperty("indices")]
|
||||
public Indices Indices { get; set; }
|
||||
|
||||
[JsonProperty("active_bone_indices")]
|
||||
public long[] ActiveBoneIndices { get; set; }
|
||||
|
||||
[JsonProperty("required_bones")]
|
||||
public long[] RequiredBones { get; set; }
|
||||
|
||||
[JsonProperty("position_vertex_buffer")]
|
||||
public PositionVertexBuffer PositionVertexBuffer { get; set; }
|
||||
|
||||
[JsonProperty("static_mesh_vertex_buffer")]
|
||||
public StaticMeshVertexBuffer StaticMeshVertexBuffer { get; set; }
|
||||
|
||||
[JsonProperty("skin_weight_vertex_buffer")]
|
||||
public SkinWeightVertexBuffer SkinWeightVertexBuffer { get; set; }
|
||||
|
||||
[JsonProperty("colour_vertex_buffer")]
|
||||
public object ColourVertexBuffer { get; set; }
|
||||
}
|
||||
|
||||
public class Indices
|
||||
{
|
||||
[JsonProperty("Indices16")]
|
||||
public long[] Indices16 { get; set; }
|
||||
}
|
||||
|
||||
public class PositionVertexBuffer
|
||||
{
|
||||
[JsonProperty("verts")]
|
||||
public BoxExtend[] Verts { get; set; }
|
||||
|
||||
[JsonProperty("stride")]
|
||||
public long Stride { get; set; }
|
||||
|
||||
[JsonProperty("num_verts")]
|
||||
public long NumVerts { get; set; }
|
||||
}
|
||||
|
||||
public class Section
|
||||
{
|
||||
[JsonProperty("material_index")]
|
||||
public long MaterialIndex { get; set; }
|
||||
|
||||
[JsonProperty("base_index")]
|
||||
public long BaseIndex { get; set; }
|
||||
|
||||
[JsonProperty("num_triangles")]
|
||||
public long NumTriangles { get; set; }
|
||||
|
||||
[JsonProperty("base_vertex_index")]
|
||||
public long BaseVertexIndex { get; set; }
|
||||
|
||||
[JsonProperty("cloth_mapping_data")]
|
||||
public object[] ClothMappingData { get; set; }
|
||||
|
||||
[JsonProperty("bone_map")]
|
||||
public long[] BoneMap { get; set; }
|
||||
|
||||
[JsonProperty("num_vertices")]
|
||||
public long NumVertices { get; set; }
|
||||
|
||||
[JsonProperty("max_bone_influences")]
|
||||
public long MaxBoneInfluences { get; set; }
|
||||
|
||||
[JsonProperty("clothing_data")]
|
||||
public ClothingData ClothingData { get; set; }
|
||||
|
||||
[JsonProperty("disabled")]
|
||||
public bool Disabled { get; set; }
|
||||
}
|
||||
|
||||
public class ClothingData
|
||||
{
|
||||
[JsonProperty("asset_guid")]
|
||||
public string AssetGuid { get; set; }
|
||||
|
||||
[JsonProperty("asset_lod_index")]
|
||||
public long AssetLodIndex { get; set; }
|
||||
}
|
||||
|
||||
public class SkinWeightVertexBuffer
|
||||
{
|
||||
[JsonProperty("weights")]
|
||||
public Weight[] Weights { get; set; }
|
||||
|
||||
[JsonProperty("num_vertices")]
|
||||
public long NumVertices { get; set; }
|
||||
}
|
||||
|
||||
public class Weight
|
||||
{
|
||||
[JsonProperty("bone_index")]
|
||||
public long[] BoneIndex { get; set; }
|
||||
|
||||
[JsonProperty("bone_weight")]
|
||||
public long[] BoneWeight { get; set; }
|
||||
}
|
||||
|
||||
public class StaticMeshVertexBuffer
|
||||
{
|
||||
[JsonProperty("num_tex_coords")]
|
||||
public long NumTexCoords { get; set; }
|
||||
|
||||
[JsonProperty("num_vertices")]
|
||||
public long NumVertices { get; set; }
|
||||
|
||||
[JsonProperty("tangents")]
|
||||
public Tangents Tangents { get; set; }
|
||||
|
||||
[JsonProperty("uvs")]
|
||||
public Uvs Uvs { get; set; }
|
||||
}
|
||||
|
||||
public class Tangents
|
||||
{
|
||||
[JsonProperty("Low")]
|
||||
public TangentsLow[] Low { get; set; }
|
||||
}
|
||||
|
||||
public class TangentsLow
|
||||
{
|
||||
[JsonProperty("normal")]
|
||||
public BoxExtend Normal { get; set; }
|
||||
|
||||
[JsonProperty("tangent")]
|
||||
public BoxExtend Tangent { get; set; }
|
||||
}
|
||||
|
||||
public class Uvs
|
||||
{
|
||||
[JsonProperty("Low")]
|
||||
public UvsLow[] Low { get; set; }
|
||||
}
|
||||
|
||||
public class UvsLow
|
||||
{
|
||||
[JsonProperty("value")]
|
||||
public Value Value { get; set; }
|
||||
}
|
||||
|
||||
public class Value
|
||||
{
|
||||
[JsonProperty("x")]
|
||||
public long X { get; set; }
|
||||
|
||||
[JsonProperty("y")]
|
||||
public long Y { get; set; }
|
||||
}
|
||||
|
||||
public class Material
|
||||
{
|
||||
[JsonProperty("material_interface")]
|
||||
public string MaterialInterface { get; set; }
|
||||
|
||||
[JsonProperty("material_slot_name")]
|
||||
public string MaterialSlotName { get; set; }
|
||||
|
||||
[JsonProperty("uv_channel_data")]
|
||||
public UvChannelData UvChannelData { get; set; }
|
||||
}
|
||||
|
||||
public class UvChannelData
|
||||
{
|
||||
[JsonProperty("initialised")]
|
||||
public bool Initialised { get; set; }
|
||||
|
||||
[JsonProperty("override_densities")]
|
||||
public bool OverrideDensities { get; set; }
|
||||
|
||||
[JsonProperty("local_uv_densities")]
|
||||
public double[] LocalUvDensities { get; set; }
|
||||
}
|
||||
|
||||
public class RefSkeleton
|
||||
{
|
||||
[JsonProperty("ref_bone_info")]
|
||||
public RefBoneInfo[] RefBoneInfo { get; set; }
|
||||
|
||||
[JsonProperty("ref_bone_pose")]
|
||||
public RefBonePose[] RefBonePose { get; set; }
|
||||
|
||||
[JsonProperty("name_to_index")]
|
||||
public NameToIndex[][] NameToIndex { get; set; }
|
||||
}
|
||||
|
||||
public class RefBoneInfo
|
||||
{
|
||||
[JsonProperty("name")]
|
||||
public string Name { get; set; }
|
||||
|
||||
[JsonProperty("parent_index")]
|
||||
public long ParentIndex { get; set; }
|
||||
}
|
||||
|
||||
public class RefBonePose
|
||||
{
|
||||
[JsonProperty("rotation")]
|
||||
public BoxExtend Rotation { get; set; }
|
||||
|
||||
[JsonProperty("translation")]
|
||||
public BoxExtend Translation { get; set; }
|
||||
|
||||
[JsonProperty("scale_3d")]
|
||||
public BoxExtend Scale3D { get; set; }
|
||||
}
|
||||
|
||||
public class SuperObject
|
||||
{
|
||||
[JsonProperty("export_type")]
|
||||
public string ExportType { get; set; }
|
||||
|
||||
[JsonProperty("Skeleton")]
|
||||
public string Skeleton { get; set; }
|
||||
|
||||
[JsonProperty("LODInfo")]
|
||||
public LodInfo[] LodInfo { get; set; }
|
||||
|
||||
[JsonProperty("MinLod")]
|
||||
public MinLod MinLod { get; set; }
|
||||
|
||||
[JsonProperty("bHasBeenSimplified")]
|
||||
public bool BHasBeenSimplified { get; set; }
|
||||
|
||||
[JsonProperty("SamplingInfo")]
|
||||
public SamplingInfo SamplingInfo { get; set; }
|
||||
}
|
||||
|
||||
public class LodInfo
|
||||
{
|
||||
[JsonProperty("ScreenSize")]
|
||||
public MinLod ScreenSize { get; set; }
|
||||
|
||||
[JsonProperty("LODHysteresis")]
|
||||
public double LodHysteresis { get; set; }
|
||||
|
||||
[JsonProperty("LODMaterialMap")]
|
||||
public object[] LodMaterialMap { get; set; }
|
||||
|
||||
[JsonProperty("ReductionSettings")]
|
||||
public ReductionSettings ReductionSettings { get; set; }
|
||||
|
||||
[JsonProperty("BonesToRemove")]
|
||||
public object[] BonesToRemove { get; set; }
|
||||
|
||||
[JsonProperty("BonesToPrioritize")]
|
||||
public object[] BonesToPrioritize { get; set; }
|
||||
|
||||
[JsonProperty("WeightOfPrioritization")]
|
||||
public long WeightOfPrioritization { get; set; }
|
||||
|
||||
[JsonProperty("BakePose")]
|
||||
[JsonConverter(typeof(ParseStringConverter))]
|
||||
public long BakePose { get; set; }
|
||||
|
||||
[JsonProperty("BakePoseOverride")]
|
||||
[JsonConverter(typeof(ParseStringConverter))]
|
||||
public long BakePoseOverride { get; set; }
|
||||
|
||||
[JsonProperty("SourceImportFilename")]
|
||||
public string SourceImportFilename { get; set; }
|
||||
|
||||
[JsonProperty("bHasBeenSimplified")]
|
||||
public bool BHasBeenSimplified { get; set; }
|
||||
|
||||
[JsonProperty("bHasPerLODVertexColors")]
|
||||
public bool BHasPerLodVertexColors { get; set; }
|
||||
|
||||
[JsonProperty("bAllowCPUAccess")]
|
||||
public bool BAllowCpuAccess { get; set; }
|
||||
|
||||
[JsonProperty("bSupportUniformlyDistributedSampling")]
|
||||
public bool BSupportUniformlyDistributedSampling { get; set; }
|
||||
}
|
||||
|
||||
public class ReductionSettings
|
||||
{
|
||||
[JsonProperty("TerminationCriterion")]
|
||||
public string TerminationCriterion { get; set; }
|
||||
|
||||
[JsonProperty("NumOfTrianglesPercentage")]
|
||||
public double NumOfTrianglesPercentage { get; set; }
|
||||
|
||||
[JsonProperty("NumOfVertPercentage")]
|
||||
public double NumOfVertPercentage { get; set; }
|
||||
|
||||
[JsonProperty("MaxNumOfTriangles")]
|
||||
public long MaxNumOfTriangles { get; set; }
|
||||
|
||||
[JsonProperty("MaxNumOfVerts")]
|
||||
public long MaxNumOfVerts { get; set; }
|
||||
|
||||
[JsonProperty("MaxDeviationPercentage")]
|
||||
public double MaxDeviationPercentage { get; set; }
|
||||
|
||||
[JsonProperty("ReductionMethod")]
|
||||
public string ReductionMethod { get; set; }
|
||||
|
||||
[JsonProperty("SilhouetteImportance")]
|
||||
public string SilhouetteImportance { get; set; }
|
||||
|
||||
[JsonProperty("TextureImportance")]
|
||||
public string TextureImportance { get; set; }
|
||||
|
||||
[JsonProperty("ShadingImportance")]
|
||||
public string ShadingImportance { get; set; }
|
||||
|
||||
[JsonProperty("SkinningImportance")]
|
||||
public string SkinningImportance { get; set; }
|
||||
|
||||
[JsonProperty("bRemapMorphTargets")]
|
||||
public bool BRemapMorphTargets { get; set; }
|
||||
|
||||
[JsonProperty("bRecalcNormals")]
|
||||
public bool BRecalcNormals { get; set; }
|
||||
|
||||
[JsonProperty("WeldingThreshold")]
|
||||
public double WeldingThreshold { get; set; }
|
||||
|
||||
[JsonProperty("NormalsThreshold")]
|
||||
public long NormalsThreshold { get; set; }
|
||||
|
||||
[JsonProperty("MaxBonesPerVertex")]
|
||||
public long MaxBonesPerVertex { get; set; }
|
||||
|
||||
[JsonProperty("bEnforceBoneBoundaries")]
|
||||
public bool BEnforceBoneBoundaries { get; set; }
|
||||
|
||||
[JsonProperty("VolumeImportance")]
|
||||
public long VolumeImportance { get; set; }
|
||||
|
||||
[JsonProperty("bLockEdges")]
|
||||
public bool BLockEdges { get; set; }
|
||||
|
||||
[JsonProperty("BaseLOD")]
|
||||
public long BaseLod { get; set; }
|
||||
}
|
||||
|
||||
public class MinLod
|
||||
{
|
||||
[JsonProperty("cooked")]
|
||||
public bool Cooked { get; set; }
|
||||
|
||||
[JsonProperty("value")]
|
||||
public double Value { get; set; }
|
||||
}
|
||||
|
||||
public class SamplingInfo
|
||||
{
|
||||
[JsonProperty("BuiltData")]
|
||||
public BuiltData BuiltData { get; set; }
|
||||
}
|
||||
|
||||
public class BuiltData
|
||||
{
|
||||
[JsonProperty("WholeMeshBuiltData")]
|
||||
public WholeMeshBuiltDatum[] WholeMeshBuiltData { get; set; }
|
||||
}
|
||||
|
||||
public class WholeMeshBuiltDatum
|
||||
{
|
||||
[JsonProperty("prob")]
|
||||
public object[] Prob { get; set; }
|
||||
|
||||
[JsonProperty("alias")]
|
||||
public object[] Alias { get; set; }
|
||||
|
||||
[JsonProperty("total_weight")]
|
||||
public long TotalWeight { get; set; }
|
||||
}
|
||||
|
||||
public struct NameToIndex
|
||||
{
|
||||
public long? Integer;
|
||||
public string String;
|
||||
|
||||
public static implicit operator NameToIndex(long integer) => new NameToIndex { Integer = integer };
|
||||
public static implicit operator NameToIndex(string String) => new NameToIndex { String = String };
|
||||
}
|
||||
|
||||
public partial class MeshesParser
|
||||
{
|
||||
public static MeshesParser[] FromJson(string json) => JsonConvert.DeserializeObject<MeshesParser[]>(json, Converter.Settings);
|
||||
}
|
||||
|
||||
public static class Serialize
|
||||
{
|
||||
public static string ToJson(this MeshesParser[] self) => JsonConvert.SerializeObject(self, Converter.Settings);
|
||||
}
|
||||
|
||||
internal static class Converter
|
||||
{
|
||||
public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
|
||||
{
|
||||
MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
|
||||
DateParseHandling = DateParseHandling.None,
|
||||
Converters =
|
||||
{
|
||||
NameToIndexConverter.Singleton,
|
||||
new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
internal class NameToIndexConverter : JsonConverter
|
||||
{
|
||||
public override bool CanConvert(Type t) => t == typeof(NameToIndex) || t == typeof(NameToIndex?);
|
||||
|
||||
public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
|
||||
{
|
||||
switch (reader.TokenType)
|
||||
{
|
||||
case JsonToken.Integer:
|
||||
var integerValue = serializer.Deserialize<long>(reader);
|
||||
return new NameToIndex { Integer = integerValue };
|
||||
case JsonToken.String:
|
||||
case JsonToken.Date:
|
||||
var stringValue = serializer.Deserialize<string>(reader);
|
||||
return new NameToIndex { String = stringValue };
|
||||
}
|
||||
throw new Exception("Cannot unmarshal type NameToIndex");
|
||||
}
|
||||
|
||||
public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
|
||||
{
|
||||
var value = (NameToIndex)untypedValue;
|
||||
if (value.Integer != null)
|
||||
{
|
||||
serializer.Serialize(writer, value.Integer.Value);
|
||||
return;
|
||||
}
|
||||
if (value.String != null)
|
||||
{
|
||||
serializer.Serialize(writer, value.String);
|
||||
return;
|
||||
}
|
||||
throw new Exception("Cannot marshal type NameToIndex");
|
||||
}
|
||||
|
||||
public static readonly NameToIndexConverter Singleton = new NameToIndexConverter();
|
||||
}
|
||||
|
||||
internal class ParseStringConverter : JsonConverter
|
||||
{
|
||||
public override bool CanConvert(Type t) => t == typeof(long) || t == typeof(long?);
|
||||
|
||||
public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
|
||||
{
|
||||
if (reader.TokenType == JsonToken.Null) return null;
|
||||
var value = serializer.Deserialize<string>(reader);
|
||||
long l;
|
||||
if (Int64.TryParse(value, out l))
|
||||
{
|
||||
return l;
|
||||
}
|
||||
throw new Exception("Cannot unmarshal type long");
|
||||
}
|
||||
|
||||
public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
|
||||
{
|
||||
if (untypedValue == null)
|
||||
{
|
||||
serializer.Serialize(writer, null);
|
||||
return;
|
||||
}
|
||||
var value = (long)untypedValue;
|
||||
serializer.Serialize(writer, value.ToString());
|
||||
}
|
||||
|
||||
public static readonly ParseStringConverter Singleton = new ParseStringConverter();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,218 +0,0 @@
|
|||
using System.Globalization;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Converters;
|
||||
|
||||
namespace FModel.Parser.Quests
|
||||
{
|
||||
public partial class QuestParser
|
||||
{
|
||||
[JsonProperty("export_type")]
|
||||
public string ExportType { get; set; }
|
||||
|
||||
[JsonProperty("QuestType")]
|
||||
public string QuestType { get; set; }
|
||||
|
||||
[JsonProperty("bAthenaMustCompleteInSingleMatch")]
|
||||
public bool BAthenaMustCompleteInSingleMatch { get; set; }
|
||||
|
||||
[JsonProperty("bIncludedInCategories")]
|
||||
public bool BIncludedInCategories { get; set; }
|
||||
|
||||
[JsonProperty("ObjectiveCompletionCount")]
|
||||
public long ObjectiveCompletionCount { get; set; }
|
||||
|
||||
[JsonProperty("Rewards")]
|
||||
public Reward[] Rewards { get; set; }
|
||||
|
||||
[JsonProperty("HiddenRewards")]
|
||||
public HiddenRewards[] HiddenRewards { get; set; }
|
||||
|
||||
[JsonProperty("Objectives")]
|
||||
public Objective[] Objectives { get; set; }
|
||||
|
||||
[JsonProperty("Weight")]
|
||||
public double Weight { get; set; }
|
||||
|
||||
[JsonProperty("CompletionText")]
|
||||
public FTextInfos CompletionText { get; set; }
|
||||
|
||||
[JsonProperty("GrantToProfileType")]
|
||||
public string GrantToProfileType { get; set; }
|
||||
|
||||
[JsonProperty("DisplayName")]
|
||||
public FTextInfos DisplayName { get; set; }
|
||||
|
||||
[JsonProperty("Description")]
|
||||
public FTextInfos Description { get; set; }
|
||||
|
||||
[JsonProperty("GameplayTags")]
|
||||
public GameplayTags GameplayTags { get; set; }
|
||||
|
||||
[JsonProperty("SmallPreviewImage")]
|
||||
public LargePreviewImage SmallPreviewImage { get; set; }
|
||||
|
||||
[JsonProperty("LargePreviewImage")]
|
||||
public LargePreviewImage LargePreviewImage { get; set; }
|
||||
}
|
||||
|
||||
public partial class FTextInfos
|
||||
{
|
||||
[JsonProperty("key")]
|
||||
public string Key { get; set; }
|
||||
|
||||
[JsonProperty("source_string")]
|
||||
public string SourceString { get; set; }
|
||||
}
|
||||
|
||||
public class GameplayTags
|
||||
{
|
||||
[JsonProperty("gameplay_tags")]
|
||||
public string[] GameplayTagsGameplayTags { get; set; }
|
||||
}
|
||||
|
||||
public class LargePreviewImage
|
||||
{
|
||||
[JsonProperty("asset_path_name")]
|
||||
public string AssetPathName { get; set; }
|
||||
|
||||
[JsonProperty("sub_path_string")]
|
||||
public string SubPathString { get; set; }
|
||||
}
|
||||
|
||||
public class Objective
|
||||
{
|
||||
[JsonProperty("BackendName")]
|
||||
public string BackendName { get; set; }
|
||||
|
||||
[JsonProperty("ObjectiveStatHandle")]
|
||||
public ObjectiveStatHandle ObjectiveStatHandle { get; set; }
|
||||
|
||||
[JsonProperty("AlternativeStatHandles")]
|
||||
public object[] AlternativeStatHandles { get; set; }
|
||||
|
||||
[JsonProperty("ItemEvent")]
|
||||
public string ItemEvent { get; set; }
|
||||
|
||||
[JsonProperty("bHidden")]
|
||||
public bool BHidden { get; set; }
|
||||
|
||||
[JsonProperty("bRequirePrimaryMissionCompletion")]
|
||||
public bool BRequirePrimaryMissionCompletion { get; set; }
|
||||
|
||||
[JsonProperty("bCanProgressInZone")]
|
||||
public bool BCanProgressInZone { get; set; }
|
||||
|
||||
[JsonProperty("bDisplayDynamicAnnouncementUpdate")]
|
||||
public bool BDisplayDynamicAnnouncementUpdate { get; set; }
|
||||
|
||||
[JsonProperty("DynamicStatusUpdateType")]
|
||||
public string DynamicStatusUpdateType { get; set; }
|
||||
|
||||
[JsonProperty("LinkVaultTab")]
|
||||
public string LinkVaultTab { get; set; }
|
||||
|
||||
[JsonProperty("LinkToItemManagement")]
|
||||
public string LinkToItemManagement { get; set; }
|
||||
|
||||
[JsonProperty("ItemReference")]
|
||||
public LargePreviewImage ItemReference { get; set; }
|
||||
|
||||
[JsonProperty("ItemTemplateIdOverride")]
|
||||
public string ItemTemplateIdOverride { get; set; }
|
||||
|
||||
[JsonProperty("LinkSquadID")]
|
||||
public string LinkSquadId { get; set; }
|
||||
|
||||
[JsonProperty("LinkSquadIndex")]
|
||||
public long LinkSquadIndex { get; set; }
|
||||
|
||||
[JsonProperty("Description")]
|
||||
public FTextInfos Description { get; set; }
|
||||
|
||||
[JsonProperty("HudShortDescription")]
|
||||
public FTextInfos HudShortDescription { get; set; }
|
||||
|
||||
[JsonProperty("HudIcon")]
|
||||
public LargePreviewImage HudIcon { get; set; }
|
||||
|
||||
[JsonProperty("Count")]
|
||||
public long Count { get; set; }
|
||||
|
||||
[JsonProperty("Stage")]
|
||||
public long Stage { get; set; }
|
||||
|
||||
[JsonProperty("DynamicStatusUpdatePercentInterval")]
|
||||
public long DynamicStatusUpdatePercentInterval { get; set; }
|
||||
|
||||
[JsonProperty("DynamicUpdateCompletionDelay")]
|
||||
public long DynamicUpdateCompletionDelay { get; set; }
|
||||
|
||||
[JsonProperty("ScriptedAction")]
|
||||
public LargePreviewImage ScriptedAction { get; set; }
|
||||
}
|
||||
|
||||
public class ObjectiveStatHandle
|
||||
{
|
||||
[JsonProperty("DataTable")]
|
||||
public string DataTable { get; set; }
|
||||
|
||||
[JsonProperty("RowName")]
|
||||
public string RowName { get; set; }
|
||||
}
|
||||
|
||||
public class Reward
|
||||
{
|
||||
[JsonProperty("ItemPrimaryAssetId")]
|
||||
public ItemPrimaryAssetId ItemPrimaryAssetId { get; set; }
|
||||
|
||||
[JsonProperty("Quantity")]
|
||||
public long Quantity { get; set; }
|
||||
}
|
||||
|
||||
public class HiddenRewards
|
||||
{
|
||||
[JsonProperty("TemplateId")]
|
||||
public string TemplateId { get; set; }
|
||||
|
||||
[JsonProperty("Quantity")]
|
||||
public long Quantity { get; set; }
|
||||
}
|
||||
|
||||
public class ItemPrimaryAssetId
|
||||
{
|
||||
[JsonProperty("PrimaryAssetType")]
|
||||
public PrimaryAssetType PrimaryAssetType { get; set; }
|
||||
|
||||
[JsonProperty("PrimaryAssetName")]
|
||||
public string PrimaryAssetName { get; set; }
|
||||
}
|
||||
|
||||
public class PrimaryAssetType
|
||||
{
|
||||
[JsonProperty("Name")]
|
||||
public string Name { get; set; }
|
||||
}
|
||||
|
||||
public partial class QuestParser
|
||||
{
|
||||
public static QuestParser[] FromJson(string json) => JsonConvert.DeserializeObject<QuestParser[]>(json, Converter.Settings);
|
||||
}
|
||||
|
||||
public static class Serialize
|
||||
{
|
||||
public static string ToJson(this QuestParser[] self) => JsonConvert.SerializeObject(self, Converter.Settings);
|
||||
}
|
||||
|
||||
internal static class Converter
|
||||
{
|
||||
public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
|
||||
{
|
||||
MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
|
||||
DateParseHandling = DateParseHandling.None,
|
||||
Converters =
|
||||
{
|
||||
new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
@ -1,95 +0,0 @@
|
|||
using System.Globalization;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Converters;
|
||||
|
||||
namespace FModel.Parser.RenderMat
|
||||
{
|
||||
public partial class RenderSwitchMaterial
|
||||
{
|
||||
[JsonProperty("export_type")]
|
||||
public string ExportType { get; set; }
|
||||
|
||||
[JsonProperty("Parent")]
|
||||
public string Parent { get; set; }
|
||||
|
||||
[JsonProperty("ScalarParameterValues")]
|
||||
public ScalarParameterValue[] ScalarParameterValues { get; set; }
|
||||
|
||||
[JsonProperty("TextureParameterValues")]
|
||||
public TextureParameterValue[] TextureParameterValues { get; set; }
|
||||
|
||||
[JsonProperty("BasePropertyOverrides")]
|
||||
public BasePropertyOverrides BasePropertyOverrides { get; set; }
|
||||
}
|
||||
|
||||
public class BasePropertyOverrides
|
||||
{
|
||||
[JsonProperty("BlendMode")]
|
||||
public string BlendMode { get; set; }
|
||||
|
||||
[JsonProperty("ShadingModel")]
|
||||
public string ShadingModel { get; set; }
|
||||
|
||||
[JsonProperty("OpacityMaskClipValue")]
|
||||
public double OpacityMaskClipValue { get; set; }
|
||||
}
|
||||
|
||||
public class ScalarParameterValue
|
||||
{
|
||||
[JsonProperty("ParameterInfo")]
|
||||
public ParameterInfo ParameterInfo { get; set; }
|
||||
|
||||
[JsonProperty("ParameterValue")]
|
||||
public long ParameterValue { get; set; }
|
||||
|
||||
[JsonProperty("ExpressionGUID")]
|
||||
public string ExpressionGuid { get; set; }
|
||||
}
|
||||
|
||||
public class ParameterInfo
|
||||
{
|
||||
[JsonProperty("Name")]
|
||||
public string Name { get; set; }
|
||||
|
||||
[JsonProperty("Association")]
|
||||
public string Association { get; set; }
|
||||
|
||||
[JsonProperty("Index")]
|
||||
public long Index { get; set; }
|
||||
}
|
||||
|
||||
public class TextureParameterValue
|
||||
{
|
||||
[JsonProperty("ParameterInfo")]
|
||||
public ParameterInfo ParameterInfo { get; set; }
|
||||
|
||||
[JsonProperty("ParameterValue")]
|
||||
public string ParameterValue { get; set; }
|
||||
|
||||
[JsonProperty("ExpressionGUID")]
|
||||
public string ExpressionGuid { get; set; }
|
||||
}
|
||||
|
||||
public partial class RenderSwitchMaterial
|
||||
{
|
||||
public static RenderSwitchMaterial[] FromJson(string json) => JsonConvert.DeserializeObject<RenderSwitchMaterial[]>(json, Converter.Settings);
|
||||
}
|
||||
|
||||
public static class Serialize
|
||||
{
|
||||
public static string ToJson(this RenderSwitchMaterial[] self) => JsonConvert.SerializeObject(self, Converter.Settings);
|
||||
}
|
||||
|
||||
internal static class Converter
|
||||
{
|
||||
public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
|
||||
{
|
||||
MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
|
||||
DateParseHandling = DateParseHandling.None,
|
||||
Converters =
|
||||
{
|
||||
new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
@ -1,538 +0,0 @@
|
|||
// <auto-generated />
|
||||
//
|
||||
// To parse this JSON data, add NuGet 'Newtonsoft.Json' then do:
|
||||
//
|
||||
// using FModel.Parser.Weapons;
|
||||
//
|
||||
// var weaponStatParser = WeaponStatParser.FromJson(jsonString);
|
||||
|
||||
namespace FModel.Parser.Weapons
|
||||
{
|
||||
using System;
|
||||
|
||||
using System.Globalization;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Converters;
|
||||
|
||||
public partial class WeaponStatParser
|
||||
{
|
||||
[JsonProperty("export_type")]
|
||||
public string ExportType { get; set; }
|
||||
|
||||
[JsonProperty("Spread")]
|
||||
public double Spread { get; set; }
|
||||
|
||||
[JsonProperty("SpreadDownsights")]
|
||||
public double SpreadDownsights { get; set; }
|
||||
|
||||
[JsonProperty("StandingStillSpreadMultiplier")]
|
||||
public double StandingStillSpreadMultiplier { get; set; }
|
||||
|
||||
[JsonProperty("AthenaCrouchingSpreadMultiplier")]
|
||||
public double AthenaCrouchingSpreadMultiplier { get; set; }
|
||||
|
||||
[JsonProperty("AthenaJumpingFallingSpreadMultiplier")]
|
||||
public long AthenaJumpingFallingSpreadMultiplier { get; set; }
|
||||
|
||||
[JsonProperty("AthenaSprintingSpreadMultiplier")]
|
||||
public double AthenaSprintingSpreadMultiplier { get; set; }
|
||||
|
||||
[JsonProperty("MinSpeedForSpreadMultiplier")]
|
||||
public long MinSpeedForSpreadMultiplier { get; set; }
|
||||
|
||||
[JsonProperty("MaxSpeedForSpreadMultiplier")]
|
||||
public long MaxSpeedForSpreadMultiplier { get; set; }
|
||||
|
||||
[JsonProperty("SpreadDownsightsAdditionalCooldownTime")]
|
||||
public long SpreadDownsightsAdditionalCooldownTime { get; set; }
|
||||
|
||||
[JsonProperty("HeatX1")]
|
||||
public double HeatX1 { get; set; }
|
||||
|
||||
[JsonProperty("HeatY1")]
|
||||
public double HeatY1 { get; set; }
|
||||
|
||||
[JsonProperty("HeatX2")]
|
||||
public double HeatX2 { get; set; }
|
||||
|
||||
[JsonProperty("HeatY2")]
|
||||
public double HeatY2 { get; set; }
|
||||
|
||||
[JsonProperty("HeatX3")]
|
||||
public long HeatX3 { get; set; }
|
||||
|
||||
[JsonProperty("HeatY3")]
|
||||
public double HeatY3 { get; set; }
|
||||
|
||||
[JsonProperty("HeatXScale")]
|
||||
public long HeatXScale { get; set; }
|
||||
|
||||
[JsonProperty("HeatYScale")]
|
||||
public long HeatYScale { get; set; }
|
||||
|
||||
[JsonProperty("CoolX1")]
|
||||
public double CoolX1 { get; set; }
|
||||
|
||||
[JsonProperty("CoolY1")]
|
||||
public double CoolY1 { get; set; }
|
||||
|
||||
[JsonProperty("CoolX2")]
|
||||
public double CoolX2 { get; set; }
|
||||
|
||||
[JsonProperty("CoolY2")]
|
||||
public long CoolY2 { get; set; }
|
||||
|
||||
[JsonProperty("CoolX3")]
|
||||
public long CoolX3 { get; set; }
|
||||
|
||||
[JsonProperty("CoolY3")]
|
||||
public long CoolY3 { get; set; }
|
||||
|
||||
[JsonProperty("CoolXScale")]
|
||||
public long CoolXScale { get; set; }
|
||||
|
||||
[JsonProperty("CoolYScale")]
|
||||
public long CoolYScale { get; set; }
|
||||
|
||||
[JsonProperty("PerfectAimCooldown")]
|
||||
public long PerfectAimCooldown { get; set; }
|
||||
|
||||
[JsonProperty("BulletsPerCartridge")]
|
||||
public long BulletsPerCartridge { get; set; }
|
||||
|
||||
[JsonProperty("FiringRate")]
|
||||
public double FiringRate { get; set; }
|
||||
|
||||
[JsonProperty("ROFScale")]
|
||||
public long RofScale { get; set; }
|
||||
|
||||
[JsonProperty("BurstFiringRate")]
|
||||
public long BurstFiringRate { get; set; }
|
||||
|
||||
[JsonProperty("FiringRateDownsightsMultiplier")]
|
||||
public long FiringRateDownsightsMultiplier { get; set; }
|
||||
|
||||
[JsonProperty("AutofireAcquisitionDelay")]
|
||||
public double AutofireAcquisitionDelay { get; set; }
|
||||
|
||||
[JsonProperty("AutofireCooldown")]
|
||||
public long AutofireCooldown { get; set; }
|
||||
|
||||
[JsonProperty("RecoilVert")]
|
||||
public double RecoilVert { get; set; }
|
||||
|
||||
[JsonProperty("RecoilVertScale")]
|
||||
public long RecoilVertScale { get; set; }
|
||||
|
||||
[JsonProperty("RecoilVertScaleGamepad")]
|
||||
public double RecoilVertScaleGamepad { get; set; }
|
||||
|
||||
[JsonProperty("VertRecoilDownChance")]
|
||||
public long VertRecoilDownChance { get; set; }
|
||||
|
||||
[JsonProperty("RecoilHoriz")]
|
||||
public double RecoilHoriz { get; set; }
|
||||
|
||||
[JsonProperty("RecoilHorizScale")]
|
||||
public long RecoilHorizScale { get; set; }
|
||||
|
||||
[JsonProperty("RecoilHorizScaleGamepad")]
|
||||
public long RecoilHorizScaleGamepad { get; set; }
|
||||
|
||||
[JsonProperty("RecoilInterpSpeed")]
|
||||
public long RecoilInterpSpeed { get; set; }
|
||||
|
||||
[JsonProperty("RecoilRecoveryInterpSpeed")]
|
||||
public double RecoilRecoveryInterpSpeed { get; set; }
|
||||
|
||||
[JsonProperty("RecoilRecoveryDelay")]
|
||||
public long RecoilRecoveryDelay { get; set; }
|
||||
|
||||
[JsonProperty("RecoilRecoveryFraction")]
|
||||
public long RecoilRecoveryFraction { get; set; }
|
||||
|
||||
[JsonProperty("RecoilDownsightsMultiplier")]
|
||||
public double RecoilDownsightsMultiplier { get; set; }
|
||||
|
||||
[JsonProperty("AthenaRecoilMagnitudeMin")]
|
||||
public long AthenaRecoilMagnitudeMin { get; set; }
|
||||
|
||||
[JsonProperty("AthenaRecoilMagnitudeMax")]
|
||||
public long AthenaRecoilMagnitudeMax { get; set; }
|
||||
|
||||
[JsonProperty("AthenaRecoilMagnitudeScale")]
|
||||
public long AthenaRecoilMagnitudeScale { get; set; }
|
||||
|
||||
[JsonProperty("AthenaRecoilAngleMin")]
|
||||
public long AthenaRecoilAngleMin { get; set; }
|
||||
|
||||
[JsonProperty("AthenaRecoilAngleMax")]
|
||||
public long AthenaRecoilAngleMax { get; set; }
|
||||
|
||||
[JsonProperty("AthenaRecoilRollMagnitudeMin")]
|
||||
public long AthenaRecoilRollMagnitudeMin { get; set; }
|
||||
|
||||
[JsonProperty("AthenaRecoilRollMagnitudeMax")]
|
||||
public long AthenaRecoilRollMagnitudeMax { get; set; }
|
||||
|
||||
[JsonProperty("AthenaRecoilInterpSpeed")]
|
||||
public long AthenaRecoilInterpSpeed { get; set; }
|
||||
|
||||
[JsonProperty("AthenaRecoilRecoveryInterpSpeed")]
|
||||
public long AthenaRecoilRecoveryInterpSpeed { get; set; }
|
||||
|
||||
[JsonProperty("AthenaRecoilDownsightsMultiplier")]
|
||||
public double AthenaRecoilDownsightsMultiplier { get; set; }
|
||||
|
||||
[JsonProperty("AthenaRecoilHipFireMultiplier")]
|
||||
public long AthenaRecoilHipFireMultiplier { get; set; }
|
||||
|
||||
[JsonProperty("AthenaAimAssistRange")]
|
||||
public long AthenaAimAssistRange { get; set; }
|
||||
|
||||
[JsonProperty("ADSTransitionInTime")]
|
||||
public double AdsTransitionInTime { get; set; }
|
||||
|
||||
[JsonProperty("ADSTransitionOutTime")]
|
||||
public double AdsTransitionOutTime { get; set; }
|
||||
|
||||
[JsonProperty("MaxSpareAmmo")]
|
||||
public long MaxSpareAmmo { get; set; }
|
||||
|
||||
[JsonProperty("BulletsPerTracer")]
|
||||
public long BulletsPerTracer { get; set; }
|
||||
|
||||
[JsonProperty("AIDelayBeforeFiringMin")]
|
||||
public long AiDelayBeforeFiringMin { get; set; }
|
||||
|
||||
[JsonProperty("AIDelayBeforeFiringMax")]
|
||||
public double AiDelayBeforeFiringMax { get; set; }
|
||||
|
||||
[JsonProperty("AIFireDurationMin")]
|
||||
public double AiFireDurationMin { get; set; }
|
||||
|
||||
[JsonProperty("AIFireDurationMax")]
|
||||
public double AiFireDurationMax { get; set; }
|
||||
|
||||
[JsonProperty("AIMinSpreadDuration")]
|
||||
public long AiMinSpreadDuration { get; set; }
|
||||
|
||||
[JsonProperty("AIMaxSpreadDuration")]
|
||||
public long AiMaxSpreadDuration { get; set; }
|
||||
|
||||
[JsonProperty("AIDurationSpreadMultiplier")]
|
||||
public long AiDurationSpreadMultiplier { get; set; }
|
||||
|
||||
[JsonProperty("AIAdditionalSpreadForTargetMovingLaterally")]
|
||||
public long AiAdditionalSpreadForTargetMovingLaterally { get; set; }
|
||||
|
||||
[JsonProperty("AIAthenaHearFiringNoiseRange")]
|
||||
public long AiAthenaHearFiringNoiseRange { get; set; }
|
||||
|
||||
[JsonProperty("EQSDensity")]
|
||||
public long EqsDensity { get; set; }
|
||||
|
||||
[JsonProperty("MinApproachRange")]
|
||||
public long MinApproachRange { get; set; }
|
||||
|
||||
[JsonProperty("MinActualRange")]
|
||||
public long MinActualRange { get; set; }
|
||||
|
||||
[JsonProperty("MinPreferredRange")]
|
||||
public long MinPreferredRange { get; set; }
|
||||
|
||||
[JsonProperty("MinPreferredRangeEQS")]
|
||||
public long MinPreferredRangeEqs { get; set; }
|
||||
|
||||
[JsonProperty("MaxPreferredRangeEQS")]
|
||||
public long MaxPreferredRangeEqs { get; set; }
|
||||
|
||||
[JsonProperty("MaxPreferredRange")]
|
||||
public long MaxPreferredRange { get; set; }
|
||||
|
||||
[JsonProperty("MaxActualRange")]
|
||||
public long MaxActualRange { get; set; }
|
||||
|
||||
[JsonProperty("MaxApproachRange")]
|
||||
public long MaxApproachRange { get; set; }
|
||||
|
||||
[JsonProperty("SweepRadius")]
|
||||
public long SweepRadius { get; set; }
|
||||
|
||||
[JsonProperty("AutoReloadDelayOverride")]
|
||||
public long AutoReloadDelayOverride { get; set; }
|
||||
|
||||
[JsonProperty("OverheatingMaxValue")]
|
||||
public long OverheatingMaxValue { get; set; }
|
||||
|
||||
[JsonProperty("OverheatHeatingValue")]
|
||||
public long OverheatHeatingValue { get; set; }
|
||||
|
||||
[JsonProperty("OverheatingCoolingValue")]
|
||||
public long OverheatingCoolingValue { get; set; }
|
||||
|
||||
[JsonProperty("HeatingCooldownDelay")]
|
||||
public long HeatingCooldownDelay { get; set; }
|
||||
|
||||
[JsonProperty("OverheatedCooldownDelay")]
|
||||
public long OverheatedCooldownDelay { get; set; }
|
||||
|
||||
[JsonProperty("FortHomingTurnSpeedMin")]
|
||||
public long FortHomingTurnSpeedMin { get; set; }
|
||||
|
||||
[JsonProperty("FortHomingTurnSpeedMax")]
|
||||
public long FortHomingTurnSpeedMax { get; set; }
|
||||
|
||||
[JsonProperty("FortHomingTimeUntilMaxTurnSpeed")]
|
||||
public long FortHomingTimeUntilMaxTurnSpeed { get; set; }
|
||||
|
||||
[JsonProperty("BaseLevel")]
|
||||
public long BaseLevel { get; set; }
|
||||
|
||||
[JsonProperty("NamedWeightRow")]
|
||||
public string NamedWeightRow { get; set; }
|
||||
|
||||
[JsonProperty("DmgPB")]
|
||||
public long DmgPb { get; set; }
|
||||
|
||||
[JsonProperty("DmgMid")]
|
||||
public double DmgMid { get; set; }
|
||||
|
||||
[JsonProperty("DmgLong")]
|
||||
public double DmgLong { get; set; }
|
||||
|
||||
[JsonProperty("DmgMaxRange")]
|
||||
public double DmgMaxRange { get; set; }
|
||||
|
||||
[JsonProperty("EnvDmgPB")]
|
||||
public long EnvDmgPb { get; set; }
|
||||
|
||||
[JsonProperty("EnvDmgMid")]
|
||||
public long EnvDmgMid { get; set; }
|
||||
|
||||
[JsonProperty("EnvDmgLong")]
|
||||
public long EnvDmgLong { get; set; }
|
||||
|
||||
[JsonProperty("EnvDmgMaxRange")]
|
||||
public long EnvDmgMaxRange { get; set; }
|
||||
|
||||
[JsonProperty("ImpactDmgPB")]
|
||||
public long ImpactDmgPb { get; set; }
|
||||
|
||||
[JsonProperty("ImpactDmgMid")]
|
||||
public long ImpactDmgMid { get; set; }
|
||||
|
||||
[JsonProperty("ImpactDmgLong")]
|
||||
public double ImpactDmgLong { get; set; }
|
||||
|
||||
[JsonProperty("ImpactDmgMaxRange")]
|
||||
public double ImpactDmgMaxRange { get; set; }
|
||||
|
||||
[JsonProperty("bForceControl")]
|
||||
public bool BForceControl { get; set; }
|
||||
|
||||
[JsonProperty("RngPB")]
|
||||
public long RngPb { get; set; }
|
||||
|
||||
[JsonProperty("RngMid")]
|
||||
public long RngMid { get; set; }
|
||||
|
||||
[JsonProperty("RngLong")]
|
||||
public long RngLong { get; set; }
|
||||
|
||||
[JsonProperty("RngMax")]
|
||||
public long RngMax { get; set; }
|
||||
|
||||
[JsonProperty("DmgScaleTable")]
|
||||
[JsonConverter(typeof(ParseStringConverter))]
|
||||
public long DmgScaleTable { get; set; }
|
||||
|
||||
[JsonProperty("DmgScaleTableRow")]
|
||||
public string DmgScaleTableRow { get; set; }
|
||||
|
||||
[JsonProperty("DmgScale")]
|
||||
public long DmgScale { get; set; }
|
||||
|
||||
[JsonProperty("EnvDmgScaleTable")]
|
||||
[JsonConverter(typeof(ParseStringConverter))]
|
||||
public long EnvDmgScaleTable { get; set; }
|
||||
|
||||
[JsonProperty("EnvDmgScaleTableRow")]
|
||||
public string EnvDmgScaleTableRow { get; set; }
|
||||
|
||||
[JsonProperty("EnvDmgScale")]
|
||||
public long EnvDmgScale { get; set; }
|
||||
|
||||
[JsonProperty("ImpactDmgScaleTable")]
|
||||
[JsonConverter(typeof(ParseStringConverter))]
|
||||
public long ImpactDmgScaleTable { get; set; }
|
||||
|
||||
[JsonProperty("ImpactDmgScaleTableRow")]
|
||||
public string ImpactDmgScaleTableRow { get; set; }
|
||||
|
||||
[JsonProperty("ImpactDmgScale")]
|
||||
public long ImpactDmgScale { get; set; }
|
||||
|
||||
[JsonProperty("SurfaceRatioRowName")]
|
||||
public string SurfaceRatioRowName { get; set; }
|
||||
|
||||
[JsonProperty("DamageZone_Light")]
|
||||
public long DamageZoneLight { get; set; }
|
||||
|
||||
[JsonProperty("DamageZone_Normal")]
|
||||
public long DamageZoneNormal { get; set; }
|
||||
|
||||
[JsonProperty("DamageZone_Critical")]
|
||||
public long DamageZoneCritical { get; set; }
|
||||
|
||||
[JsonProperty("DamageZone_Vulnerability")]
|
||||
public long DamageZoneVulnerability { get; set; }
|
||||
|
||||
[JsonProperty("KnockbackMagnitude")]
|
||||
public long KnockbackMagnitude { get; set; }
|
||||
|
||||
[JsonProperty("MidRangeKnockbackMagnitude")]
|
||||
public long MidRangeKnockbackMagnitude { get; set; }
|
||||
|
||||
[JsonProperty("LongRangeKnockbackMagnitude")]
|
||||
public long LongRangeKnockbackMagnitude { get; set; }
|
||||
|
||||
[JsonProperty("KnockbackZAngle")]
|
||||
public long KnockbackZAngle { get; set; }
|
||||
|
||||
[JsonProperty("StunTime")]
|
||||
public long StunTime { get; set; }
|
||||
|
||||
[JsonProperty("StunScale")]
|
||||
public long StunScale { get; set; }
|
||||
|
||||
[JsonProperty("Durability")]
|
||||
public string Durability { get; set; }
|
||||
|
||||
[JsonProperty("DurabilityRowName")]
|
||||
public string DurabilityRowName { get; set; }
|
||||
|
||||
[JsonProperty("DurabilityScale")]
|
||||
public long DurabilityScale { get; set; }
|
||||
|
||||
[JsonProperty("DurabilityPerUse")]
|
||||
public long DurabilityPerUse { get; set; }
|
||||
|
||||
[JsonProperty("DiceCritChance")]
|
||||
public long DiceCritChance { get; set; }
|
||||
|
||||
[JsonProperty("DiceCritDamageMultiplier")]
|
||||
public long DiceCritDamageMultiplier { get; set; }
|
||||
|
||||
[JsonProperty("ReloadTime")]
|
||||
public double ReloadTime { get; set; }
|
||||
|
||||
[JsonProperty("ReloadScale")]
|
||||
public long ReloadScale { get; set; }
|
||||
|
||||
[JsonProperty("ReloadType")]
|
||||
public string ReloadType { get; set; }
|
||||
|
||||
[JsonProperty("bAllowReloadInterrupt")]
|
||||
public bool BAllowReloadInterrupt { get; set; }
|
||||
|
||||
[JsonProperty("bReloadInterruptIsImmediate")]
|
||||
public bool BReloadInterruptIsImmediate { get; set; }
|
||||
|
||||
[JsonProperty("NumIndividualBulletsToReload")]
|
||||
public long NumIndividualBulletsToReload { get; set; }
|
||||
|
||||
[JsonProperty("ClipSize")]
|
||||
public long ClipSize { get; set; }
|
||||
|
||||
[JsonProperty("ClipScale")]
|
||||
public long ClipScale { get; set; }
|
||||
|
||||
[JsonProperty("InitialClips")]
|
||||
public long InitialClips { get; set; }
|
||||
|
||||
[JsonProperty("CartridgePerFire")]
|
||||
public long CartridgePerFire { get; set; }
|
||||
|
||||
[JsonProperty("AmmoCostPerFire")]
|
||||
public long AmmoCostPerFire { get; set; }
|
||||
|
||||
[JsonProperty("MaxAmmoCostPerFire")]
|
||||
public long MaxAmmoCostPerFire { get; set; }
|
||||
|
||||
[JsonProperty("MinChargeTime")]
|
||||
public long MinChargeTime { get; set; }
|
||||
|
||||
[JsonProperty("MaxChargeTime")]
|
||||
public long MaxChargeTime { get; set; }
|
||||
|
||||
[JsonProperty("ChargeDownTime")]
|
||||
public long ChargeDownTime { get; set; }
|
||||
|
||||
[JsonProperty("MinChargeDamageMultiplier")]
|
||||
public long MinChargeDamageMultiplier { get; set; }
|
||||
|
||||
[JsonProperty("MaxChargeDamageMultiplier")]
|
||||
public long MaxChargeDamageMultiplier { get; set; }
|
||||
|
||||
[JsonProperty("EquipAnimRate")]
|
||||
public long EquipAnimRate { get; set; }
|
||||
|
||||
[JsonProperty("QuickBarSlotCooldownDuration")]
|
||||
public long QuickBarSlotCooldownDuration { get; set; }
|
||||
}
|
||||
|
||||
public partial class WeaponStatParser
|
||||
{
|
||||
public static WeaponStatParser FromJson(string json) => JsonConvert.DeserializeObject<WeaponStatParser>(json, FModel.Parser.Weapons.Converter.Settings);
|
||||
}
|
||||
|
||||
public static class Serialize
|
||||
{
|
||||
public static string ToJson(this WeaponStatParser self) => JsonConvert.SerializeObject(self, FModel.Parser.Weapons.Converter.Settings);
|
||||
}
|
||||
|
||||
internal static class Converter
|
||||
{
|
||||
public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
|
||||
{
|
||||
MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
|
||||
DateParseHandling = DateParseHandling.None,
|
||||
Converters =
|
||||
{
|
||||
new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
internal class ParseStringConverter : JsonConverter
|
||||
{
|
||||
public override bool CanConvert(Type t) => t == typeof(long) || t == typeof(long?);
|
||||
|
||||
public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
|
||||
{
|
||||
if (reader.TokenType == JsonToken.Null) return null;
|
||||
var value = serializer.Deserialize<string>(reader);
|
||||
long l;
|
||||
if (Int64.TryParse(value, out l))
|
||||
{
|
||||
return l;
|
||||
}
|
||||
throw new Exception("Cannot unmarshal type long");
|
||||
}
|
||||
|
||||
public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
|
||||
{
|
||||
if (untypedValue == null)
|
||||
{
|
||||
serializer.Serialize(writer, null);
|
||||
return;
|
||||
}
|
||||
var value = (long)untypedValue;
|
||||
serializer.Serialize(writer, value.ToString());
|
||||
return;
|
||||
}
|
||||
|
||||
public static readonly ParseStringConverter Singleton = new ParseStringConverter();
|
||||
}
|
||||
}
|
||||
156
FModel/Properties/Settings.Designer.cs
generated
156
FModel/Properties/Settings.Designer.cs
generated
|
|
@ -143,66 +143,6 @@ namespace FModel.Properties {
|
|||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool UMCosmetics {
|
||||
get {
|
||||
return ((bool)(this["UMCosmetics"]));
|
||||
}
|
||||
set {
|
||||
this["UMCosmetics"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool UMVariants {
|
||||
get {
|
||||
return ((bool)(this["UMVariants"]));
|
||||
}
|
||||
set {
|
||||
this["UMVariants"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool UMConsumablesWeapons {
|
||||
get {
|
||||
return ((bool)(this["UMConsumablesWeapons"]));
|
||||
}
|
||||
set {
|
||||
this["UMConsumablesWeapons"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool UMTraps {
|
||||
get {
|
||||
return ((bool)(this["UMTraps"]));
|
||||
}
|
||||
set {
|
||||
this["UMTraps"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool UMChallenges {
|
||||
get {
|
||||
return ((bool)(this["UMChallenges"]));
|
||||
}
|
||||
set {
|
||||
this["UMChallenges"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("1")]
|
||||
|
|
@ -251,102 +191,6 @@ namespace FModel.Properties {
|
|||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool UMTCosmeticsVariants {
|
||||
get {
|
||||
return ((bool)(this["UMTCosmeticsVariants"]));
|
||||
}
|
||||
set {
|
||||
this["UMTCosmeticsVariants"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool UMTLoading {
|
||||
get {
|
||||
return ((bool)(this["UMTLoading"]));
|
||||
}
|
||||
set {
|
||||
this["UMTLoading"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool UMTWeapons {
|
||||
get {
|
||||
return ((bool)(this["UMTWeapons"]));
|
||||
}
|
||||
set {
|
||||
this["UMTWeapons"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool UMTBanners {
|
||||
get {
|
||||
return ((bool)(this["UMTBanners"]));
|
||||
}
|
||||
set {
|
||||
this["UMTBanners"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool UMTFeaturedIMGs {
|
||||
get {
|
||||
return ((bool)(this["UMTFeaturedIMGs"]));
|
||||
}
|
||||
set {
|
||||
this["UMTFeaturedIMGs"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool UMTAthena {
|
||||
get {
|
||||
return ((bool)(this["UMTAthena"]));
|
||||
}
|
||||
set {
|
||||
this["UMTAthena"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool UMTDevices {
|
||||
get {
|
||||
return ((bool)(this["UMTDevices"]));
|
||||
}
|
||||
set {
|
||||
this["UMTDevices"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool UMTVehicles {
|
||||
get {
|
||||
return ((bool)(this["UMTVehicles"]));
|
||||
}
|
||||
set {
|
||||
this["UMTVehicles"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
|
|
|
|||
|
|
@ -32,21 +32,6 @@
|
|||
<Setting Name="AESKey" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="UMCosmetics" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="UMVariants" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="UMConsumablesWeapons" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="UMTraps" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="UMChallenges" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="UMSize" Type="System.Int32" Scope="User">
|
||||
<Value Profile="(Default)">1</Value>
|
||||
</Setting>
|
||||
|
|
@ -59,30 +44,6 @@
|
|||
<Setting Name="UMFeatured" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="UMTCosmeticsVariants" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="UMTLoading" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="UMTWeapons" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="UMTBanners" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="UMTFeaturedIMGs" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="UMTAthena" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="UMTDevices" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="UMTVehicles" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="UMFilename" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 955 B After Width: | Height: | Size: 1.0 KiB |
|
|
@ -61,7 +61,7 @@ Also if you find this project useful, feel free to give it a :star: thank you :k
|
|||
1. Read, Search, Extract, Serialize
|
||||
2. Icon Creation for various BR/STW Cosmetics or Challenges with language support
|
||||
3. Icon Merger
|
||||
4. Automatic detection for Dynamic PAKs Keys
|
||||
4. Automatic Key detection for Dynamic PAKs
|
||||
5. Twitter Api Authentication to send Tweets from within FModel
|
||||
### What i'm using
|
||||
- [Fortnite Asset Parser](https://github.com/SirWaddles/JohnWickParse) - *C# Bind*
|
||||
|
|
@ -81,6 +81,7 @@ I'd highly suggest you to use [UModel](https://github.com/gildor2/UModel) if you
|
|||
|
||||
## TODO
|
||||
- [ ] Code refactoring
|
||||
- [ ] Schematics icon with weapon icon and ingredients
|
||||
- [x] Translation support
|
||||
- [x] AES Manager
|
||||
- [x] Display support for .locres files
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user