163 lines
4.9 KiB
C#
163 lines
4.9 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|