diff --git a/FModel/FModel.csproj b/FModel/FModel.csproj index 47c20bda..3569ad79 100644 --- a/FModel/FModel.csproj +++ b/FModel/FModel.csproj @@ -144,6 +144,10 @@ + + + + diff --git a/FModel/Forms/SearchFiles.cs b/FModel/Forms/SearchFiles.cs index 3518b1ef..af9b950c 100644 --- a/FModel/Forms/SearchFiles.cs +++ b/FModel/Forms/SearchFiles.cs @@ -110,7 +110,6 @@ namespace FModel.Forms await Task.Run(() => { - Console.WriteLine(MainWindow.PAKasTXT[0]); ShowItemsVirtual(myInfos); }); } diff --git a/FModel/MainWindow.Designer.cs b/FModel/MainWindow.Designer.cs index adc0ce09..a1ac312f 100644 --- a/FModel/MainWindow.Designer.cs +++ b/FModel/MainWindow.Designer.cs @@ -97,15 +97,15 @@ this.toolStripStatusLabel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); this.toolStripStatusLabel1.Margin = new System.Windows.Forms.Padding(1, 3, 50, 2); this.toolStripStatusLabel1.Name = "toolStripStatusLabel1"; - this.toolStripStatusLabel1.Size = new System.Drawing.Size(65, 17); - this.toolStripStatusLabel1.Text = "FModel 2.1"; + this.toolStripStatusLabel1.Size = new System.Drawing.Size(74, 17); + this.toolStripStatusLabel1.Text = "FModel 2.1.1"; // // toolStripStatusLabel2 // this.toolStripStatusLabel2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); this.toolStripStatusLabel2.Margin = new System.Windows.Forms.Padding(0, 3, 50, 2); this.toolStripStatusLabel2.Name = "toolStripStatusLabel2"; - this.toolStripStatusLabel2.Size = new System.Drawing.Size(945, 17); + this.toolStripStatusLabel2.Size = new System.Drawing.Size(936, 17); this.toolStripStatusLabel2.Spring = true; // // toolStripStatusLabel3 diff --git a/FModel/MainWindow.cs b/FModel/MainWindow.cs index 984d47ed..be529922 100644 --- a/FModel/MainWindow.cs +++ b/FModel/MainWindow.cs @@ -876,9 +876,8 @@ namespace FModel searchResults.Add("Athena/Items/CosmeticVariantTokens/"); if (Properties.Settings.Default.UMConsumablesWeapons == true) { - searchResults.Add("Athena/Items/Consumables/"); - searchResults.Add("Athena/Items/Gameplay/"); - searchResults.Add("Athena/Items/Weapons/"); + searchResults.Add("AGID_"); + searchResults.Add("WID_"); } if (Properties.Settings.Default.UMTraps == true) searchResults.Add("Athena/Items/Traps/"); @@ -2098,11 +2097,15 @@ namespace FModel { Bitmap bmp = new Bitmap(Properties.Resources.Quest); Graphics g = Graphics.FromImage(bmp); - g.TextRenderingHint = TextRenderingHint.AntiAlias; + g.TextRenderingHint = TextRenderingHint.AntiAliasGridFit; + g.SmoothingMode = SmoothingMode.HighQuality; int iamY = 275; int justSkip = 0; yAfterLoop = 0; bool v2 = false; + int sRed = 0; + int sGreen = 0; + int sBlue = 0; var BundleParser = Parser.Challenges.ChallengeBundleIdParser.FromJson(theParsedJSON); for (int i = 0; i < BundleParser.Length; i++) @@ -2115,22 +2118,30 @@ namespace FModel if (BundleParser[i].DisplayStyle.DisplayImage != null) { v2 = true; + string seasonFolder = questJSON.Substring(questJSON.Substring(0, questJSON.LastIndexOf("\\")).LastIndexOf("\\") + 1).ToUpper(); #region COLORS + IMAGE - int sOpacity = unchecked((int)BundleParser[i].DisplayStyle.AccentColor.A); - int sRed = (int)(BundleParser[i].DisplayStyle.AccentColor.R * 255); - int sGreen = (int)(BundleParser[i].DisplayStyle.AccentColor.G * 255); - int sBlue = (int)(BundleParser[i].DisplayStyle.AccentColor.B * 255); + if (seasonFolder.Substring(0, seasonFolder.LastIndexOf("\\")) != "LTM") + { + sRed = (int)(BundleParser[i].DisplayStyle.SecondaryColor.R * 255); + sGreen = (int)(BundleParser[i].DisplayStyle.SecondaryColor.G * 255); + sBlue = (int)(BundleParser[i].DisplayStyle.SecondaryColor.B * 255); + } + else + { + sRed = (int)(BundleParser[i].DisplayStyle.AccentColor.R * 255); + sGreen = (int)(BundleParser[i].DisplayStyle.AccentColor.G * 255); + sBlue = (int)(BundleParser[i].DisplayStyle.AccentColor.B * 255); + } int seasonRed = (int)Convert.ToInt32(sRed / 1.5); int seasonGreen = (int)Convert.ToInt32(sGreen / 1.5); int seasonBlue = (int)Convert.ToInt32(sBlue / 1.5); - g.FillRectangle(new SolidBrush(Color.FromArgb(sOpacity * 255, sRed, sGreen, sBlue)), new Rectangle(0, 0, bmp.Width, 271)); + g.FillRectangle(new SolidBrush(Color.FromArgb(255, sRed, sGreen, sBlue)), new Rectangle(0, 0, bmp.Width, 271)); g.FillRectangle(new SolidBrush(Color.FromArgb(255, seasonRed, seasonGreen, seasonBlue)), new Rectangle(0, 271, bmp.Width, bmp.Height - 271)); try { - string seasonFolder = questJSON.Substring(questJSON.Substring(0, questJSON.LastIndexOf("\\")).LastIndexOf("\\") + 1).ToUpper(); g.DrawString(seasonFolder.Substring(0, seasonFolder.LastIndexOf("\\")), new Font(pfc.Families[1], 42), new SolidBrush(Color.FromArgb(255, seasonRed, seasonGreen, seasonBlue)), new Point(340, 40)); } catch (NullReferenceException) @@ -2230,11 +2241,19 @@ namespace FModel { if (Properties.Settings.Default.createIconForChallenges == true) { + LinearGradientBrush linGrBrush = new LinearGradientBrush( + new Point(108, iamY + 86), + new Point(608, iamY + 86), + Color.FromArgb(10, 255, 255, 255), + Color.FromArgb(75, 255, 255, 255)); + g.TextRenderingHint = TextRenderingHint.AntiAlias; justSkip += 1; iamY += 140; g.DrawString(questParser[ii].Objectives[ii2].Description, new Font(pfc.Families[1], 50), new SolidBrush(Color.White), new Point(100, iamY)); - g.DrawString("/" + questParser[ii].Objectives[ii2].Count.ToString(), new Font(pfc.Families[1], 50), new SolidBrush(Color.FromArgb(200, 255, 255, 255)), new Point(2410, iamY + 22), rightString); + Image slider = Properties.Resources.Challenges_Slider; + g.DrawImage(slider, new Point(108, iamY + 86)); + g.DrawString(questParser[ii].Objectives[ii2].Count.ToString(), new Font(pfc.Families[0], 20), new SolidBrush(Color.FromArgb(255, 255, 255, 255)), new Point(968, iamY + 87)); if (justSkip != 1) { g.DrawLine(new Pen(Color.FromArgb(30, 255, 255, 255)), 100, iamY - 10, 2410, iamY - 10); @@ -2248,15 +2267,69 @@ namespace FModel { if (Properties.Settings.Default.createIconForChallenges == true) { - g.DrawString(questParser[ii].Rewards.Where(x => x.ItemPrimaryAssetId.PrimaryAssetType.Name != "Quest") + string itemToExtract = questParser[ii].Rewards.Where(x => x.ItemPrimaryAssetId.PrimaryAssetType.Name != "Quest").Where(x => x.ItemPrimaryAssetId.PrimaryAssetType.Name != "Token").FirstOrDefault().ItemPrimaryAssetId.PrimaryAssetName; + if (string.Equals(itemToExtract, "athenabattlestar", StringComparison.CurrentCultureIgnoreCase)) + { + #region DRAW ICON + Image RewardIcon = Properties.Resources.T_FNBR_BattlePoints_L; + g.DrawImage(Forms.Settings.ResizeImage(RewardIcon, 75, 75), new Point(2325, iamY + 22)); + + GraphicsPath p = new GraphicsPath(); + p.AddString( + questParser[ii].Rewards.Where(x => x.ItemPrimaryAssetId.PrimaryAssetType.Name != "Quest") .Where(x => x.ItemPrimaryAssetId.PrimaryAssetType.Name != "Token") - .FirstOrDefault().ItemPrimaryAssetId.PrimaryAssetType.Name + ":" - + questParser[ii].Rewards.Where(x => x.ItemPrimaryAssetId.PrimaryAssetType.Name != "Quest") + .FirstOrDefault().Quantity.ToString(), + pfc.Families[1], + (int)FontStyle.Regular, + 60, + new Point(2322, iamY + 25), rightString); + g.DrawPath(new Pen(Color.FromArgb(255, 143, 74, 32), 5), p); + + g.FillPath(new SolidBrush(Color.FromArgb(255, 255, 219, 103)), p); + #endregion + } + else if (string.Equals(itemToExtract, "AthenaSeasonalXP", StringComparison.CurrentCultureIgnoreCase)) + { + #region DRAW ICON + Image RewardIcon = Properties.Resources.T_FNBR_SeasonalXP_L; + g.DrawImage(Forms.Settings.ResizeImage(RewardIcon, 75, 75), new Point(2325, iamY + 22)); + + GraphicsPath p = new GraphicsPath(); + p.AddString( + questParser[ii].Rewards.Where(x => x.ItemPrimaryAssetId.PrimaryAssetType.Name != "Quest") .Where(x => x.ItemPrimaryAssetId.PrimaryAssetType.Name != "Token") - .FirstOrDefault().ItemPrimaryAssetId.PrimaryAssetName + ":" - + questParser[ii].Rewards.Where(x => x.ItemPrimaryAssetId.PrimaryAssetType.Name != "Quest") + .FirstOrDefault().Quantity.ToString(), + pfc.Families[1], + (int)FontStyle.Regular, + 60, + new Point(2322, iamY + 25), rightString); + g.DrawPath(new Pen(Color.FromArgb(255, 81, 131, 15), 5), p); + + g.FillPath(new SolidBrush(Color.FromArgb(255, 230, 253, 177)), p); + #endregion + } + else if (string.Equals(itemToExtract, "MtxGiveaway", StringComparison.CurrentCultureIgnoreCase)) + { + #region DRAW ICON + Image RewardIcon = Properties.Resources.T_Items_MTX_L; + g.DrawImage(Forms.Settings.ResizeImage(RewardIcon, 75, 75), new Point(2325, iamY + 22)); + + GraphicsPath p = new GraphicsPath(); + p.AddString( + questParser[ii].Rewards.Where(x => x.ItemPrimaryAssetId.PrimaryAssetType.Name != "Quest") .Where(x => x.ItemPrimaryAssetId.PrimaryAssetType.Name != "Token") - .FirstOrDefault().Quantity.ToString(), new Font(pfc.Families[0], 25), new SolidBrush(Color.FromArgb(75, 255, 255, 255)), new Point(108, iamY + 80)); + .FirstOrDefault().Quantity.ToString(), + pfc.Families[1], + (int)FontStyle.Regular, + 60, + new Point(2322, iamY + 25), rightString); + g.DrawPath(new Pen(Color.FromArgb(255, 100, 160, 175), 5), p); + + g.FillPath(new SolidBrush(Color.FromArgb(255, 220, 230, 255)), p); + #endregion + } + else + drawRewardIcon(itemToExtract, g, iamY); } AppendText("\t\t" + questParser[ii].Rewards.Where(x => x.ItemPrimaryAssetId.PrimaryAssetType.Name != "Quest") @@ -2267,7 +2340,7 @@ namespace FModel .FirstOrDefault().ItemPrimaryAssetId.PrimaryAssetName + ":" + questParser[ii].Rewards.Where(x => x.ItemPrimaryAssetId.PrimaryAssetType.Name != "Quest") .Where(x => x.ItemPrimaryAssetId.PrimaryAssetType.Name != "Token") - .FirstOrDefault().Quantity.ToString(), Color.DarkRed, true); + .FirstOrDefault().Quantity.ToString(), Color.DarkGreen, true); } catch (Exception ex) { @@ -2275,12 +2348,13 @@ namespace FModel { if (Properties.Settings.Default.createIconForChallenges == true) { - g.DrawString(questParser[ii].HiddenRewards.FirstOrDefault().TemplateId + ":" - + questParser[ii].HiddenRewards.FirstOrDefault().Quantity.ToString(), new Font(pfc.Families[0], 25), new SolidBrush(Color.FromArgb(75, 255, 255, 255)), new Point(108, iamY + 80)); + var partsofbruhreally = questParser[ii].HiddenRewards.FirstOrDefault().TemplateId.Split(':'); + if (partsofbruhreally[0] != "HomebaseBannerIcon") + drawRewardIcon(partsofbruhreally[1], g, iamY); } AppendText("\t\t" + questParser[ii].HiddenRewards.FirstOrDefault().TemplateId + ":" - + questParser[ii].HiddenRewards.FirstOrDefault().Quantity.ToString(), Color.DarkRed, true); + + questParser[ii].HiddenRewards.FirstOrDefault().Quantity.ToString(), Color.DarkGreen, true); } else { @@ -2436,11 +2510,19 @@ namespace FModel { if (Properties.Settings.Default.createIconForChallenges == true) { + LinearGradientBrush linGrBrush = new LinearGradientBrush( + new Point(108, yeayLoop + 86), + new Point(608, yeayLoop + 86), + Color.FromArgb(10, 255, 255, 255), + Color.FromArgb(75, 255, 255, 255)); + toDrawOnLoop.TextRenderingHint = TextRenderingHint.AntiAlias; lineLoop += 1; yeayLoop += 140; toDrawOnLoop.DrawString(questParser[i].Objectives[ii].Description, new Font(pfc.Families[1], 50), new SolidBrush(Color.White), new Point(100, yeayLoop)); - toDrawOnLoop.DrawString("/" + questParser[i].Objectives[ii].Count.ToString(), new Font(pfc.Families[1], 50), new SolidBrush(Color.FromArgb(200, 255, 255, 255)), new Point(2410, yeayLoop + 22), rightString); + Image slider = Properties.Resources.Challenges_Slider; + toDrawOnLoop.DrawImage(slider, new Point(108, yeayLoop + 86)); + toDrawOnLoop.DrawString(questParser[i].Objectives[ii].Count.ToString(), new Font(pfc.Families[0], 20), new SolidBrush(Color.FromArgb(255, 255, 255, 255)), new Point(968, yeayLoop + 87)); if (lineLoop != 1) { toDrawOnLoop.DrawLine(new Pen(Color.FromArgb(30, 255, 255, 255)), 100, yeayLoop - 10, 2410, yeayLoop - 10); @@ -2455,15 +2537,69 @@ namespace FModel { if (Properties.Settings.Default.createIconForChallenges == true) { - toDrawOnLoop.DrawString(questParser[i].Rewards.Where(x => x.ItemPrimaryAssetId.PrimaryAssetType.Name != "Quest") + string itemToExtract = questParser[ii].Rewards.Where(x => x.ItemPrimaryAssetId.PrimaryAssetType.Name != "Quest").Where(x => x.ItemPrimaryAssetId.PrimaryAssetType.Name != "Token").FirstOrDefault().ItemPrimaryAssetId.PrimaryAssetName; + if (string.Equals(itemToExtract, "athenabattlestar", StringComparison.CurrentCultureIgnoreCase)) + { + #region DRAW ICON + Image RewardIcon = Properties.Resources.T_FNBR_BattlePoints_L; + toDrawOnLoop.DrawImage(Forms.Settings.ResizeImage(RewardIcon, 75, 75), new Point(2325, yeayLoop + 22)); + + GraphicsPath p = new GraphicsPath(); + p.AddString( + questParser[ii].Rewards.Where(x => x.ItemPrimaryAssetId.PrimaryAssetType.Name != "Quest") .Where(x => x.ItemPrimaryAssetId.PrimaryAssetType.Name != "Token") - .FirstOrDefault().ItemPrimaryAssetId.PrimaryAssetType.Name + ":" - + questParser[i].Rewards.Where(x => x.ItemPrimaryAssetId.PrimaryAssetType.Name != "Quest") + .FirstOrDefault().Quantity.ToString(), + pfc.Families[1], + (int)FontStyle.Regular, + 60, + new Point(2322, yeayLoop + 25), rightString); + toDrawOnLoop.DrawPath(new Pen(Color.FromArgb(255, 143, 74, 32), 5), p); + + toDrawOnLoop.FillPath(new SolidBrush(Color.FromArgb(255, 255, 219, 103)), p); + #endregion + } + else if (string.Equals(itemToExtract, "AthenaSeasonalXP", StringComparison.CurrentCultureIgnoreCase)) + { + #region DRAW ICON + Image RewardIcon = Properties.Resources.T_FNBR_SeasonalXP_L; + toDrawOnLoop.DrawImage(Forms.Settings.ResizeImage(RewardIcon, 75, 75), new Point(2325, yeayLoop + 22)); + + GraphicsPath p = new GraphicsPath(); + p.AddString( + questParser[ii].Rewards.Where(x => x.ItemPrimaryAssetId.PrimaryAssetType.Name != "Quest") .Where(x => x.ItemPrimaryAssetId.PrimaryAssetType.Name != "Token") - .FirstOrDefault().ItemPrimaryAssetId.PrimaryAssetName + ":" - + questParser[i].Rewards.Where(x => x.ItemPrimaryAssetId.PrimaryAssetType.Name != "Quest") + .FirstOrDefault().Quantity.ToString(), + pfc.Families[1], + (int)FontStyle.Regular, + 60, + new Point(2322, yeayLoop + 25), rightString); + toDrawOnLoop.DrawPath(new Pen(Color.FromArgb(255, 81, 131, 15), 5), p); + + toDrawOnLoop.FillPath(new SolidBrush(Color.FromArgb(255, 230, 253, 177)), p); + #endregion + } + else if (string.Equals(itemToExtract, "MtxGiveaway", StringComparison.CurrentCultureIgnoreCase)) + { + #region DRAW ICON + Image RewardIcon = Properties.Resources.T_Items_MTX_L; + toDrawOnLoop.DrawImage(Forms.Settings.ResizeImage(RewardIcon, 75, 75), new Point(2325, yeayLoop + 22)); + + GraphicsPath p = new GraphicsPath(); + p.AddString( + questParser[ii].Rewards.Where(x => x.ItemPrimaryAssetId.PrimaryAssetType.Name != "Quest") .Where(x => x.ItemPrimaryAssetId.PrimaryAssetType.Name != "Token") - .FirstOrDefault().Quantity.ToString(), new Font(pfc.Families[0], 25), new SolidBrush(Color.FromArgb(75, 255, 255, 255)), new Point(108, yeayLoop + 80)); + .FirstOrDefault().Quantity.ToString(), + pfc.Families[1], + (int)FontStyle.Regular, + 60, + new Point(2322, yeayLoop + 25), rightString); + toDrawOnLoop.DrawPath(new Pen(Color.FromArgb(255, 100, 160, 175), 5), p); + + toDrawOnLoop.FillPath(new SolidBrush(Color.FromArgb(255, 220, 230, 255)), p); + #endregion + } + else + drawRewardIcon(itemToExtract, toDrawOnLoop, yeayLoop); } AppendText("\t\t" + questParser[i].Rewards.Where(x => x.ItemPrimaryAssetId.PrimaryAssetType.Name != "Quest") @@ -2474,7 +2610,7 @@ namespace FModel .FirstOrDefault().ItemPrimaryAssetId.PrimaryAssetName + ":" + questParser[i].Rewards.Where(x => x.ItemPrimaryAssetId.PrimaryAssetType.Name != "Quest") .Where(x => x.ItemPrimaryAssetId.PrimaryAssetType.Name != "Token") - .FirstOrDefault().Quantity.ToString(), Color.DarkRed, true); + .FirstOrDefault().Quantity.ToString(), Color.DarkGreen, true); } catch (Exception ex) { @@ -2482,12 +2618,13 @@ namespace FModel { if (Properties.Settings.Default.createIconForChallenges == true) { - toDrawOnLoop.DrawString(questParser[i].HiddenRewards.FirstOrDefault().TemplateId + ":" - + questParser[i].HiddenRewards.FirstOrDefault().Quantity.ToString(), new Font(pfc.Families[0], 25), new SolidBrush(Color.FromArgb(75, 255, 255, 255)), new Point(108, yeayLoop + 80)); + var partsofbruhreally = questParser[i].HiddenRewards.FirstOrDefault().TemplateId.Split(':'); + if (partsofbruhreally[0] != "HomebaseBannerIcon") + drawRewardIcon(partsofbruhreally[1], toDrawOnLoop, yeayLoop); } AppendText("\t\t" + questParser[i].HiddenRewards.FirstOrDefault().TemplateId + ":" - + questParser[i].HiddenRewards.FirstOrDefault().Quantity.ToString(), Color.DarkRed, true); + + questParser[i].HiddenRewards.FirstOrDefault().Quantity.ToString(), Color.DarkGreen, true); } else { @@ -2530,6 +2667,67 @@ namespace FModel } yAfterLoop = yeayLoop; } + private void drawRewardIcon(string iconName, Graphics toDrawOn, int y) + { + itemIconPath = string.Empty; + try + { + var value = AllPAKsDictionary.Where(x => String.Equals(x.Key, iconName, StringComparison.CurrentCultureIgnoreCase)).Select(d => d.Key).FirstOrDefault().ToString(); + if (value != null) + { + iconName = value; + + jwpmProcess("extract \"" + Properties.Settings.Default.PAKsPath + "\\" + AllPAKsDictionary[iconName] + "\" \"" + iconName + "\" \"" + DefaultOutputPath + "\" " + Properties.Settings.Default.AESKey); + string extractedIconPath = Directory.GetFiles(DefaultOutputPath + "\\Extracted", iconName + ".*", SearchOption.AllDirectories).Where(x => !x.EndsWith(".png")).FirstOrDefault(); + if (extractedIconPath != null) + { + updateConsole(iconName + " successfully extracted", Color.FromArgb(255, 66, 244, 66), "Success"); + if (extractedIconPath.Contains(".uasset") || extractedIconPath.Contains(".uexp") || extractedIconPath.Contains(".ubulk")) + { + jwpmProcess("serialize \"" + extractedIconPath.Substring(0, extractedIconPath.LastIndexOf('.')) + "\""); + try + { + string jsonExtractedFilePath = Directory.GetFiles(DefaultOutputPath, iconName + ".json", SearchOption.AllDirectories).FirstOrDefault(); + if (jsonExtractedFilePath != null) + { + updateConsole(iconName + " successfully serialized", Color.FromArgb(255, 66, 244, 66), "Success"); + + string parsedJson = JToken.Parse(File.ReadAllText(jsonExtractedFilePath)).ToString(); + File.Delete(jsonExtractedFilePath); + var ItemID = Parser.Items.ItemsIDParser.FromJson(parsedJson); + updateConsole("Parsing " + iconName + "...", Color.FromArgb(255, 244, 132, 66), "Waiting"); + for (int i = 0; i < ItemID.Length; i++) + { + searchAthIteDefIcon(ItemID[i]); + + if (File.Exists(itemIconPath)) + { + Image ItemIcon = Image.FromFile(itemIconPath); + toDrawOn.DrawImage(Forms.Settings.ResizeImage(ItemIcon, 110, 110), new Point(2300, y + 6)); + } + else + { + Image ItemIcon = Properties.Resources.unknown512; + toDrawOn.DrawImage(Forms.Settings.ResizeImage(ItemIcon, 110, 110), new Point(2300, y + 6)); + } + } + } + else + updateConsole("No serialized file found", Color.FromArgb(255, 244, 66, 66), "Error"); + } + catch (JsonSerializationException) + { + updateConsole(".JSON file too large to be fully displayed", Color.FromArgb(255, 244, 66, 66), "Error"); + } + } + } + } + } + catch (Exception ex) + { + Console.WriteLine(ex.Message); + } + } private void convertTexture2D() { diff --git a/FModel/MainWindow.resx b/FModel/MainWindow.resx index 67b2768b..a8a59e37 100644 --- a/FModel/MainWindow.resx +++ b/FModel/MainWindow.resx @@ -131,7 +131,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABa - CAAAAk1TRnQBSQFMAgEBAgEAAZABAAGQAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CAAAAk1TRnQBSQFMAgEBAgEAAaABAAGgAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA @@ -176,7 +176,7 @@ 522, 17 - 97 + 63 diff --git a/FModel/Properties/Resources.Designer.cs b/FModel/Properties/Resources.Designer.cs index 3389bd95..c0d1327b 100644 --- a/FModel/Properties/Resources.Designer.cs +++ b/FModel/Properties/Resources.Designer.cs @@ -19,7 +19,7 @@ namespace FModel.Properties { // à l'aide d'un outil, tel que ResGen ou Visual Studio. // Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen // avec l'option /str ou régénérez votre projet VS. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { @@ -100,6 +100,16 @@ namespace FModel.Properties { } } + /// + /// Recherche une ressource localisée de type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Challenges_Slider { + get { + object obj = ResourceManager.GetObject("Challenges_Slider", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Recherche une ressource localisée de type System.Drawing.Bitmap. /// @@ -230,6 +240,26 @@ namespace FModel.Properties { } } + /// + /// Recherche une ressource localisée de type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap T_FNBR_BattlePoints_L { + get { + object obj = ResourceManager.GetObject("T_FNBR_BattlePoints_L", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Recherche une ressource localisée de type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap T_FNBR_SeasonalXP_L { + get { + object obj = ResourceManager.GetObject("T_FNBR_SeasonalXP_L", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Recherche une ressource localisée de type System.Drawing.Bitmap. /// @@ -290,6 +320,16 @@ namespace FModel.Properties { } } + /// + /// Recherche une ressource localisée de type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap T_Items_MTX_L { + get { + object obj = ResourceManager.GetObject("T_Items_MTX_L", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Recherche une ressource localisée de type System.Drawing.Bitmap. /// diff --git a/FModel/Properties/Resources.resx b/FModel/Properties/Resources.resx index c9a9a524..f7bb73f6 100644 --- a/FModel/Properties/Resources.resx +++ b/FModel/Properties/Resources.resx @@ -202,4 +202,16 @@ ..\Resources\BurbankBigCondensed-Bold.ttf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ..\Resources\T-FNBR-BattlePoints-L.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\T-FNBR-SeasonalXP-L.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\T-Items-MTX-L.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Challenges_Slider.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/FModel/Resources/Challenges_Slider.png b/FModel/Resources/Challenges_Slider.png new file mode 100644 index 00000000..c9d1cc3b Binary files /dev/null and b/FModel/Resources/Challenges_Slider.png differ diff --git a/FModel/Resources/T-FNBR-BattlePoints-L.png b/FModel/Resources/T-FNBR-BattlePoints-L.png new file mode 100644 index 00000000..f31f9308 Binary files /dev/null and b/FModel/Resources/T-FNBR-BattlePoints-L.png differ diff --git a/FModel/Resources/T-FNBR-SeasonalXP-L.png b/FModel/Resources/T-FNBR-SeasonalXP-L.png new file mode 100644 index 00000000..f750e1f1 Binary files /dev/null and b/FModel/Resources/T-FNBR-SeasonalXP-L.png differ diff --git a/FModel/Resources/T-Items-MTX-L.png b/FModel/Resources/T-Items-MTX-L.png new file mode 100644 index 00000000..7bdd3d81 Binary files /dev/null and b/FModel/Resources/T-Items-MTX-L.png differ diff --git a/README.md b/README.md index 6aee5cf6..169207ce 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ ### Prerequisites [.NET Framework 4.7.1](https://dotnet.microsoft.com/download/dotnet-framework/net471) ### Download -[![](https://img.shields.io/badge/Release-Executable-orange.svg?logo=github)](https://github.com/iAmAsval/FModel/releases/tag/2.1) +[![](https://img.shields.io/badge/Release-Executable-orange.svg?logo=github)](https://github.com/iAmAsval/FModel/releases/tag/2.1.1) ### How does it works **1.** Once you start the executable, you'll be asked to set your path to your Fortnite .PAK files. Meanwhile a `FModel` subfolder will be created in your `Documents` folder and it'll automatically download the latest version of the custom [Fortnite Asset Parser](https://github.com/SirWaddles/JohnWickParse) in this subfolder. @@ -31,7 +31,7 @@ - Asset is a **_Sound_**: - Try to convert the Asset to OGG and play the sound - Asset is a **_Bundle Of Challenges_**: - - Try to create an [Icon](https://i.imgur.com/yvHjata.png) with all **Challenges' Description**, **Count** and the **Reward** + - Try to create an [Icon](https://i.imgur.com/1Uzrlb0.png) with all **Challenges' Description**, **Count** and the **Reward** - Asset is a **_Font_**: - Try to convert the Asset to OTF @@ -81,7 +81,6 @@ I'd highly suggest you to use [UModel](https://github.com/gildor2/UModel) instea ## TODO - [ ] Auto update -- [ ] FModel status message - [ ] Support for meshes - [ ] Support for animations - [ ] Display support for .locres files