Project_WL/Assets/Script/UI/Skill/SkillCard.cs

118 lines
3.8 KiB
C#
Raw Normal View History

using System;
using System.Collections.Generic;
2024-12-15 01:39:39 +00:00
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class SkillCard : CardCoolTimeBase
{
public static Dictionary<int, Func<bool>> dic_button = new Dictionary<int, Func<bool>>();
2024-12-15 01:39:39 +00:00
public Image[] images; // 0 아이콘
public GameObject[] gos; // 0 장착중, 1 잠김
SkillListTableData m_Data;
int m_Slot, m_PetId, m_Petlv;
public override void Set<T>(T _base)
{
base.Set(_base);
m_Data = _base as SkillListTableData;
CoolTime_Off();
if (!DSUtil.CheckNull(m_Data))
{
var sdata = ServerInfo.Ins.m_ServerData;
images[0].sprite = m_Data.Get_Icon();
gos[0].SetActive(sdata.IsEquipSkill(m_Data.n_SkillID, sdata.Equip.Preset));
gos[1].SetActive(sdata.Get_SkillLv(eRole.PC, m_Data.n_SkillID) == 0);
}
else
{
gos[0].SetActive(false);
gos[1].SetActive(true);
images[0].sprite = UIAtlasMgr.Ins.Get_Sprite("skillempty");
}
}
public override void Set(int _val)
{
m_Slot = _val;
}
public void Set_PetSkill(int skillid, int petid, int lv)
{
CoolTime_Off();
m_PetId = petid;
m_Petlv = lv;
m_Data = table_skilllist.Ins.Get_Data_orNull(skillid);
DSUtil.InActivateGameObjects(gos);
images[0].sprite = m_Data.Get_Icon();
}
public override void Set_CardType(eUICardType _type)
{
base.Set_CardType(_type);
2025-02-17 06:56:36 +00:00
var et = images[1].GetComponent<EventTrigger>();
2024-12-15 01:39:39 +00:00
switch (CardType)
{
case eUICardType.UI:
2025-02-17 06:56:36 +00:00
et.enabled = false;
2025-01-10 02:42:37 +00:00
images[1].GetComponent<Button>().onClick.AddListener(OnClick_SkillUI);
2024-12-15 01:39:39 +00:00
break;
case eUICardType.Use:
2025-02-17 06:56:36 +00:00
et.enabled = true;
2024-12-15 01:39:39 +00:00
break;
}
}
public void OnClick_SkillUI()
{ // UI 스킬 카드
NewGameUI.Ins.m_SkillUI.m_SkillUI_SkillInfo.Set(m_Data);
}
public void OnClick_Skill()
{ // 실제 스킬 사용
if (CardType == eUICardType.UIEquip)
{
var sdata = ServerInfo.Ins.m_ServerData;
int unequipid = 0;
if (!DSUtil.CheckNull(m_Data))
unequipid = m_Data.n_SkillID;
sdata.Equip.Set_Equip(eItem.Skill, NewGameUI.Ins.m_SkillUI.m_SkillUI_SkillInfo.Get_Data().n_SkillID, m_Slot, unequipid);
NewGameUI.Ins.m_SkillUI.Set_UI();
NewGameUI.Ins.m_SkillUI.m_SkillEquipUI.Set(eUICardType.UIEquip);
}
else
{
if (!DSUtil.CheckNull(m_Data))
{
switch (CardType)
{
case eUICardType.Use:
if (dic_button.ContainsKey(m_Data.n_SkillID))
{
if (dic_button[m_Data.n_SkillID]())
dic_button.Remove(m_Data.n_SkillID);
}
else if (m_CoolTime <= 0f)
2024-12-15 01:39:39 +00:00
{
if (MyValue.MyPC.Use_Skill(m_Data, false, m_Index))
m_CoolTime = m_Data.Get_CoolTime(MyValue.MyPC.Get_StatInfo().Get_Stat(eStat.COOLTIME_Multiplier));
}
else
MessageInfo.Ins.Add_Log(166);
break;
case eUICardType.UIPetSkill:
NewGameUI.Ins.m_PetUI.m_PetSkillDetailUI.Set(m_Data.n_SkillID, m_PetId, m_Petlv);
break;
default:
//ItemDescUI.Ins.Set(m_ItemData);
break;
}
}
}
}
public override TableDataBase Get_Data() { return m_Data; }
}