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
|
|
|
}
|
|
|
|
|
|
2025-07-01 06:06:07 +00:00
|
|
|
public override void Do_SomeThing()
|
|
|
|
|
{
|
|
|
|
|
m_Data = null;
|
2025-07-18 07:58:48 +00:00
|
|
|
gameObject.SetActive(false);
|
2025-07-01 06:06:07 +00:00
|
|
|
}
|
|
|
|
|
|
2024-12-15 01:39:39 +00:00
|
|
|
public void OnClick_Ability()
|
|
|
|
|
{
|
|
|
|
|
if (CardType == eUICardType.UI)
|
|
|
|
|
PCAbilityUI.Ins.m_PCAbilityLvUpUI.Set(m_Data);
|
|
|
|
|
}
|
|
|
|
|
}
|