280 lines
7.6 KiB
C#
280 lines
7.6 KiB
C#
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
|
||
}
|