Files
JJBB/Assets/Project/Script/GUI/MeridiaSoul/UIItem/SoulItem.cs
2024-08-23 15:49:34 +08:00

109 lines
2.9 KiB
C#

using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using Games.Item;
using GCGame.Table;
using GCGame;
public class SoulItem : UIItemSelect
{
public class SoulItemData
{
public int SoulID;
public int HeavenID;
public string attrName;
public string icon;
public bool CaUp;
public bool isMaxLevel;
}
public Image Lock;
public Image Icon;
public Text Name;
public GameObject up;
public GameObject IsMaxLevel;
public GameObject EffectPoint;
//选中特效
public GameObject[] SelectEffects;
public InitSoulStart m_SoulStar;
SoulItemData m_data = null;
public override void Show(Hashtable hash)
{
m_data = hash["InitObj"] as SoulItemData;
if (m_data == null)
return;
Name.text = m_data.attrName;
up.SetActive(m_data.CaUp);
IsMaxLevel.SetActive(m_data.isMaxLevel);
LoadAssetBundle.Instance.SetImageSprite(Icon, m_data.icon);
SetSoulStar();
SetOpenState(m_data.SoulID, m_data.HeavenID);
InitEffectObj();
base.Show();
}
private void InitEffectObj()
{
Tab_SoulGeneralAttr soul = TableManager.GetSoulGeneralAttrByID(m_data.SoulID, 0);
if (soul == null)
return;
for(int i=0;i<SelectEffects.Length;i++)
{
if(SelectEffects[i]!=null)
{
SelectEffects[i].SetActive((i + 1) == soul.Quility);
}
}
}
private void SetOpenState(int SoulID, int HeavenID)
{
Tab_SoulHeavenAttr Heaven = TableManager.GetSoulHeavenAttrByID(HeavenID, 0);
if(Heaven == null || Heaven.OpenLevel > GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level)
{
Lock.gameObject.SetActive(true);
return;
}
int star = 0;
var kungfuData = MeridiaSoulData.Instance.GetKungfuData(SoulID, HeavenID);
if (kungfuData != null) star = kungfuData.star;
var id = SoulID * 1000 + star;
var soul = TableManager.GetSoulGeneralStarByID(id, 0);
if(soul==null || soul.OpenLevel > GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level)
{
Lock.gameObject.SetActive(true);
return;
}
Lock.gameObject.SetActive(false);
}
public override void Selected()
{
base.Selected();
if (EffectPoint != null)
EffectPoint.SetActive(true);
}
public override void UnSelected()
{
base.UnSelected();
if (EffectPoint != null)
EffectPoint.SetActive(false);
}
public void SetSoulStar()
{
MeridiaSoulData.KungfuSoulData data = MeridiaSoulData.Instance.GetKungfuData(m_data.SoulID, m_data.HeavenID);
if (data != null)
m_SoulStar.InitStart(data.star);
else
m_SoulStar.InitStart(0);
}
}