Files
JJBB/Assets/Project/Script/GUI/Equip/EquipEnhanceItem.cs

280 lines
7.6 KiB
C#
Raw Normal View History

2024-08-23 15:49:34 +08:00
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using Games.Item;
using GCGame.Table;
using GCGame;
// 说明:
// 主要用于锻造系统中的装备列表
// 每次选中Item_SelectGo就会激活没选中就不会。即一个Container中最多仅有一个_SelectGo激活
// 当Container中的选中数目少于多选限制时选中会激活_hasAddedGO没被选中时不会失活仅当再次选中时失活。
public class EquipEnhanceItem : UIItemSelect
{
public Text _EquipName;
public Text _StrengthLv;
public CommonItemEquipItem _EquipItemSlot;
public GameObject[] _GemObjs;
public Image[] _GemIcons;
public Image[] _GemQuality;
public GameItem _EquipItem;
private Tab_CommonItem _TabCommonItem;
public GameObject _HasAddedGO; // 用于显示已被添加
private bool qianghuaTips;
private bool xianqianTips;
private bool kuanghuaTips;
private bool xilianTips;
public override void Show(Hashtable hash)
{
base.Show();
_EquipItem = (GameItem)hash["InitObj"];
qianghuaTips = false;
xianqianTips = false;
kuanghuaTips = false;
xilianTips = false;
if (hash.ContainsKey("QianghuaTips"))
{
qianghuaTips = (bool)hash["QianghuaTips"];
}
if (hash.ContainsKey("XiangqianTips"))
{
xianqianTips = (bool)hash["XiangqianTips"];
}
if (hash.ContainsKey("KuanghuaTips"))
{
kuanghuaTips = (bool)hash["KuanghuaTips"];
}
if (hash.ContainsKey("XiLianTips"))
{
xilianTips = (bool)hash["XiLianTips"];
}
InitEquipItem();
if (qianghuaTips)
{
UpdateQianghuaTips();
}
else if (xianqianTips)
{
UpdateXiangqianTips();
}
else
{
_QianghuaTips.SetActive(false);
}
if (kuanghuaTips)
{
UpdateKuanghuaTips();
}
else if (xilianTips)
{
UpdateXilianDisable();
}
else
{
_EquipItemSlot._DisableFlag.SetActive(false);
}
}
public bool RefreshEqupItem()
{
if (_EquipItem.DataID != _TabCommonItem.Id)
{//物品id不一致无法刷新
return false;
}
else
{
InitEquipItem();
if (qianghuaTips)
{
UpdateQianghuaTips();
}
else if (xianqianTips)
{
UpdateXiangqianTips();
}
else
{
_QianghuaTips.SetActive(false);
}
if (kuanghuaTips)
{
UpdateKuanghuaTips();
}
else
{
_EquipItemSlot._DisableFlag.SetActive(false);
}
return true;
}
}
private void InitEquipItem()
{
_TabCommonItem = TableManager.GetCommonItemByID(_EquipItem.DataID, 0);
if (_TabCommonItem == null)
{
return;
}
if(_EquipItem.StrengthLevel > 0)
{
_StrengthLv.gameObject.SetActive(true);
_StrengthLv.text = StrDictionary.GetClientDictionaryString("#{6758}", _EquipItem.StrengthLevel);
}
else
{
_StrengthLv.gameObject.SetActive(false);
}
_EquipItemSlot.InitItem(_EquipItem);
// 这地方要重新赋值名字因为_EquipItemSlot会更新一次名字
// 强化的装备列表要求特殊处理,不显示强化
_EquipName.text = _EquipItem.GetEquipNameWithoutEnhance();
var playerLevel = ObjManager.Instance.MainPlayer.BaseAttr.Level;
for (int i = 0; i < _GemObjs.Length; ++i)
{
var consumeTab = TableManager.GetEquipPunchConsumeByID(i);
if (_EquipItem.GemItems.Count <= i)
{
_GemObjs[i].gameObject.SetActive(false);
continue;
}
if (_EquipItem.GemItems[i].IsValid())
{
_GemObjs[i].gameObject.SetActive(true);
_GemIcons[i].gameObject.SetActive(true);
_GemQuality[i].gameObject.SetActive(true);
Tab_CommonItem tabItem = TableManager.GetCommonItemByID(_EquipItem.GemItems[i].DataID, 0);
LoadAssetBundle.Instance.SetImageSprite(_GemIcons[i], tabItem.Icon);
LoadAssetBundle.Instance.SetImageSprite(_GemQuality[i], Utils.GetItemQualityFrame(tabItem));
if (tabItem.QualityEffect > 0)
{
CommonItemContainerItem.ShowQualityEffect(true, tabItem.QualityEffect, _GemIcons[i].transform);
}
else
{
CommonItemContainerItem.ShowQualityEffect(false, tabItem.QualityEffect, _GemIcons[i].transform);
}
}
else if (consumeTab.OpenLevel <= playerLevel)
{
_GemObjs[i].gameObject.SetActive(true);
_GemIcons[i].gameObject.SetActive(false);
_GemQuality[i].gameObject.SetActive(false);
}
else
{
_GemObjs[i].gameObject.SetActive(false);
}
}
}
#region _hasAddedGO控制
// 每次调用更改_hasAddedGO的激活状态
public void Add()
{
if (_HasAddedGO != null)
{
_HasAddedGO.SetActive(!_HasAddedGO.activeSelf);
}
}
public void UnAdd()
{
if (_HasAddedGO != null)
{
_HasAddedGO.SetActive(false);
}
}
// 检查是否已经添加
public bool hasAdd()
{
if (_HasAddedGO != null)
return _HasAddedGO.activeSelf;
return false;
}
#endregion
#region qianghua tips
public GameObject _QianghuaTips;
public void UpdateQianghuaTips()
{
if (_EquipItem.IsPlayerEquiped())
{
var qianghuaTips = EquipEnhanceRoot.CanEquipQianhua(_EquipItem);
if (qianghuaTips != EquipEnhanceRoot.QIANGHUA_TIP.NONE)
{
_QianghuaTips.SetActive(true);
return;
}
}
_QianghuaTips.SetActive(false);
}
public void UpdateXiangqianTips()
{
if (_EquipItem.IsPlayerEquiped())
{
if (EquipEnhanceRoot.CanEquipXiangqian(_EquipItem) || (_EquipItem.IsCanAnyGemLvUp()))
{
_QianghuaTips.SetActive(true);
return;
}
}
_QianghuaTips.SetActive(false);
}
#endregion
#region kuanghua tips
public void UpdateKuanghuaTips()
{
_EquipItemSlot._DisableFlag.SetActive(!EquipEnhanceRoot.CanEquipFrenzy(_EquipItem));
_QianghuaTips.SetActive(EquipEnhanceRoot.CanEquipFrenzyMat(_EquipItem));
}
#endregion
#region xilian tips
public void UpdateXilianDisable()
{
var consumeTabs = TableManager.GetEquipPropBarBaptizeConsume().Values;
int equipLevel = _EquipItem.GetMinLevelRequire();
int equipQuality = (int)_EquipItem.GetQuality();
foreach (var consumeTab in consumeTabs)
{
if (consumeTab.MaxLevel >= equipLevel && consumeTab.Quality == equipQuality && consumeTab.ConsumeNum > 0)
{
_EquipItemSlot._DisableFlag.SetActive(false);
return;
}
}
_EquipItemSlot._DisableFlag.SetActive(true);
}
#endregion
}