using System; using System.Collections; using System.Collections.Generic; using UnityEngine; namespace vnxbqy.UI { public static class RichViewItemUtility { static string s_CacheUserData = string.Empty; static EquipGemModel equipGemModel { get { return ModelCenter.Instance.GetModel(); } } public static void DisplayItem(int itemId, ItemTipUtility.CustomItemPlus itemplus) { if (ItemLogicUtility.Instance.IsRealmEquip(itemId) && itemplus.Preview != 1) { var itemConfig = ItemConfig.Get(itemId); Dictionary gems = new Dictionary(); Dictionary gemHoleActiveStates = new Dictionary(); if (itemplus.Stone != null) { for (int i = 0; i < itemplus.Stone.Length; i++) { gems.Add(i, itemplus.Stone[i]); if (i == 3) { gemHoleActiveStates.Add(i, itemplus.Stone[i] != 0); } } } for (int i = 0; i < EquipGemModel.EQUIPGEM_HOLE_COUNT; i++) { if (i < 3) { gemHoleActiveStates.Add(i, equipGemModel.IsGemHoleOpen(i, itemplus.Star)); } } var legendProperties = new List(); var equipSkillList = new List(); Dictionary> useDataDict = null; if (!string.IsNullOrEmpty(itemplus.UserData)) { useDataDict = ConfigParse.Analysis(itemplus.UserData); if (useDataDict != null) { if(useDataDict.ContainsKey((int)ItemUseDataKey.legendAttrID) && useDataDict.ContainsKey((int)ItemUseDataKey.legendAttrValue)) { var count = Mathf.Min(useDataDict[(int)ItemUseDataKey.legendAttrID].Count, useDataDict[(int)ItemUseDataKey.legendAttrValue].Count); for (int i = 0; i < count; i++) { legendProperties.Add(new Int2(useDataDict[(int)ItemUseDataKey.legendAttrID][i], useDataDict[(int)ItemUseDataKey.legendAttrValue][i])); } } if (useDataDict.ContainsKey((int)ItemUseDataKey.equipSkills)) { equipSkillList = useDataDict[(int)ItemUseDataKey.equipSkills]; } } } List trainProperties = new List(); if (!itemplus.Wash.Equals(default(ItemTipUtility.CustomEquipWash))) { var washType = EquipTrainModel.GetTrainType(itemConfig.EquipPlace); var trainConfig = EquipWashConfig.Get(washType, 1); for (int i = 0; i < itemplus.Wash.Value.Length; i++) { var propertyType = i == 0 ? trainConfig.config.attType1 : i == 1 ? trainConfig.config.attType2 : trainConfig.config.attType3; trainProperties.Add(new Int2(propertyType, itemplus.Wash.Value[i])); } } Dictionary suitLevels = new Dictionary(); suitLevels.Add(EquipSuitType.TwoSuit, -1); suitLevels.Add(EquipSuitType.FiveSuit, -1); suitLevels.Add(EquipSuitType.EightSuit, -1); List suitplaces = new List(); Dictionary placeStars = new Dictionary(); for (int i = 1; i <= 8; i++) { placeStars.Add(i, -1); } if (itemplus.placeStars != null) { for (int i = 0; i < itemplus.placeStars.Length; i++) { placeStars[i + 1] = itemplus.placeStars[i]; } } if (itemplus.suitPlaces != null && itemplus.suitLevels != null) { suitplaces.AddRange(itemplus.suitPlaces); suitLevels[EquipSuitType.TwoSuit] = itemplus.suitLevels[0]; suitLevels[EquipSuitType.FiveSuit] = itemplus.suitLevels[1]; suitLevels[EquipSuitType.EightSuit] = itemplus.suitLevels[2]; } else if (itemplus.Equips != null) { var stars = new List(); for (int i = 0; i < itemplus.Equips.Length; i++) { var array = itemplus.Equips[i]; var config = ItemConfig.Get(array[0]); if (config.EquipPlace > 8) { continue; } stars.Add(array[1]); placeStars[config.EquipPlace] = array[1]; if (config.SuiteiD > 0) { suitplaces.Add(config.EquipPlace); } } stars.Sort((int x, int y) => { return -x.CompareTo(y); }); var twoSuitLevel = (suitplaces.Count > 1 && stars.Count > 1) ? stars[1] : -1; var fiveSuitLevel = (suitplaces.Count > 4 && stars.Count > 4) ? stars[4] : -1; var eightSuitLevel = (suitplaces.Count > 7 && stars.Count > 7) ? stars[7] : -1; suitLevels[EquipSuitType.TwoSuit] = twoSuitLevel; suitLevels[EquipSuitType.FiveSuit] = fiveSuitLevel; suitLevels[EquipSuitType.EightSuit] = eightSuitLevel; } ItemTipUtility.ShowCustomEquip(new ItemTipUtility.CustomEquipInfo() { itemId = itemId, job = itemConfig.JobLimit, strengthenLevel = itemplus.PlusLV, starLevel = itemplus.Star, gems = gems, legendProperties = legendProperties, score = ItemLogicUtility.Instance.GetEquipScore(itemId, useDataDict, true), gemHoleActiveStates = gemHoleActiveStates, suitLevels = suitLevels, suitPlaces = suitplaces, trainProperties = trainProperties, isEquiped = itemplus.Equipped == 1, placeStars = placeStars, equipSkillList = equipSkillList, }); } else { ItemTipUtility.Show(itemId); } } public static void SendViewNotifyItem(string guid, string userdata) { s_CacheUserData = userdata; var pak = new CA905_tagCGQueryNotifyEquipDetailInfo(); pak.ItemGUID = guid; GameNetSystem.Instance.SendInfo(pak); } public static void ReceivePackage(HA905_tagGCNotifyEquipDetailInfo package) { List equips = null; if (package.ClassEquipCount > 0) { equips = new List(); foreach (var equip in package.ClassEquipList) { equips.Add(new int[2] { (int)equip.ItemID, equip.Star, }); } } ItemTipUtility.CustomItemPlus itemplus = new ItemTipUtility.CustomItemPlus() { ItemID = (int)package.ItemID, count = 1, Star = package.Star, PlusLV = package.PlusLV, EvolveLV = package.EvolveLV, Wash = new ItemTipUtility.CustomEquipWash() { LV = package.WashLV, Value = new int[3] { 0