//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Tuesday, March 12, 2019 //-------------------------------------------------------- using UnityEngine; using System.Collections; using UnityEngine.UI; using System.Collections.Generic; namespace Snxxz.UI { public enum EquipTipType { Item = 0, Equip = 1, EquipCompare = 2, Good = 3, } public class EquipTipUtility { public struct TipData { public int itemId; public string guid; public BaseInfo baseInfo; public BaseProperty baseProperty; public LegendProperty legendProperty; public SuitInfo suitInfo; public StrengthenProperty strengthenProperty; public GemInfo gemInfo; public TrainProperty trainProperty; } public struct BaseInfo { public int itemId; public bool isAuction; public bool isEquiped; public int score; public int auctionSurplusTime; } public struct BaseProperty { public List baseProperties; public int star; public List starProperties; } public struct LegendProperty { public bool isPreview; public List properties; } public struct SuitInfo { public int job; public string name; public int level; public int maxSuitLevel; public List places; public Dictionary twoSuitProperties; public Dictionary fiveSuitProperties; public Dictionary eightSuits; } public struct StrengthenProperty { public List properties; } public struct GemInfo { public Dictionary activeStates; public Dictionary gems; } public struct TrainProperty { public List properties; } static PackModel packModel { get { return ModelCenter.Instance.GetModel(); } } static EquipModel equipModel { get { return ModelCenter.Instance.GetModel(); } } static EquipStarModel starModel { get { return ModelCenter.Instance.GetModel(); } } static EquipGemModel gemModel { get { return ModelCenter.Instance.GetModel(); } } static EquipTrainModel trainModel { get { return ModelCenter.Instance.GetModel(); } } public static EquipTipType tipType { get; private set; } public static TipData mainTipData { get; private set; } public static TipData secondaryData { get; private set; } public static void Show(EquipTipType type, int itemId) { tipType = type; secondaryData = default(TipData); mainTipData = new TipData() { itemId = itemId, guid = string.Empty, baseInfo = GetBaseInfo(itemId), baseProperty = GetBaseProperty(itemId), legendProperty = GetLegendProperty(itemId), suitInfo = GetSuitInfo(itemId), gemInfo = GetGemInfo(itemId), }; switch (type) { case EquipTipType.Item: WindowCenter.Instance.Open(); break; case EquipTipType.Equip: WindowCenter.Instance.Open(); break; case EquipTipType.Good: WindowCenter.Instance.Open(); break; } } public static void Show(EquipTipType type, string guid) { var item = packModel.GetItemByGuid(guid); if (item == null) { return; } tipType = type; mainTipData = new TipData() { itemId = item.itemId, guid = guid, baseInfo = GetBaseInfo(guid), baseProperty = GetBaseProperty(guid), legendProperty = GetLegendProperty(guid), suitInfo = GetSuitInfo(guid), strengthenProperty = GetStrengthenProperty(guid), gemInfo = GetGemInfo(guid), trainProperty = GetTrainProperty(guid) }; if (tipType == EquipTipType.EquipCompare) { var equipedGuid = equipModel.GetEquip(item.config.LV, item.config.EquipPlace); var equipedItem = packModel.GetItemByGuid(equipedGuid); if (equipedItem == null) { tipType = EquipTipType.Equip; secondaryData = default(TipData); } else { secondaryData = new TipData() { itemId = equipedItem.itemId, guid = equipedGuid, baseInfo = GetBaseInfo(equipedGuid), baseProperty = GetBaseProperty(equipedGuid), legendProperty = GetLegendProperty(equipedGuid), suitInfo = GetSuitInfo(equipedGuid), strengthenProperty = GetStrengthenProperty(equipedGuid), gemInfo = GetGemInfo(equipedGuid), trainProperty = GetTrainProperty(equipedGuid) }; } } else { secondaryData = default(TipData); } switch (type) { case EquipTipType.Item: WindowCenter.Instance.Open(); break; case EquipTipType.Equip: WindowCenter.Instance.Open(); break; case EquipTipType.Good: WindowCenter.Instance.Open(); break; } } private static BaseInfo GetBaseInfo(int itemId) { var baseInfo = new BaseInfo() { itemId = itemId, isAuction = false, isEquiped = false, score = ItemLogicUtility.Instance.GetEquipScore(PackType.Item, itemId, null, true), auctionSurplusTime = 0, }; return baseInfo; } private static BaseInfo GetBaseInfo(string guid) { var item = packModel.GetItemByGuid(guid); var baseInfo = new BaseInfo() { itemId = item.itemId, isAuction = item.isBind == 1, isEquiped = equipModel.GetEquip(item.config.LV, item.config.EquipPlace) == guid, score = item.equipScore, auctionSurplusTime = item.auctionSurplusTime, }; return baseInfo; } private static BaseProperty GetBaseProperty(int itemId) { var baseProperties = new List(); var config = ItemConfig.Get(itemId); if (config.Effect1 != 0) { baseProperties.Add(new Int2(config.Effect1, config.EffectValueA1)); } if (config.Effect2 != 0) { baseProperties.Add(new Int2(config.Effect2, config.EffectValueA2)); } if (config.Effect3 != 0) { baseProperties.Add(new Int2(config.Effect3, config.EffectValueA3)); } if (config.Effect4 != 0) { baseProperties.Add(new Int2(config.Effect4, config.EffectValueA4)); } if (config.Effect5 != 0) { baseProperties.Add(new Int2(config.Effect5, config.EffectValueA5)); } var baseProperty = new BaseProperty() { baseProperties = baseProperties, }; return baseProperty; } private static BaseProperty GetBaseProperty(string guid) { var item = packModel.GetItemByGuid(guid); var baseProperty = GetBaseProperty(item.itemId); var starProperties = new List(); var star = starModel.GetEquipStarLevel(item.config.LV, item.config.EquipPlace); if (star > 0) { baseProperty.star = star; var starConfig = EquipStarConfig.Get(item.config.LV, item.config.EquipPlace, star); starProperties.AddRange(starConfig.BaseAttrInfo); } baseProperty.starProperties = starProperties; return baseProperty; } private static LegendProperty GetLegendProperty(int itemId) { return default(LegendProperty); } private static LegendProperty GetLegendProperty(string guid) { return default(LegendProperty); } private static SuitInfo GetSuitInfo(int itemId) { var config = ItemConfig.Get(itemId); var job = config.JobLimit / 100; var twoConfigs = EquipSuitConfig.GetConfigs(job, config.LV, EquipSuitType.TwoSuit); var fiveConfigs = EquipSuitConfig.GetConfigs(job, config.LV, EquipSuitType.FiveSuit); var name = twoConfigs[0].name; var level = config.LV; var maxSuitLevel = EquipStarModel.GetMaxStarLevel(level); var twoSuitProperties = new Dictionary(); var fiveSuitProperties = new Dictionary(); var eightSuits = new Dictionary(); for (var i = 0; i <= maxSuitLevel; i++) { if (i == 0 || i == 3 || i == 6 || i == 9) { var twoSuitEntry = new EquipSuitPropertyEntry(); twoSuitEntry.actived = false; twoSuitEntry.type = EquipSuitType.TwoSuit; foreach (var item in twoConfigs) { if (item.star == i) { twoSuitEntry.properties.AddRange(item.attr); } } var fiveSuitEntry = new EquipSuitPropertyEntry(); fiveSuitEntry.actived = false; fiveSuitEntry.type = EquipSuitType.FiveSuit; foreach (var item in fiveConfigs) { if (item.star == i) { fiveSuitEntry.properties.AddRange(item.attr); } } eightSuits[i] = false; } } var suitInfo = new SuitInfo() { name = name, level = level, maxSuitLevel = maxSuitLevel, twoSuitProperties = twoSuitProperties, fiveSuitProperties = fiveSuitProperties, eightSuits = eightSuits }; return suitInfo; } private static SuitInfo GetSuitInfo(string guid) { var item = packModel.GetItemByGuid(guid); var config = ItemConfig.Get(item.itemId); var job = config.JobLimit / 100; var twoConfigs = EquipSuitConfig.GetConfigs(job, config.LV, EquipSuitType.TwoSuit); var name = twoConfigs[0].name; var level = config.LV; var maxSuitLevel = EquipStarModel.GetMaxStarLevel(level); var places = new List(); for (int i = 1; i <= 8; i++) { var equip = packModel.GetItemByGuid(equipModel.GetEquip(level, i)); var hasSuit = equip != null && equip.config.SuiteiD > 0; if (hasSuit) { places.Add(i); } } var twoSuitProperties = new Dictionary(); var fiveSuitProperties = new Dictionary(); var eightSuits = new Dictionary(); var eightSuitLevel = equipModel.GetSuitLevel(config.LV, EquipSuitType.EightSuit); twoSuitProperties[0] = equipModel.GetEquipSuitEntry(config.LV, 0, EquipSuitType.TwoSuit); fiveSuitProperties[0] = equipModel.GetEquipSuitEntry(config.LV, 0, EquipSuitType.FiveSuit); eightSuits[0] = eightSuitLevel >= 0; if (maxSuitLevel >= 3) { twoSuitProperties[3] = equipModel.GetEquipSuitEntry(config.LV, 3, EquipSuitType.TwoSuit); fiveSuitProperties[3] = equipModel.GetEquipSuitEntry(config.LV, 3, EquipSuitType.FiveSuit); eightSuits[3] = eightSuitLevel >= 3; } if (maxSuitLevel >= 6) { twoSuitProperties[6] = equipModel.GetEquipSuitEntry(config.LV, 6, EquipSuitType.TwoSuit); fiveSuitProperties[6] = equipModel.GetEquipSuitEntry(config.LV, 6, EquipSuitType.FiveSuit); eightSuits[6] = eightSuitLevel >= 3; } if (maxSuitLevel >= 9) { twoSuitProperties[9] = equipModel.GetEquipSuitEntry(config.LV, 9, EquipSuitType.TwoSuit); fiveSuitProperties[9] = equipModel.GetEquipSuitEntry(config.LV, 9, EquipSuitType.FiveSuit); eightSuits[9] = eightSuitLevel >= 9; } var suitInfo = new SuitInfo() { name = name, level = level, maxSuitLevel = maxSuitLevel, places = places, twoSuitProperties = twoSuitProperties, fiveSuitProperties = fiveSuitProperties, eightSuits = eightSuits }; return suitInfo; } private static StrengthenProperty GetStrengthenProperty(string guid) { return default(StrengthenProperty); } private static GemInfo GetGemInfo(int itemId) { return default(GemInfo); } private static GemInfo GetGemInfo(string guid) { return default(GemInfo); } private static TrainProperty GetTrainProperty(string guid) { var item = packModel.GetItemByGuid(guid); var trainLevel = trainModel.GetTrainLevel(item.config.LV, item.config.EquipPlace); var type = EquipTrainModel.GetTrainType(item.config.EquipPlace); var trainProperty = new TrainProperty(); var trainedProperties = trainModel.GetTrainedProperties(item.config.LV, item.config.EquipPlace); var property1 = 0; var property2 = 0; var property3 = 0; for (int i = 1; i < trainLevel - 1; i++) { var data = EquipWashConfig.Get(type, i); if (data != null) { property1 += data.config.attMax1; property2 += data.config.attMax2; property3 += data.config.attMax3; } } property1 += trainedProperties.x; property2 += trainedProperties.y; property3 += trainedProperties.z; var dataLevel1 = EquipWashConfig.Get(type, 1); trainProperty.properties.Add(new Int2(dataLevel1.config.attType1, property1)); trainProperty.properties.Add(new Int2(dataLevel1.config.attType2, property2)); trainProperty.properties.Add(new Int2(dataLevel1.config.attType3, property3)); return trainProperty; } } }