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

267 lines
9.0 KiB
C#

using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using GCGame.Table;
using Games.Item;
using Games.GlobeDefine;
using GCGame;
using System.Collections.Generic;
using Module.Log;
using Games.UserCommonData;
public class EquipGemSuitTips : UIControllerBase<EquipGemSuitTips>
{
void OnEnable()
{
SetInstance(this);
}
void OnDisable()
{
SetInstance(null);
}
#region static
public static void Show(int suitID, GameItem equipItem, int suitType)
{
Hashtable hash = new Hashtable();
hash.Add("SuitID", suitID);
hash.Add("EquipItem", equipItem);
hash.Add("SuitType", suitType);
UIManager.ShowUI(UIInfo.EquipGemSuitTips, EquipGemSuitTips.ShowUIOver, hash);
}
static void ShowUIOver(bool bSuccess, object param)
{
if (bSuccess)
{
Hashtable hash = param as Hashtable;
if (EquipGemSuitTips.Instance() != null)
{
EquipGemSuitTips.Instance().ShowInner((int)hash["SuitID"], (GameItem)hash["EquipItem"], (int)hash["SuitType"]);
}
}
}
void ShowInner(int suitID, GameItem equipItem, int suitType)
{
ShowGemTipsLevel(suitID, equipItem, suitType);
}
#endregion
public Text _Title;
public Text _CurName;
public UIImgText _CurCombat;
public GameObject _CurCombatPanel;
public List<Text> _CurAttrs;
public Text _CurCondition;
public Text _NextName;
public UIImgText _NextCombat;
public GameObject _NextCombatPanel;
public List<Text> _NextAttrs;
public Text _NextCondition;
private void ShowGemTipsLevel(int suitID, GameItem equipItem, int suitType)
{
var curSuitTab = TableManager.GetGemSuitByID(suitID);
if (suitID > 0)
{
if (curSuitTab == null)
{
CloseWindow();
return;
}
}
int nextLevel = 1;
if (curSuitTab != null)
{
nextLevel = curSuitTab.SuitLevel + 1;
}
Tab_GemSuit nextSuitTab = null;
var suitTables = TableManager.GetGemSuit().Values;
var gemSuitInlay = TableManager.GetGemSuitInlayByID(equipItem.DataID, 0);
int requireSuitId = 0;
if (suitType == 1){
requireSuitId = gemSuitInlay.GetSuitIDbyIndex(0);
}
else if(suitType == 2)
{
requireSuitId = gemSuitInlay.GetSuitIDbyIndex(1);
}
else if (suitType == 3)
{
requireSuitId = gemSuitInlay.GetSuitIDbyIndex(2);
}
foreach (var suitTab in suitTables)
{
//if (suitTab.RequireGemType == suitType
if (suitTab.SuitID == requireSuitId
&& suitTab.SuitLevel == nextLevel)
{
//if (suitTab.SuitID == requireSuitId)
{
nextSuitTab = suitTab;
break;
}
}
}
if (suitType == 1)
{
_Title.text = StrDictionary.GetClientDictionaryString("#{5426}");
if (curSuitTab != null)
{
_CurCondition.text = StrDictionary.GetClientDictionaryString("#{5428}", curSuitTab.RequireGemLevel) + GetConditionStr(curSuitTab, equipItem);
}
if (nextSuitTab != null)
{
_NextCondition.text = StrDictionary.GetClientDictionaryString("#{5428}", nextSuitTab.RequireGemLevel) + GetConditionStr(nextSuitTab, equipItem);
}
}
else if (suitType == 2)
{
_Title.text = StrDictionary.GetClientDictionaryString("#{5427}");
if (curSuitTab != null)
{
_CurCondition.text = StrDictionary.GetClientDictionaryString("#{5429}", curSuitTab.RequireGemNum, curSuitTab.RequireGemLevel) + GetConditionStr(curSuitTab, equipItem);
}
if (nextSuitTab != null)
{
_NextCondition.text = StrDictionary.GetClientDictionaryString("#{5429}", nextSuitTab.RequireGemNum, nextSuitTab.RequireGemLevel) + GetConditionStr(nextSuitTab, equipItem);
}
}
else if (suitType == 3)
{
_Title.text = StrDictionary.GetClientDictionaryString("#{5456}");
if (curSuitTab != null)
{
_CurCondition.text = StrDictionary.GetClientDictionaryString("#{5455}", curSuitTab.RequireGemNum, curSuitTab.RequireGemLevel) + GetConditionStr(curSuitTab, equipItem);
}
if (nextSuitTab != null)
{
_NextCondition.text = StrDictionary.GetClientDictionaryString("#{5455}", nextSuitTab.RequireGemNum, nextSuitTab.RequireGemLevel) + GetConditionStr(nextSuitTab, equipItem);
}
}
if (curSuitTab == null)
{
_CurName.gameObject.SetActive(false);
_CurCombatPanel.gameObject.SetActive(false);
for (int i = 0; i < _NextAttrs.Count; ++i)
{
_CurAttrs[i].gameObject.SetActive(false);
}
_CurCondition.gameObject.SetActive(false);
}
else
{
_CurName.gameObject.SetActive(true);
_CurCombatPanel.gameObject.SetActive(true);
_CurCondition.gameObject.SetActive(true);
_CurCombat.text = curSuitTab.CombatValue.ToString();
for (int i = 0; i < _CurAttrs.Count; ++i)
{
if (curSuitTab.GetPropIDbyIndex(i) >= 0)
{
_CurAttrs[i].gameObject.SetActive(true);
_CurAttrs[i].text = PropID.GetAttrValue((PropID.PropertyID)curSuitTab.GetPropIDbyIndex(i), curSuitTab.GetPropSubIDbyIndex(i), curSuitTab.GetPropValuebyIndex(i));
}
else
{
_CurAttrs[i].gameObject.SetActive(false);
}
}
}
if (nextSuitTab == null)
{
_NextName.gameObject.SetActive(false);
_NextCombatPanel.gameObject.SetActive(false);
for (int i = 0; i < _NextAttrs.Count; ++i)
{
_NextAttrs[i].gameObject.SetActive(false);
}
_NextCondition.gameObject.SetActive(false);
}
else
{
_NextName.gameObject.SetActive(true);
_NextCombatPanel.gameObject.SetActive(true);
_NextCombat.text = nextSuitTab.CombatValue.ToString();
for (int i = 0; i < _NextAttrs.Count; ++i)
{
if (nextSuitTab.GetPropIDbyIndex(i) >= 0)
{
_NextAttrs[i].gameObject.SetActive(true);
_NextAttrs[i].text = PropID.GetAttrValue((PropID.PropertyID)nextSuitTab.GetPropIDbyIndex(i), nextSuitTab.GetPropSubIDbyIndex(i), nextSuitTab.GetPropValuebyIndex(i));
}
else
{
_NextAttrs[i].gameObject.SetActive(false);
}
}
_NextCondition.gameObject.SetActive(true);
}
}
public string GetConditionStr(Tab_GemSuit suitTab, GameItem equipItem)
{
string conditionStr = "";
if (suitTab.RequireGemType == 1)
{
int totalLevel = 0;
for (int i = 0; i < equipItem.GemItems.Count; ++i)
{
if (equipItem.GemItems[i].IsValid())
{
totalLevel += equipItem.GemItems[i].Level;
}
}
if (totalLevel >= suitTab.RequireGemLevel)
{
conditionStr = StrDictionary.GetClientDictionaryString("#{5525}") + "(" + totalLevel + "/" + suitTab.RequireGemLevel + ")</color>";
}
else
{
conditionStr = StrDictionary.GetClientDictionaryString("#{5526}") + "(" + totalLevel + "/" + suitTab.RequireGemLevel + ")</color>";
}
}
else
{
int conditionGemNum = 0;
for (int i = 0; i < equipItem.GemItems.Count; ++i)
{
if (equipItem.GemItems[i].IsValid())
{
if (equipItem.GemItems[i].GetQuality() >= suitTab.RequireGemQuality
&& equipItem.GemItems[i].Level >= suitTab.RequireGemLevel)
{
++conditionGemNum;
}
}
}
if (conditionGemNum >= suitTab.RequireGemNum)
{
conditionStr = StrDictionary.GetClientDictionaryString("#{5525}") + "(" + conditionGemNum + "/" + suitTab.RequireGemNum + ")</color>";
}
else
{
conditionStr = StrDictionary.GetClientDictionaryString("#{5526}") + "(" + conditionGemNum + "/" + suitTab.RequireGemNum + ")</color>";
}
}
return conditionStr;
}
public void CloseWindow()
{
UIManager.CloseUI(UIInfo.EquipGemSuitTips);
}
}