using UnityEngine; using System.Collections; using UnityEngine.UI; using Games.Item; using GCGame.Table; using System.Collections.Generic; public class AdvanceEquipItem : MonoBehaviour { public GameObject redIcon; public Image dronBtnImage; public Image itemIcon; public Image _ItemQuality; public AdvanceBase.AdvanceType advanceType; public AdvanceEquipSubClass curAdvanceEquipSlotType; public int curItemDataId = -1; public void InitEquipItem(int itemDataId = -1) { if(itemDataId == -1) { curItemDataId = itemDataId; itemIcon.gameObject.SetActive(false); _ItemQuality.gameObject.SetActive(false); return; } curItemDataId = itemDataId; Tab_CommonItem commonItem = TableManager.GetCommonItemByID(itemDataId, 0); if(commonItem == null) { itemIcon.gameObject.SetActive(false); _ItemQuality.gameObject.SetActive(false); return; } itemIcon.gameObject.SetActive(true); _ItemQuality.gameObject.SetActive(true); LoadAssetBundle.Instance.SetImageSprite(itemIcon, commonItem.Icon); LoadAssetBundle.Instance.SetImageSprite(_ItemQuality, GCGame.Utils.GetItemQualityFrame(commonItem.Quality)); if (commonItem.QualityEffect > 0) { CommonItemContainerItem.ShowQualityEffect(true, commonItem.QualityEffect, itemIcon.transform); } else { CommonItemContainerItem.ShowQualityEffect(false, commonItem.QualityEffect, itemIcon.transform); } } public void OnEquipItemClick() { if(curItemDataId == -1) { EquipTheBestEquip(); } else { ShowEquipTip(); } ShowOrHideRedIcon(false); } private int maxCombatValue = -1; private int bestEquipItemId = -1; public void EquipTheBestEquip() { List itemList = ItemTool.ItemFilter(GameManager.gameManager.PlayerDataPool.BackPack, 0); int _BestIndex = -1; maxCombatValue = -1; bestEquipItemId = -1; for (int index = 0; index < itemList.Count; index++) { Tab_AdvanceEquip advanceEquip = TableManager.GetAdvanceEquipByID(itemList[index].DataID, 0); if(advanceEquip == null) { continue; } if (itemList[index].GetClass() == (int)ItemClass.ADVANCEEQUIP && (int)curAdvanceEquipSlotType == advanceEquip.Index && CanEquipThisEquip(itemList[index]) && maxCombatValue < advanceEquip.CombatValue) { maxCombatValue = advanceEquip.CombatValue; bestEquipItemId = advanceEquip.Id; _BestIndex = index; } } if(bestEquipItemId == -1) { GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{43026}")); }else { Tab_AdvanceEquip advanceEquip = TableManager.GetAdvanceEquipByID(bestEquipItemId, 0); if(advanceEquip == null) { return; } CG_REQ_ADVANCE_EQUIP req = (CG_REQ_ADVANCE_EQUIP)PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_ADVANCE_EQUIP); req.SetOptionType(1); req.SetType((int)advanceType); req.SetGuid(itemList[_BestIndex].Guid); req.SendPacket(); } } public bool CanEquipThisEquip(GameItem item) { Tab_AdvanceEquip advanceEquip = TableManager.GetAdvanceEquipByID(item.DataID, 0); if (advanceEquip == null) { return false; } switch (advanceType) { case AdvanceBase.AdvanceType.Ride: if(AdvanceMountPanelCtr.Instance) { if(advanceEquip.NeedAdvanceLevel <= AdvanceMountPanelCtr.Instance.showPanel.curAdvanceBaseLevel && advanceEquip.NeedSoulDan <= AdvanceMountPanelCtr.Instance.showPanel.curAdvanceServerLevel) { return true; } } return false; } return false; } public void ShowEquipTip() { UIManager.ShowUI(UIInfo.AdvanceEquipTips, delegate(bool bSucess, object param) { if(bSucess) { GameItem item = new GameItem(); item.DataID = curItemDataId; AdvanceEquipTip.Instance.ShowAdvanceEquipTip(item, ItemTooltipsLogic.ShowType.Equiped, this.gameObject.transform.position); } }); } public void ShowOrHideRedIcon(bool isShow) { redIcon.SetActive(isShow); } public bool IsShowingRedPoint() { if(redIcon != null) { return redIcon.activeSelf; } else { return false; } } }