using TMPro; using UnityEngine; using UnityEngine.UI; public class PCAbilityCard : CardBase { public Image[] images; // 0 아이콘 public TextMeshProUGUI[] texts; // 0 레벨, 1 테스트 코드 public RectTransform[] tfs_line; // 0 가로1 (→), 1 세로 (↑), 2 가로2 (↑→), 3 세로 (↓), 4 가로2 (↓→) AbilityConfigTableData m_Data; public override void Set(T _base) { base.Set(_base); m_Data = _base as AbilityConfigTableData; Set_UI(); //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); //} } 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); texts[0].text = $"{sdata.Get_AbilityLv(m_Data.n_AbilityID)}/{m_Data.n_MaxUpgradeLevel}"; texts[1].text = ""; #if UNITY_EDITOR texts[1].text = $"{m_Data.n_AbilityStep},{m_Data.n_AbilityOrder}"; #endif } 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++) Set_Connect(i, requires[i]); } void Set_Connect(int index, AbilityConfigTableData requiredata) { 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) { // 옆으로 tfs_line[0].sizeDelta = new Vector2(step * 327.5f, tfs_line[0].sizeDelta.y); } else if (order < 0) { // 위로 tfs_line[0].sizeDelta = new Vector2(168.8f, tfs_line[0].sizeDelta.y); tfs_line[1].gameObject.SetActive(true); tfs_line[1].anchoredPosition = new Vector2(163.75f, -5f); tfs_line[1].sizeDelta = new Vector2(updown * 195f, tfs_line[1].sizeDelta.y); 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); } else { // 아래로 tfs_line[0].sizeDelta = new Vector2(168.8f, tfs_line[0].sizeDelta.y); tfs_line[3].gameObject.SetActive(true); tfs_line[3].anchoredPosition = new Vector2(163.75f, 5f); tfs_line[3].sizeDelta = new Vector2(updown * 195f, tfs_line[3].sizeDelta.y); 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); } } 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 = ""; //DSUtil.InActivateGameObjects(gos_arrow); } public override void Do_SomeThing() { m_Data = null; gameObject.SetActive(false); } public void OnClick_Ability() { if (CardType == eUICardType.UI) PCAbilityUI.Ins.m_PCAbilityLvUpUI.Set(m_Data); } }