diff --git a/FModel/Methods/Assets/IconCreator/AthenaID/IconUserFacingFlags.cs b/FModel/Methods/Assets/IconCreator/AthenaID/IconUserFacingFlags.cs index 70ef066c..66913ed2 100644 --- a/FModel/Methods/Assets/IconCreator/AthenaID/IconUserFacingFlags.cs +++ b/FModel/Methods/Assets/IconCreator/AthenaID/IconUserFacingFlags.cs @@ -2,23 +2,27 @@ using FModel.Methods.Utilities; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; +using System.Globalization; using System.IO; +using System.Linq; using System.Windows; +using System.Windows.Media; using System.Windows.Media.Imaging; +using FProp = FModel.Properties.Settings; namespace FModel.Methods.Assets.IconCreator.AthenaID { static class IconUserFacingFlags { - private static JArray ItemCategoriesArray { get; set; } - private static JArray HeroItemCategoriesArray { get; set; } + private static JArray TertiaryCategoriesDataArray { get; set; } + private static JArray SecondaryCategoriesDataArray { get; set; } public static int xCoords = 4 - 25; private const string PET_CUSTOM_ICON = "pack://application:,,,/Resources/T-Icon-Pets-64.png"; private const string QUEST_CUSTOM_ICON = "pack://application:,,,/Resources/T-Icon-Quests-64.png"; public static void DrawUserFacingFlag(JToken uFF) { - if (ItemCategoriesArray == null) + if (TertiaryCategoriesDataArray == null) { string jsonData = AssetsUtility.GetAssetJsonDataByPath("/FortniteGame/Content/Items/ItemCategories", true); if (jsonData != null && AssetsUtility.IsValidJson(jsonData)) @@ -28,7 +32,7 @@ namespace FModel.Methods.Assets.IconCreator.AthenaID JToken tertiaryCategoriesToken = AssetsUtility.GetPropertyTag(AssetArray[0]["properties"].Value(), "TertiaryCategories"); if (tertiaryCategoriesToken != null) { - ItemCategoriesArray = tertiaryCategoriesToken["data"].Value(); + TertiaryCategoriesDataArray = tertiaryCategoriesToken["data"].Value(); string uFFTargeted = uFF.Value().Substring("Cosmetics.UserFacingFlags.".Length); SearchUserFacingFlag(uFFTargeted); @@ -44,7 +48,7 @@ namespace FModel.Methods.Assets.IconCreator.AthenaID public static void DrawHeroFacingFlag(JToken uFF) { - if (HeroItemCategoriesArray == null) + if (SecondaryCategoriesDataArray == null) { string jsonData = AssetsUtility.GetAssetJsonDataByPath("/FortniteGame/Content/Items/ItemCategories", true); if (jsonData != null && AssetsUtility.IsValidJson(jsonData)) @@ -54,7 +58,7 @@ namespace FModel.Methods.Assets.IconCreator.AthenaID JToken secondaryCategoriesToken = AssetsUtility.GetPropertyTag(AssetArray[0]["properties"].Value(), "SecondaryCategories"); if (secondaryCategoriesToken != null) { - HeroItemCategoriesArray = secondaryCategoriesToken["data"].Value(); + SecondaryCategoriesDataArray = secondaryCategoriesToken["data"].Value(); string uFFTargeted = uFF.Value().Substring("Unlocks.Class.".Length); SearchHeroFacingFlag(uFFTargeted); @@ -68,9 +72,52 @@ namespace FModel.Methods.Assets.IconCreator.AthenaID } } + public static void DrawWeaponFacingFlag(JToken uFF) + { + if (SecondaryCategoriesDataArray == null) + { + string jsonData = AssetsUtility.GetAssetJsonDataByPath("/FortniteGame/Content/Items/ItemCategories", true); + if (jsonData != null && AssetsUtility.IsValidJson(jsonData)) + { + dynamic AssetData = JsonConvert.DeserializeObject(jsonData); + JArray AssetArray = JArray.FromObject(AssetData); + JToken secondaryCategoriesToken = AssetsUtility.GetPropertyTag(AssetArray[0]["properties"].Value(), "SecondaryCategories"); + if (secondaryCategoriesToken != null) + { + SecondaryCategoriesDataArray = secondaryCategoriesToken["data"].Value(); + + string uFFTargeted = uFF.Value(); + SearchWeaponFacingFlag(uFFTargeted); + } + } + } + else + { + string uFFTargeted = uFF.Value(); + SearchWeaponFacingFlag(uFFTargeted); + } + } + + private static void SearchWeaponFacingFlag(string uFFTarget) + { + foreach (JToken data in SecondaryCategoriesDataArray) + { + JArray propertiesArray = data["struct_type"]["properties"].Value(); + if (propertiesArray != null) + { + JArray wTagsArray = AssetsUtility.GetPropertyTagStruct(propertiesArray, "TagContainer", "gameplay_tags"); + if (wTagsArray != null) + { + if (wTagsArray.FirstOrDefault(i => i.Value().ToLowerInvariant().Contains(uFFTarget.ToLowerInvariant())) != null) + GetUFFImage(propertiesArray); + } + } + } + } + private static void SearchHeroFacingFlag(string uFFTarget) { - foreach (JToken data in HeroItemCategoriesArray) + foreach (JToken data in SecondaryCategoriesDataArray) { JArray propertiesArray = data["struct_type"]["properties"].Value(); if (propertiesArray != null) @@ -90,7 +137,7 @@ namespace FModel.Methods.Assets.IconCreator.AthenaID private static void SearchUserFacingFlag(string uFFTarget) { - foreach (JToken data in ItemCategoriesArray) + foreach (JToken data in TertiaryCategoriesDataArray) { JArray propertiesArray = data["struct_type"]["properties"].Value(); if (propertiesArray != null) diff --git a/FModel/Methods/Assets/IconCreator/IconText.cs b/FModel/Methods/Assets/IconCreator/IconText.cs index d8cfacf9..6a8c6af2 100644 --- a/FModel/Methods/Assets/IconCreator/IconText.cs +++ b/FModel/Methods/Assets/IconCreator/IconText.cs @@ -3,6 +3,7 @@ using FModel.Methods.Assets.IconCreator.HeroID; using FModel.Methods.Assets.IconCreator.WeaponID; using FModel.Methods.Utilities; using Newtonsoft.Json.Linq; +using System; using System.Collections.Generic; using System.Globalization; using System.Linq; @@ -24,6 +25,7 @@ namespace FModel.Methods.Assets.IconCreator private static string _miniMapIconBrushPath; private static IEnumerable _userFacingFlagsToken; private static IEnumerable _userHeroFlagsToken; + private static IEnumerable _userWeaponFlagsToken; public static void DrawIconText(JArray AssetProperties) { @@ -45,6 +47,7 @@ namespace FModel.Methods.Assets.IconCreator _miniMapIconBrushPath = string.Empty; _userFacingFlagsToken = null; _userHeroFlagsToken = null; + _userWeaponFlagsToken = null; JToken name_namespace = AssetsUtility.GetPropertyTagText(AssetProperties, "DisplayName", "namespace"); JToken name_key = AssetsUtility.GetPropertyTagText(AssetProperties, "DisplayName", "key"); @@ -64,7 +67,8 @@ namespace FModel.Methods.Assets.IconCreator JArray gTagsArray = AssetsUtility.GetPropertyTagStruct(AssetProperties, "GameplayTags", "gameplay_tags"); JArray hTagsArray = AssetsUtility.GetPropertyTagStruct(AssetProperties, "RequiredGPTags", "gameplay_tags"); - JArray wTagsArray = AssetsUtility.GetPropertyTagStruct(AssetProperties, "MiniMapIconBrush", "properties"); + JArray wTagsArray = AssetsUtility.GetPropertyTagStruct(AssetProperties, "AnalyticTags", "gameplay_tags"); + JArray MiniMapIconArray = AssetsUtility.GetPropertyTagStruct(AssetProperties, "MiniMapIconBrush", "properties"); if (name_namespace != null && name_key != null && name_source_string != null) { @@ -145,8 +149,10 @@ namespace FModel.Methods.Assets.IconCreator _userHeroFlagsToken = hTagsArray.Children().Where(x => x.ToString().StartsWith("Unlocks.Class.")); if (wTagsArray != null) + _userWeaponFlagsToken = wTagsArray.Children().Where(x => x.ToString().StartsWith("Weapon.Ranged.", StringComparison.InvariantCultureIgnoreCase)); + else if (MiniMapIconArray != null) { - JToken resourceObjectToken = AssetsUtility.GetPropertyTagOuterImport(wTagsArray, "ResourceObject"); + JToken resourceObjectToken = AssetsUtility.GetPropertyTagOuterImport(MiniMapIconArray, "ResourceObject"); if (resourceObjectToken != null) _miniMapIconBrushPath = FoldersUtility.FixFortnitePath(resourceObjectToken.Value()); } @@ -211,7 +217,16 @@ namespace FModel.Methods.Assets.IconCreator IconUserFacingFlags.xCoords = 4 - 25; //reset uFF coords } - if (!string.IsNullOrEmpty(_miniMapIconBrushPath)) + if (_userWeaponFlagsToken != null) + { + foreach (JToken uFF in _userWeaponFlagsToken) + { + IconUserFacingFlags.DrawWeaponFacingFlag(uFF); + } + IconUserFacingFlags.xCoords = 4 - 25; //reset uFF coords + } + + if (!string.IsNullOrEmpty(_miniMapIconBrushPath) && !_miniMapIconBrushPath.Contains("UI_Radar_EnemyDot_White")) using (System.IO.Stream image = AssetsUtility.GetStreamImageFromPath(_miniMapIconBrushPath)) { if (image != null)