Esempio n. 1
0
        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;
            }
        }
Esempio n. 2
0
        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));
                }
            }
        }