145 lines
5.4 KiB
C#
145 lines
5.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 레벨, 5 등급
|
|
public Image[] images; // 0 강화 재료, 1 각성 재료, 2 스킬 아이콘
|
|
public TextMeshProUGUI[] texts_reinfore; // 0 lv, 1 강화, 2 현재 %, 3 다음 %
|
|
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();
|
|
|
|
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 = 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));
|
|
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))
|
|
{
|
|
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();
|
|
|
|
sdata.Add_MissionCount(ePurpose.SKILL_UPGRADE_ALL);
|
|
sdata.Add_MissionCount(ePurpose.SKILL_UPGRADE_LIMIT, lv + 1);
|
|
});
|
|
}
|
|
}
|
|
|
|
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();
|
|
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);
|
|
if (lv <= 0)
|
|
{
|
|
if (toast) ToastUI.Ins.Set(999900014);
|
|
return false;
|
|
}
|
|
var alv = sdata.Get_SkillAwakenLv(m_Data.n_SkillID);
|
|
if (alv >= 3)
|
|
{
|
|
if (toast) ToastUI.Ins.Set(999900024);
|
|
return false;
|
|
}
|
|
var needcard = m_Data.Get_SkillEnhanceAmout(alv);
|
|
if (needcard > 0)
|
|
{
|
|
//var goodsid = table_GlobalValue.Ins.Get_Int("AWAKEN_GOODS_UPGRADE");
|
|
return sdata.Check_ItemAmount(m_Data.n_SkillID, needcard, toast);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public void OnClick_Awaken()
|
|
{
|
|
if (Can_Awaken(true))
|
|
{
|
|
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);
|
|
});
|
|
}
|
|
}
|
|
|
|
public SkillListTableData Get_Data() { return m_Data; }
|
|
} |