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 list_SkillAwakenData = new List { 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; } }