Files
JJBB/Assets/Project/Script/GUI/Equip/EquipEnhanceItem.cs
2024-08-23 15:49:34 +08:00

280 lines
7.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}