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

120 lines
4.4 KiB
C#

using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class SkillUI_SkillInfo : uScrollViewMgr
{
public TextMeshProUGUI[] texts; // 0 쿨타임, 1 스킬명, 2 스킬설명, 3 스킬 종류, 4 레벨
public Image[] images; // 0 강화 재료, 1 각성 재료, 2 스킬 아이콘
public TextMeshProUGUI[] texts_reinfore; // 0 lv, 1 레벨업 효과, 2 강화 가격
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[2].sprite = m_Data.Get_Icon();
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);
texts_reinfore[1].text = $"{m_Data.Get_SkillDamage(m_PCStatInfo, lv)} >> {m_Data.Get_SkillDamage(m_PCStatInfo, lv, 1)}";
texts_reinfore[2].text = NumberFormatter.FormatNumber(m_Data.Get_ReinforcePrice(lv));
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()
{
if (Can_Reinforce(true))
{
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();
}
}
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);
images[0].sprite = UIAtlasMgr.Ins.Get_Sprite(15);
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();
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);
var alv = sdata.Get_SkillAwakenLv(m_Data.n_SkillID);
if (lv > 0 && alv < 3)
{
var goodsid = table_GlobalValue.Ins.Get_Int("AWAKEN_GOODS_UPGRADE");
return sdata.Check_ItemAmount(goodsid, alv + 1, toast);
}
return false;
}
public void OnClick_Awaken()
{
if (Can_Awaken(true))
{
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);
sdata.Use_Item(goodsid, alv + 1);
sdata.Add_SkillAwakenLv(m_Data.n_SkillID);
Set_UI();
NewGameUI.Ins.m_SkillUI.Refresh_Money();
}
}
public SkillListTableData Get_Data() { return m_Data; }
}