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

145 lines
5.4 KiB
C#
Raw Normal View History

2024-12-15 01:39:39 +00:00
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class SkillUI_SkillInfo : uScrollViewMgr
{
2025-07-13 07:04:40 +00:00
public TextMeshProUGUI[] texts; // 0 쿨타임, 1 스킬명, 2 스킬설명, 3 스킬 종류, 4 레벨, 5 등급
2025-02-17 03:24:46 +00:00
public Image[] images; // 0 강화 재료, 1 각성 재료, 2 스킬 아이콘
2025-07-13 07:04:40 +00:00
public TextMeshProUGUI[] texts_reinfore; // 0 lv, 1 강화, 2 현재 %, 3 다음 %
2024-12-15 01:39:39 +00:00
public TextMeshProUGUI[] texts_awaken; // 0 각성 효과, 1 각성 가격
public GameObject[] gos_star, gos_noti;
List<SkillAwakenData> list_SkillAwakenData = new List<SkillAwakenData>
{
new SkillAwakenData{ m_Step = 1 }, new SkillAwakenData{ m_Step = 2 }, new SkillAwakenData{ m_Step = 3 },
};
SkillListTableData m_Data;
ActorStatInfo m_PCStatInfo;
public void Set(SkillListTableData data)
{
if (DSUtil.CheckNull(data)) return;
m_Data = data;
m_PCStatInfo = MyValue.Get_ActorStatInfoorNull(eRole.PC, false);
Set_UI();
}
public override void Set_UI()
{
var sdata = ServerInfo.Ins.m_ServerData;
images[1].sprite = images[2].sprite = m_Data.Get_Icon();
2024-12-15 01:39:39 +00:00
texts[0].text = m_Data.f_CoolTime.ToString("0.##");
texts[1].text = m_Data.Get_Name();
texts[2].text = m_Data.Get_SkillDesc();
texts[3].text = m_Data.e_SkillType.ToString();
texts[4].text = $"Lv.{sdata.Get_SkillLv(eRole.PC, m_Data.n_SkillID)}(+{m_PCStatInfo.Get_Stat(eStat.ALL_SKILL)})";
Set_Reinforce();
Set_Awaken();
}
void Set_Reinforce()
{
var sdata = ServerInfo.Ins.m_ServerData;
var lv = sdata.Get_SkillLv(eRole.PC, m_Data.n_SkillID);
images[0].sprite = UIAtlasMgr.Ins.Get_Sprite(m_Data.n_ConsumeGoodsID);
texts_reinfore[0].text = DSUtil.Format(218, lv);
2025-07-13 07:04:40 +00:00
texts_reinfore[1].text = NumberFormatter.FormatNumber(m_Data.Get_ReinforcePrice(lv));
texts_reinfore[2].text = MyText.Get_PercentValueText(m_Data.Get_SkillDamage(m_PCStatInfo, lv));
texts_reinfore[3].text = MyText.Get_PercentValueText(m_Data.Get_SkillDamage(m_PCStatInfo, lv, 1));
2024-12-15 01:39:39 +00:00
gos_noti[0].SetActive(Can_Reinforce(false));
}
bool Can_Reinforce(bool toast)
{
var sdata = ServerInfo.Ins.m_ServerData;
var lv = sdata.Get_SkillLv(eRole.PC, m_Data.n_SkillID);
if (lv > 0)
return sdata.Check_ItemAmount(m_Data.n_ConsumeGoodsID, m_Data.Get_ReinforcePrice(lv), toast);
return false;
}
public void OnClick_LvUp()
{
2025-07-07 04:54:17 +00:00
if (Can_Reinforce(true))
2024-12-15 01:39:39 +00:00
{
2025-07-07 00:41:30 +00:00
ServerInfo.Ins.Save_Skill_LvUp(m_Data.n_SkillID, () =>
{
var sdata = ServerInfo.Ins.m_ServerData;
var lv = sdata.Get_SkillLv(eRole.PC, m_Data.n_SkillID);
sdata.Use_Item(m_Data.n_ConsumeGoodsID, m_Data.Get_ReinforcePrice(lv));
sdata.Add_SkillLv(m_Data.n_SkillID);
Set_UI();
NewGameUI.Ins.m_SkillUI.Refresh_Money();
2025-03-18 04:37:33 +00:00
2025-07-07 00:41:30 +00:00
sdata.Add_MissionCount(ePurpose.SKILL_UPGRADE_ALL);
sdata.Add_MissionCount(ePurpose.SKILL_UPGRADE_LIMIT, lv + 1);
});
2024-12-15 01:39:39 +00:00
}
}
void Set_Awaken()
{
list_SkillAwakenData.ForEach(f => f.m_SkillData = m_Data);
Set_ScrollView(list_SkillAwakenData);
var sdata = ServerInfo.Ins.m_ServerData;
var lv = sdata.Get_SkillAwakenLv(m_Data.n_SkillID);
var awakenData = table_skillawakenconfig.Ins.Get_Data_orNull(m_Data.n_SkillID, lv + 1);
texts_awaken[0].text = DSUtil.CheckNull(awakenData) ? "no awaken data" : awakenData.Get_Desc();
texts_awaken[1].text = m_Data.Get_SkillEnhanceAmout(lv).ToString();
2024-12-15 01:39:39 +00:00
gos_star[1].SetActive(lv >= 1);
gos_star[2].SetActive(lv >= 2);
gos_noti[1].SetActive(Can_Awaken(false));
}
bool Can_Awaken(bool toast)
{
var sdata = ServerInfo.Ins.m_ServerData;
var lv = sdata.Get_SkillLv(eRole.PC, m_Data.n_SkillID);
2025-07-07 04:54:17 +00:00
if (lv <= 0)
{
if (toast) ToastUI.Ins.Set(999900014);
return false;
}
2024-12-15 01:39:39 +00:00
var alv = sdata.Get_SkillAwakenLv(m_Data.n_SkillID);
2025-07-07 04:54:17 +00:00
if (alv >= 3)
{
if (toast) ToastUI.Ins.Set(999900024);
return false;
}
var needcard = m_Data.Get_SkillEnhanceAmout(alv);
2025-07-07 04:54:17 +00:00
if (needcard > 0)
2024-12-15 01:39:39 +00:00
{
//var goodsid = table_GlobalValue.Ins.Get_Int("AWAKEN_GOODS_UPGRADE");
return sdata.Check_ItemAmount(m_Data.n_SkillID, needcard, toast);
2024-12-15 01:39:39 +00:00
}
return false;
}
public void OnClick_Awaken()
{
if (Can_Awaken(true))
{
2025-07-07 04:54:17 +00:00
ServerInfo.Ins.Save_Skill_Awaken(m_Data.n_SkillID, () =>
{
var sdata = ServerInfo.Ins.m_ServerData;
//var goodsid = table_GlobalValue.Ins.Get_Int("AWAKEN_GOODS_UPGRADE");
var alv = sdata.Get_SkillAwakenLv(m_Data.n_SkillID);
var needcard = m_Data.Get_SkillEnhanceAmout(alv);
sdata.Use_Item(m_Data.n_SkillID, needcard);
sdata.Add_SkillAwakenLv(m_Data.n_SkillID);
Set_UI();
NewGameUI.Ins.m_SkillUI.Refresh_Money();
//sdata.Add_MissionCount(ePurpose.SKILL_AWAKEN_ALL, m_Data.n_SkillID);
//sdata.Add_MissionCount(ePurpose.SKILL_AWAKEN_LIMIT_ALL, m_Data.n_SkillID);
});
2024-12-15 01:39:39 +00:00
}
}
public SkillListTableData Get_Data() { return m_Data; }
}