JJBB/Assets/Project/Script/GUI/Advance/AdvanceEquipItem.cs

163 lines
4.9 KiB
C#
Raw Normal View History

2024-08-23 15:49:34 +08:00
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<GameItem> 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;
}
}
}