public static void DefineAsset(this IMissionItemX mix) { mix.Class = Core.Utils.GetItemClass(mix.ItemType); var RegexType = mix.Class.ToString(); switch (mix.Class) { case ItemClass.Schematic: var m0 = MissionsStaticData.ItemRegexTable[RegexType].Match(mix.ItemType); if (m0.Success) { var nName = $"{m0.Groups[2].Value}_{{0}}_ore"; mix.Rarity = Core.Utils.GetItemRarityType(m0.Groups[3].Value); mix.AssetId = nName; } else { m0 = MissionsStaticData.ItemRegexTable[$"{RegexType}2"].Match(mix.ItemType); if (m0.Success) { var nName = $"{m0.Groups[2].Value}_{{0}}"; mix.Rarity = Core.Utils.GetItemRarityType(m0.Groups[3].Value); mix.AssetId = nName; } else { goto default; } } break; case ItemClass.CardPack: var m1 = MissionsStaticData.ItemRegexTable[RegexType].Match(mix.ItemType); if (m1.Success) { if (m1.Groups.Count == 7) { if (m1.Groups[6].Value != "") { mix.AssetId = $"{m1.Groups[2].Value}_{m1.Groups[6].Value}"; } else { mix.AssetId = $"{m1.Groups[2].Value}"; } } else { mix.AssetId = m1.Groups[2].Value; } } else { goto default; } break; case ItemClass.AccountResource: var m2 = MissionsStaticData.ItemRegexTable[RegexType].Match(mix.ItemType); if (m2.Success) { mix.AssetId = m2.Groups[2].Value; } else { goto default; } break; case ItemClass.ConversionControl: var m3 = MissionsStaticData.ItemRegexTable[RegexType].Match(mix.ItemType); if (m3.Success) { var nName = $"{m3.Groups[2].Value}_consumable_{{0}}"; mix.Rarity = Core.Utils.GetItemRarityType(m3.Groups[3].Value); mix.AssetId = nName; } else { goto default; } break; case ItemClass.Worker: var m4 = MissionsStaticData.ItemRegexTable[RegexType].Match(mix.ItemType); if (!m4.Success) { m4 = MissionsStaticData.ItemRegexTable[$"{RegexType}2"].Match(mix.ItemType); } if (m4.Success) { var nName = $"{m4.Groups[2].Value}_{{0}}"; if (nName.StartsWith("manager")) { if (m4.Groups[3].Value == "c") { mix.Rarity = Core.Utils.GetItemRarityType("uc"); } else if (m4.Groups[3].Value == "uc") { mix.Rarity = Core.Utils.GetItemRarityType("r"); } else if (m4.Groups[3].Value == "r") { mix.Rarity = Core.Utils.GetItemRarityType("vr"); } else if (m4.Groups[3].Value == "vr") { mix.Rarity = Core.Utils.GetItemRarityType("sr"); } else if (m4.Groups[3].Value == "sr") { mix.Rarity = Core.Utils.GetItemRarityType("uv"); } else { throw new Exception($"undefined item rarity for:{mix.ItemType}({nName}) define in case ItemClass.Worker:"); } } else { mix.Rarity = Core.Utils.GetItemRarityType(m4.Groups[3].Value); } mix.AssetId = nName; } else { goto default; } break; case ItemClass.Defender: var m5 = MissionsStaticData.ItemRegexTable[RegexType].Match(mix.ItemType); if (m5.Success) { var nName = $"{m5.Groups[2].Value}_{{0}}"; mix.Rarity = Core.Utils.GetItemRarityType(m5.Groups[3].Value); mix.AssetId = nName; } else { goto default; } break; case ItemClass.Hero: var m6 = MissionsStaticData.ItemRegexTable[RegexType].Match(mix.ItemType); if (m6.Success) { var nName = $"{m6.Groups[2].Value}_{{0}}"; mix.Rarity = Core.Utils.GetItemRarityType(m6.Groups[3].Value); mix.AssetId = nName; } else { goto default; } break; case ItemClass.Currency: var m7 = MissionsStaticData.ItemRegexTable[RegexType].Match(mix.ItemType); if (m7.Success) { var nName = m7.Groups[2].Value; mix.AssetId = nName; } else { goto default; } break; default: Console.WriteLine($"E#Undefined regex format is detected (for '{mix.ItemType}' and define in 'ItemRegexTable')##"); break; } }
public KeyValuePair <string, string> GetRealItemName(bool shortName = false, string lang = "EN", bool getEmoji = true) { IMissionItemX mi = this; var Translate = DIManager.Services.GetRequiredService <IJsonStringLocalizer>(); var name = Translate.GetAssetRegistryTranslation(mi.ItemType.Split(':')[1].Replace("sid_", "wid_"), lang) .Replace("Legendary PERK", "PERK") .Replace("Uncommon PERK", "PERK"); if (name == "") { name = Translate.GetBotTranslation(mi.ItemType.Split(':')[1].Replace("sid_", "wid_"), lang); if (name == "") { mi.AssetType = AssetType.Registry; name = Translate.GetAssetRegistryTranslation(mi.ItemType.Split(':')[1].Replace("zcp_", "").Replace("cck_", ""), lang); } else { mi.AssetType = AssetType.Bot; } } else { mi.AssetType = AssetType.Registry; } if (mi.Rarity != ItemRarity.None) { if (SurvivorStaticData.AssetBot2.ContainsKey(mi.AssetId)) { var storedAsset = SurvivorStaticData.AssetBot2[mi.AssetId]; var displayName = string.Format(storedAsset.StoredName, mi.Rarity); if (name != "") { displayName = name; } else { mi.AssetType = AssetType.Bot; } if (shortName) { displayName = Core.Utils.ShortName(displayName); } return(new KeyValuePair <string, string>(storedAsset.EmojiId, displayName)); } else { var easyName = Core.Utils.GuessName(mi.Rarity, mi.AssetId, getEmoji); if (name != "") { easyName = new KeyValuePair <string, string>(easyName.Key, name); } else { mi.AssetType = AssetType.Guess; } if (shortName) { easyName = new KeyValuePair <string, string>(easyName.Key, Core.Utils.ShortName(name == "" ? easyName.Value : name)); } if (mi.Rarity == ItemRarity.Mythic) { easyName = new KeyValuePair <string, string>(easyName.Key, $"(Mythic) {easyName.Value}"); } return(easyName); } } else { if (SurvivorStaticData.AssetBot2.ContainsKey(mi.AssetId)) { var storedAsset = SurvivorStaticData.AssetBot2[mi.AssetId]; var stName = storedAsset.StoredName; if (name != "") { stName = name; } else { mi.AssetType = AssetType.Bot; } if (shortName) { stName = Core.Utils.ShortName(stName); } return(new KeyValuePair <string, string>(getEmoji ? storedAsset.EmojiId : storedAsset.Url, stName)); } else { //Console.WriteLine($"Undefined mapping is detected (for '{itemTypeName}' and define in 'ResourceTable')"); mi.AssetType = AssetType.Undefined; return(new KeyValuePair <string, string>("524246128925999114", name == "" ? "?" : name)); } } }