Project_WL/Assets/Script/UI/PC/Ability/PCAbilityCard.cs

119 lines
4.3 KiB
C#
Raw Permalink Normal View History

2024-12-15 01:39:39 +00:00
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class PCAbilityCard : CardBase
{
public Image[] images; // 0 아이콘
2025-07-18 18:15:28 +00:00
public TextMeshProUGUI[] texts; // 0 레벨, 1 테스트 코드
2025-07-18 07:58:48 +00:00
public RectTransform[] tfs_line; // 0 가로1 (→), 1 세로 (↑), 2 가로2 (↑→), 3 세로 (↓), 4 가로2 (↓→)
2024-12-15 01:39:39 +00:00
AbilityConfigTableData m_Data;
public override void Set<T>(T _base)
{
base.Set(_base);
m_Data = _base as AbilityConfigTableData;
Set_UI();
2025-07-18 07:58:48 +00:00
//var nextability = table_abilityconfig.Ins.Get_Data_orNull(m_Data.n_NextAbility);
//if (!DSUtil.CheckNull(nextability))
//{
// if (nextability.n_AbilityOrder > m_Data.n_AbilityOrder) // 아래로
// gos_arrow[2].SetActive(true);
// else if (nextability.n_AbilityOrder < m_Data.n_AbilityOrder) // 위로
// gos_arrow[3].SetActive(true);
// if (nextability.n_AbilityStep - m_Data.n_AbilityStep >= 2)
// gos_arrow[1].SetActive(true);
// else if (nextability.n_AbilityStep - m_Data.n_AbilityStep == 1)
// gos_arrow[0].SetActive(true);
//}
2024-12-15 01:39:39 +00:00
}
public override void Set_UI()
{
if (DSUtil.CheckNull(m_Data)) return;
var sdata = ServerInfo.Ins.m_ServerData;
images[0].enabled = true;
images[0].sprite = UIAtlasMgr.Ins.Get_Sprite(m_Data.n_AbilityID);
2025-07-18 07:58:48 +00:00
texts[0].text = $"{sdata.Get_AbilityLv(m_Data.n_AbilityID)}/{m_Data.n_MaxUpgradeLevel}";
2025-07-18 18:15:28 +00:00
texts[1].text = "";
#if UNITY_EDITOR
texts[1].text = $"{m_Data.n_AbilityStep},{m_Data.n_AbilityOrder}";
#endif
2025-07-18 07:58:48 +00:00
}
public void ConnectNodes()
{
for (int i = 0; i < tfs_line.Length; i++)
tfs_line[i].gameObject.SetActive(false);
if (DSUtil.CheckNull(m_Data)) return;
var requires = table_abilityconfig.Ins.Get_RequireDataList(m_Data.n_AbilityID);
for (int i = 0; i < requires.Count; i++)
2025-07-18 18:15:28 +00:00
Set_Connect(i, requires[i]);
2025-07-18 07:58:48 +00:00
}
2025-07-18 18:15:28 +00:00
void Set_Connect(int index, AbilityConfigTableData requiredata)
2025-07-18 07:58:48 +00:00
{
2025-07-18 18:15:28 +00:00
tfs_line[0].gameObject.SetActive(true);
var widthindex = index == 0 ? 2 : 4;
var step = requiredata.n_AbilityStep - m_Data.n_AbilityStep; // 값이 최소 1
var order = requiredata.n_AbilityOrder - m_Data.n_AbilityOrder; // 값이 -2 ~ 2 까지
var updown = Mathf.Abs(order);
if (order == 0)
2025-07-18 07:58:48 +00:00
{ // 옆으로
tfs_line[0].sizeDelta = new Vector2(step * 327.5f, tfs_line[0].sizeDelta.y);
}
2025-07-18 18:15:28 +00:00
else if (order < 0)
2025-07-18 07:58:48 +00:00
{ // 위로
tfs_line[0].sizeDelta = new Vector2(168.8f, tfs_line[0].sizeDelta.y);
tfs_line[1].gameObject.SetActive(true);
2025-07-18 18:15:28 +00:00
tfs_line[1].anchoredPosition = new Vector2(163.75f, -5f);
tfs_line[1].sizeDelta = new Vector2(updown * 195f, tfs_line[1].sizeDelta.y);
2025-07-18 07:58:48 +00:00
2025-07-18 18:15:28 +00:00
tfs_line[widthindex].gameObject.SetActive(true);
tfs_line[widthindex].anchoredPosition = new Vector2(159f, updown * 190f);
tfs_line[widthindex].sizeDelta = new Vector2(step * 327.5f - 163.75f, tfs_line[widthindex].sizeDelta.y);
2025-07-18 07:58:48 +00:00
}
else
{ // 아래로
tfs_line[0].sizeDelta = new Vector2(168.8f, tfs_line[0].sizeDelta.y);
tfs_line[3].gameObject.SetActive(true);
2025-07-18 18:15:28 +00:00
tfs_line[3].anchoredPosition = new Vector2(163.75f, 5f);
tfs_line[3].sizeDelta = new Vector2(updown * 195f, tfs_line[3].sizeDelta.y);
2025-07-18 07:58:48 +00:00
2025-07-18 18:15:28 +00:00
tfs_line[widthindex].gameObject.SetActive(true);
tfs_line[widthindex].anchoredPosition = new Vector2(159f, updown * -190f);
tfs_line[widthindex].sizeDelta = new Vector2(step * 327.5f - 163.75f, tfs_line[widthindex].sizeDelta.y);
2025-07-18 07:58:48 +00:00
}
2024-12-15 01:39:39 +00:00
}
public override void Set_CardType(eUICardType _type)
{
base.Set_CardType(_type);
for (int i = 0; i < images.Length; i++)
images[i].enabled = false;
for (int i = 0; i < texts.Length; i++)
texts[i].text = "";
2025-07-18 07:58:48 +00:00
//DSUtil.InActivateGameObjects(gos_arrow);
2024-12-15 01:39:39 +00:00
}
public override void Do_SomeThing()
{
m_Data = null;
2025-07-18 07:58:48 +00:00
gameObject.SetActive(false);
}
2024-12-15 01:39:39 +00:00
public void OnClick_Ability()
{
if (CardType == eUICardType.UI)
PCAbilityUI.Ins.m_PCAbilityLvUpUI.Set(m_Data);
}
}