JJBB/Assets/Project/Script/GUI/Message/EquipTooltipsInfo.cs
2024-08-23 15:49:34 +08:00

627 lines
22 KiB
C#

using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using GCGame.Table;
using Games.Item;
using GCGame;
using System.Collections.Generic;
using Games.GlobeDefine;
using Games.LogicObj;
using Module.Log;
using Games.UserCommonData;
using System;
/// <summary>
/// 装备工具提示信息
/// </summary>
public class EquipTooltipsInfo : MonoBehaviour
{
public RectTransform _TipsBG;
public RectTransform _EquipAttrLayout;
public CommonItemTipsSlot _ItemSlot;
public Text _ItemName;
public Text _ItemType;
public Text _ItemLevel;
public Text _ItemProfession;
public Text _EquipDurable;
public Text _EquipCombat;
public Text _EquipBaseCombat;
public GameObject _BaseCombatUp;
public GameObject _BaseCombatDown;
public GameObject[] _EquipBaseAttr;
public Text[] _EquipBaseAttrValue;
public GameObject[] _EquipBaseAttrUp;
public GameObject[] _EquipBaseAttrDown;
public EquipStarProcess _EquipStarPro;
public GameObject _EquipExLable;
public GameObject[] _EquipExAttr;
public Text[] _EquipExAttrValue;
public Image[] _EquipExAttrImage;
public Text _EquipXilianPoint;
public GameObject _EquipXilianObj;
public GameObject _GemLabel;
public GameObject _GemPanel;
public GameObject[] _GemObjs;
public Image[] _GemIcons;
public Image[] _GemQuality;
public GameObject[] _GemAttrs;
public Text[] _GemAttrValues;
public Text _GemSet1Label;
public GameObject[] _GemSet1Attrs;
public Text[] _GemSet1AttrValues;
public Text _GemSet2Label;
public GameObject[] _GemSet2Attrs;
public Text[] _GemSet2AttrValues;
public Text _GemSet3Label;
public GameObject[] _GemSet3Attrs;
public Text[] _GemSet3AttrValues;
public GameObject _ShihunObj;
public Text _ShihunTime;
public GameObject _BaohuObj;
public Text _BaohuTime;
//attrScoll
public float _ScollHeight;
public ScrollRect _ScollRect;
public LayoutElement _ScollLayout;
public RectTransform _ScollContentTran;
public GameObject _ScollTips;
private GameItem _EquipItem;
private GameItem _Compare;
void Update()
{
SetScollRect();
}
public void SetEquipInfo(GameItem gameItem, GameItem Compare)
{
//gameItem.InitEquipInfo();
_EquipItem = gameItem;
_Compare = Compare;
_ItemSlot.InitItem(gameItem);
_EquipCombat.text = gameItem.EnchanceScore.ToString();
_EquipBaseCombat.text = gameItem.BaseCombat.ToString() + StrDictionary.GetClientDictionaryString("#{5539}") + StrDictionary.GetClientDictionaryString("#{5438}") + "</color>";
//_ItemName.text = gameItem.GetEquipName();
SetProfession();
SetItemName(gameItem);
SetItemType(gameItem);
SetItemUseLevel(gameItem);
SetEquipAttr(gameItem);
SetDurable();
SetScollRect();
_ScollContentTran.anchoredPosition = Vector2.zero;
}
public void SetEquipBaseCombat(int upOrDown)
{
if (upOrDown > 0)
{
_BaseCombatUp.SetActive(true);
_BaseCombatDown.SetActive(false);
}
else if (upOrDown < 0)
{
_BaseCombatUp.SetActive(false);
_BaseCombatDown.SetActive(true);
}
else
{
_BaseCombatUp.SetActive(false);
_BaseCombatDown.SetActive(false);
}
}
void SetItemName(GameItem item)
{
if (item != null && item.IsValid())
{
int nQuality = (int)item.GetQuality();
string equipName = Utils.GetQualityColorInTip(nQuality, _EquipItem.IsFrenzy);
if (item.IsFrenzy)
{
equipName += StrDictionary.GetClientDictionaryString("#{5801}");
}
equipName += TableManager.GetCommonItemByID(item.DataID, 0).Name;
var tabprop = TableManager.GetEquipBaptizeByID(nQuality, 0);
if (tabprop != null && tabprop.PropBarCnt == item.ExAttrs.Count)
{
equipName += StrDictionary.GetClientDictionaryString("#{5342}");
}
if (item.StrengthLevel > 0)
{
equipName += "+" + item.StrengthLevel;
}
equipName += "</color>";
_ItemName.text = equipName;
}
}
void SetProfession()
{
if (_EquipItem != null && _EquipItem.IsValid())
{
Tab_CommonItem tabItem = TableManager.GetCommonItemByID(_EquipItem.DataID, 0);
if (tabItem != null)
{
int proLimit = tabItem.ProfessionRequire;
//string proStr = StrDictionary.GetClientDictionaryString("#{5328}");
string proStr = "";
if (proLimit > 0)
{
for (int i = 0; i < (int)CharacterDefine.PROFESSION.MAX; ++i)
{
if (((proLimit >> i) & 1) > 0)
{
proStr += Utils.GetProfession(i) + " ";
}
}
if (((proLimit >> GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Profession) & 1) == 0)
{
proStr = StrDictionary.GetClientDictionaryString("#{5538}") + proStr + "</Color>";
}
}
else
{
proStr += StrDictionary.GetClientDictionaryString("#{5377}");
}
_ItemProfession.text = proStr;
}
}
}
void SetItemType(GameItem item)
{
_ItemType.text = "";
if (item != null && item.IsValid())
{
Tab_CommonItem tabItem = TableManager.GetCommonItemByID(item.DataID, 0);
if (tabItem != null)
{
int nClassID = tabItem.ClassID;
int nSubClassID = tabItem.SubClassID;
_ItemType.text = Utils.GetItemType(nClassID, nSubClassID, tabItem.ProfessionRequire);
}
}
}
void SetItemUseLevel(GameItem item)
{
if (item != null && item.IsValid())
{
int nPlayerLevel = GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level;
Tab_CommonItem tabItem = TableManager.GetCommonItemByID(item.DataID, 0);
if (null != tabItem)
{
int equipLevel = tabItem.MinLevelRequire;
int nItemUseLevel = item.EquipUseLevel;
string showLevel = nItemUseLevel.ToString();
if (nItemUseLevel < equipLevel)
{
showLevel = equipLevel.ToString() + "-" + (equipLevel - nItemUseLevel).ToString();
}
showLevel = StrDictionary.GetClientDictionaryString("#{2162}", showLevel);
if (nPlayerLevel >= nItemUseLevel)
{
//_ItemLevel.text = StrDictionary.GetClientDictionaryString("#{3319}", showLevel);
_ItemLevel.text = showLevel.ToString();
}
else
{
//_ItemLevel.text = StrDictionary.GetClientDictionaryString("#{5538}") + StrDictionary.GetClientDictionaryString("#{3319}", showLevel) + "</color>";
_ItemLevel.text = StrDictionary.GetClientDictionaryString("#{5538}") + showLevel + "</color>";
}
}
}
}
void SetDurable()
{
Tab_EquipAttr tabItem = TableManager.GetEquipAttrByID(_EquipItem.DataID, 0);
if (tabItem == null)
return;
string durableStr = StrDictionary.GetClientDictionaryString("#{5306}", _EquipItem.Durable, tabItem.DurablePropValue);
if (_EquipItem.Durable < 20)
{
durableStr = StrDictionary.GetClientDictionaryString("#{5538}") + durableStr + "</color>";
}
_EquipDurable.text = durableStr;
}
void SetEquipAttr(GameItem item)
{
SetBaseAttr();
SetExAttr();
SetGemInfo();
SetOtherAttr();
}
private EquipXilianAttr _ShowAttr;
public void SetBaseAttr()
{
Tab_EquipAttr tabItem = TableManager.GetEquipAttrByID(_EquipItem.DataID, 0);
var strength = _EquipItem.GetTotalStrengthVal();
for (int i = 0; i < _EquipBaseAttr.Length; ++i)
{
if (_EquipItem.BaseAttrs.Count <= i)
{
_EquipBaseAttr[i].SetActive(false);
continue;
}
_EquipBaseAttr[i].SetActive(true);
_EquipBaseAttrValue[i].text = PropID.GetAttrValue(_EquipItem.BaseAttrs[i]._PropID, _EquipItem.BaseAttrs[i]._SubID, _EquipItem.BaseAttrs[i]._Value1).Replace('+', ' ');
if (strength > 0 && tabItem.GetIsEnchanceAddbyIndex(i) > 0)
{
//int enhanceUp = _EquipItem.GetStrengthVal();
//int frenzyUp = (int)(tabItem.GetPropValuebyIndex(i) * _EquipItem.GetFrenzyVal() / 100.0f);
////int entryUp = PlayerPrefs.GetInt("entryUp");
//int entryUp = _EquipItem.GetXilianBasetAttr();
//if (enhanceUp > 0)
//{
// //强化
// _EquipBaseAttrValue[i].text += StrDictionary.GetClientDictionaryString("#{5539}") + "+" + enhanceUp + "%" + StrDictionary.GetClientDictionaryString("#{5807}") + "</color>";
//}
//if (entryUp > 0 && PlayerPrefs.GetInt("isReplace") > 0)
//{
// //洗练词条
// _EquipBaseAttrValue[i].text += StrDictionary.GetClientDictionaryString("#{5539}") + "+" + (float)entryUp+ "%" + StrDictionary.GetClientDictionaryString("#{5439}") + "</color>";
//}
//if (frenzyUp > 0)
//{
// //狂化
// _EquipBaseAttrValue[i].text += StrDictionary.GetClientDictionaryString("#{5539}") + "+" + frenzyUp + StrDictionary.GetClientDictionaryString("#{5808}") + "</color>";
//}
}
int enhanceUp = _EquipItem.GetStrengthVal();
int frenzyUp = (int)(tabItem.GetPropValuebyIndex(i) * _EquipItem.GetFrenzyVal() / 100.0f);
//int entryUp = PlayerPrefs.GetInt("entryUp");
int entryUp = _EquipItem.GetXilianBasetAttr();
if (enhanceUp > 0)
{
//强化
_EquipBaseAttrValue[i].text += StrDictionary.GetClientDictionaryString("#{5539}") + "+" + enhanceUp + "%" + StrDictionary.GetClientDictionaryString("#{5807}") + "</color>";
}
if (entryUp > 0 && PlayerPrefs.GetInt("isReplace") > 0)
{
//洗练词条
_EquipBaseAttrValue[i].text += StrDictionary.GetClientDictionaryString("#{5539}") + "+" + (float)entryUp + "%" + StrDictionary.GetClientDictionaryString("#{5439}") + "</color>";
}
if (frenzyUp > 0)
{
//狂化
_EquipBaseAttrValue[i].text += StrDictionary.GetClientDictionaryString("#{5539}") + "+" + frenzyUp + StrDictionary.GetClientDictionaryString("#{5808}") + "</color>";
}
if (_EquipBaseAttrUp.Length > i)
{
_EquipBaseAttrUp[i].SetActive(false);
}
if(_EquipBaseAttrDown.Length > i)
{
_EquipBaseAttrDown[i].SetActive(false);
}
if (_Compare != null)
{
for(int j=0;j<_Compare.BaseAttrs.Count;j++)
{
if(_Compare.BaseAttrs[j]._PropID == _EquipItem.BaseAttrs[i]._PropID && _Compare.BaseAttrs[j]._SubID == _EquipItem.BaseAttrs[i]._SubID)
{
if (_EquipBaseAttrUp.Length > i)
_EquipBaseAttrUp[i].SetActive(_Compare.BaseAttrs[j]._Value1 < _EquipItem.BaseAttrs[i]._Value1);
if (_EquipBaseAttrDown.Length > i)
_EquipBaseAttrDown[i].SetActive(_Compare.BaseAttrs[j]._Value1 > _EquipItem.BaseAttrs[i]._Value1);
}
}
}
}
_EquipStarPro.Value = _EquipItem.GetStrengthPerfect();
}
public void SetExAttr()
{
if (_EquipItem.ExAttrs.Count == 0)
{
_EquipExLable.SetActive(false);
}
else
{
_EquipExLable.SetActive(true);
}
var equipAttrTab = TableManager.GetEquipBaptizeByID((int)_EquipItem.GetQuality(), 0);
for (int i = 0; i < _EquipExAttr.Length; ++i)
{
if (_EquipItem.ExAttrs.Count <= i)
{
_EquipExAttr[i].SetActive(false);
continue;
}
if (_EquipItem.ExAttrs[i] == null || _EquipItem.ExAttrs[i].XilianTab == null)
{
_EquipExAttr[i].SetActive(false);
continue;
}
_EquipExAttr[i].SetActive(true);
string attrStr = (_EquipItem.ExAttrs[i].XilianTab.Name) + PropID.GetAttrValue((PropID.PropertyID)_EquipItem.ExAttrs[i].XilianTab.PropID, _EquipItem.ExAttrs[i].PropSubID, _EquipItem.ExAttrs[i].XilianValue);
string colorStr = _EquipItem.ExAttrs[i].XilianTab.GetColorInBlackbyIndex(GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Profession);
//string colorStr = _EquipItem.ExAttrs[i].XilianTab.GetColorbyIndex(GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Profession);
if (string.IsNullOrEmpty(colorStr) || colorStr.Length < 15)
{
_EquipExAttrValue[i].text = _EquipItem.GetEquipColorStr(true) + attrStr + "</color>";
}
else
{
_EquipExAttrValue[i].text = colorStr + attrStr + "</color>";
}
if (equipAttrTab != null && i < equipAttrTab.PropBarFixedNumber)
{
_EquipExAttrImage[i].enabled = true;
}
else
{
_EquipExAttrImage[i].enabled = false;
}
}
if (_EquipItem.XilianPoint > 0)
{
_EquipXilianObj.SetActive(true);
_EquipXilianPoint.text = _EquipItem.XilianPoint.ToString();
}
else
{
_EquipXilianObj.SetActive(false);
}
}
public void SetGemInfo()
{
if (_EquipItem.IsEquipGem())
{
_GemLabel.SetActive(true);
_GemPanel.SetActive(true);
}
else if (_EquipItem.IsEquipGemPos())
{
_GemLabel.SetActive(false);
_GemPanel.SetActive(true);
}
else
{
_GemLabel.SetActive(false);
_GemPanel.SetActive(false);
}
for (int i = 0; i < _GemAttrs.Length; ++i)
{
if (_EquipItem.GemItems.Count <= i)
{
_GemAttrs[i].SetActive(false);
_GemObjs[i].gameObject.SetActive(false);
continue;
}
if (_EquipItem.GemItems[i].IsValid())
{
_GemAttrs[i].SetActive(true);
_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);
}
int equipPos = _EquipItem.GetEquipSlotIndex();
var propTab = _EquipItem.GemItems[i].GetGemPropTab(equipPos);
string attrProStr = GemData.GetPropStr(propTab);
attrProStr = attrProStr.Replace("\n", " ");
_GemAttrValues[i].text = (_EquipItem.GemItems[i].GetName()) + ":" + attrProStr;
}
//else if (_EquipItem.GemItems[i].IsOpen)
//{
// _GemAttrs[i].SetActive(false);
// _GemObjs[i].gameObject.SetActive(true);
// _GemIcons[i].gameObject.SetActive(false);
// _GemQuality[i].gameObject.SetActive(false);
//}
else
{
_GemAttrs[i].SetActive(false);
_GemObjs[i].gameObject.SetActive(false);
}
}
if (_EquipItem._GemSuit1 > 0)
{
Tab_GemSuit gemSuitTab = TableManager.GetGemSuitByID(_EquipItem._GemSuit1);
_GemSet1Label.gameObject.SetActive(true);
_GemSet1Label.text = StrDictionary.GetClientDictionaryString("#{5426}") + "·" + gemSuitTab.SuitLevel + StrDictionary.GetClientDictionaryString("#{1058}");
if (gemSuitTab != null)
{
for (int i = 0; i < _GemSet1Attrs.Length; ++i)
{
if (gemSuitTab.getPropIDCount() > i && gemSuitTab.GetPropIDbyIndex(i) >= 0)
{
_GemSet1Attrs[i].SetActive(true);
_GemSet1AttrValues[i].text = PropID.GetAttrValue((PropID.PropertyID)gemSuitTab.GetPropIDbyIndex(i), gemSuitTab.GetPropSubIDbyIndex(i), gemSuitTab.GetPropValuebyIndex(i));
}
else
{
_GemSet1Attrs[i].SetActive(false);
}
}
}
}
else
{
_GemSet1Label.gameObject.SetActive(false);
for (int i = 0; i < _GemSet1Attrs.Length; ++i)
{
_GemSet1Attrs[i].SetActive(false);
}
}
if (_EquipItem._GemSuit2 > 0)
{
Tab_GemSuit gemSuitTab = TableManager.GetGemSuitByID(_EquipItem._GemSuit2);
_GemSet2Label.gameObject.SetActive(true);
_GemSet2Label.text = StrDictionary.GetClientDictionaryString("#{5427}") + "·" + gemSuitTab.SuitLevel + StrDictionary.GetClientDictionaryString("#{1058}");
if (gemSuitTab != null)
{
for (int i = 0; i < _GemSet2Attrs.Length; ++i)
{
if (gemSuitTab.getPropIDCount() > i && gemSuitTab.GetPropIDbyIndex(i) >= 0)
{
_GemSet2Attrs[i].SetActive(true);
_GemSet2AttrValues[i].text = PropID.GetAttrValue((PropID.PropertyID)gemSuitTab.GetPropIDbyIndex(i), gemSuitTab.GetPropSubIDbyIndex(i), gemSuitTab.GetPropValuebyIndex(i));
}
else
{
_GemSet2Attrs[i].SetActive(false);
}
}
}
}
else
{
_GemSet2Label.gameObject.SetActive(false);
for (int i = 0; i < _GemSet2Attrs.Length; ++i)
{
_GemSet2Attrs[i].SetActive(false);
}
}
if (_EquipItem._GemSuit3 > 0)
{
Tab_GemSuit gemSuitTab = TableManager.GetGemSuitByID(_EquipItem._GemSuit3);
_GemSet3Label.gameObject.SetActive(true);
_GemSet3Label.text = StrDictionary.GetClientDictionaryString("#{5456}") + "·" + gemSuitTab.SuitLevel + StrDictionary.GetClientDictionaryString("#{1058}");
if (gemSuitTab != null)
{
for (int i = 0; i < _GemSet3Attrs.Length; ++i)
{
if (gemSuitTab.getPropIDCount() > i && gemSuitTab.GetPropIDbyIndex(i) >= 0)
{
_GemSet3Attrs[i].SetActive(true);
_GemSet3AttrValues[i].text = PropID.GetAttrValue((PropID.PropertyID)gemSuitTab.GetPropIDbyIndex(i), gemSuitTab.GetPropSubIDbyIndex(i), gemSuitTab.GetPropValuebyIndex(i));
}
else
{
_GemSet3Attrs[i].SetActive(false);
}
}
}
}
else
{
_GemSet3Label.gameObject.SetActive(false);
for (int i = 0; i < _GemSet3Attrs.Length; ++i)
{
_GemSet3Attrs[i].SetActive(false);
}
}
}
public void SetOtherAttr()
{
LogModule.DebugLog("_EquipItem.ShihunTime:" + _EquipItem.ShihunTime);
LogModule.DebugLog("_EquipItem.BaohuTime:" + _EquipItem.BaohuTime);
if (_EquipItem.ShihunTime > 0)
{
_ShihunObj.SetActive(true);
//var deltaTick = (long)_EquipItem.ShihunTime * 10000000L + Utils.m_startTime.Ticks - DateTime.Now.Ticks;
//var timeSpan = TimeSpan.FromTicks(deltaTick);
var timeSpan = TimeSpan.FromTicks((long)(_EquipItem.ShihunTime - GlobalData.ServerAnsiTime) * 10000000L);
string timeStr = StrDictionary.GetClientDictionaryString("#{5347}");
if (timeSpan.Days > 0)
{
timeStr += timeSpan.Days + StrDictionary.GetClientDictionaryString("#{5348}");
}
if (timeSpan.Days > 0 || timeSpan.Hours > 0)
{
timeStr += timeSpan.Hours + StrDictionary.GetClientDictionaryString("#{5349}");
}
//if (timeSpan.Days > 0)
{
timeStr += timeSpan.Minutes + StrDictionary.GetClientDictionaryString("#{5350}");
}
_ShihunTime.text = timeStr;
}
else
{
_ShihunObj.SetActive(false);
}
if (_EquipItem.BaohuTime > 0)
{
_BaohuObj.SetActive(true);
}
else
{
_BaohuObj.SetActive(false);
}
}
public void SetScollRect()
{
if (_ScollContentTran.sizeDelta.y > _ScollHeight)
{
_ScollRect.enabled = true;
_ScollLayout.minHeight = _ScollHeight;
if (_ScollContentTran.anchoredPosition.y >= _ScollContentTran.sizeDelta.y - _ScollHeight)
{
_ScollTips.SetActive(false);
}
else
{
_ScollTips.SetActive(true);
}
}
else
{
_ScollRect.enabled = false;
_ScollLayout.minHeight = _ScollContentTran.sizeDelta.y;
_ScollTips.SetActive(false);
}
}
}