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<EquipGemModel>(); } }
|
|
public static void DisplayItem(int itemId, ItemTipUtility.CustomItemPlus itemplus)
|
{
|
if (ItemLogicUtility.Instance.IsRealmEquip(itemId) && itemplus.Preview != 1)
|
{
|
var itemConfig = ItemConfig.Get(itemId);
|
Dictionary<int, int> gems = new Dictionary<int, int>();
|
Dictionary<int, bool> gemHoleActiveStates = new Dictionary<int, bool>();
|
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<Int2>();
|
var equipSkillList = new List<int>();
|
Dictionary<int, List<int>> 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<Int2> trainProperties = new List<Int2>();
|
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<EquipSuitType, int> suitLevels = new Dictionary<EquipSuitType, int>();
|
suitLevels.Add(EquipSuitType.TwoSuit, -1);
|
suitLevels.Add(EquipSuitType.FiveSuit, -1);
|
suitLevels.Add(EquipSuitType.EightSuit, -1);
|
|
List<int> suitplaces = new List<int>();
|
|
Dictionary<int, int> placeStars = new Dictionary<int, int>();
|
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<int>();
|
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<int[]> equips = null;
|
if (package.ClassEquipCount > 0)
|
{
|
equips = new List<int[]>();
|
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<package.WashValueList.Length?(int)package.WashValueList[0]:0,
|
1<package.WashValueList.Length?(int)package.WashValueList[1]:0,
|
2<package.WashValueList.Length?(int)package.WashValueList[2]:0,
|
},
|
},
|
Equipped = 1,
|
Stone = new int[4]
|
{
|
0<package.StoneIDList.Length?(int)package.StoneIDList[0]:0,
|
1<package.StoneIDList.Length?(int)package.StoneIDList[1]:0,
|
2<package.StoneIDList.Length?(int)package.StoneIDList[2]:0,
|
3<package.StoneIDList.Length?(int)package.StoneIDList[3]:0,
|
},
|
UserData = s_CacheUserData,
|
Equips = equips == null ? null : equips.ToArray(),
|
};
|
|
DisplayItem((int)itemplus.ItemID, itemplus);
|
}
|
}
|
}
|