| | |
| | | return int.MaxValue; |
| | | } |
| | | |
| | | //<skinID,ctgID> |
| | | Dictionary<int, int> ctgDict = new(); |
| | | public int GetCtgIDBySkinID(int skinID) |
| | | { |
| | | if (ctgDict.IsNullOrEmpty()) |
| | | { |
| | | GetSkinIDToCtgIDDict(); |
| | | } |
| | | var act = GetOperationHeroAppearInfo(); |
| | | if (act == null) return 0; |
| | | |
| | | int ctgID; |
| | | ctgDict.TryGetValue(skinID, out ctgID); |
| | | return ctgID; |
| | | } |
| | | var config = ActHeroAppearConfig.Get(act.CfgID); |
| | | if (config == null || config.ActHeroIDList == null || config.SkinCTGIDList == null) return 0; |
| | | |
| | | Dictionary<int, int> GetSkinIDToCtgIDDict() |
| | | { |
| | | if (!ctgDict.IsNullOrEmpty()) |
| | | { |
| | | return ctgDict; |
| | | } |
| | | int heroID = GetHeroIDBySkinID(skinID); |
| | | if (heroID == 0) return 0; |
| | | |
| | | foreach (var config in ActHeroAppearConfig.GetValues()) |
| | | { |
| | | if (config == null || config.SkinCTGIDList == null) return null; |
| | | int index = System.Array.IndexOf(config.ActHeroIDList, heroID); |
| | | if (index < 0 || index >= config.SkinCTGIDList.Length) return 0; |
| | | |
| | | for (int i = 0; i < config.SkinCTGIDList.Length; i++) |
| | | { |
| | | var ctgID = config.SkinCTGIDList[i]; |
| | | var ctgConfig = CTGConfig.Get(ctgID); |
| | | if (ctgConfig == null || ctgConfig.GainItemList == null) continue; |
| | | |
| | | for (int j = 0; j < ctgConfig.GainItemList.Length; j++) |
| | | { |
| | | var itemID = ctgConfig.GainItemList[j][0]; |
| | | var itemConfig = ItemConfig.Get(itemID); |
| | | |
| | | if (itemConfig == null) continue; |
| | | if (!HeroSkinAttrConfig.TryGetSkinIDByItemID(itemID, out var skinID)) continue; |
| | | if (ctgDict.ContainsKey(skinID)) continue; |
| | | ctgDict[skinID] = ctgID; |
| | | } |
| | | } |
| | | } |
| | | |
| | | return ctgDict; |
| | | return config.SkinCTGIDList[index]; |
| | | } |
| | | |
| | | public bool HasItemInSkinCTGIDList(int cfgID, int findItemID) |