using TMPro; using UnityEngine; using UnityEngine.UI; public class PCJobCard : CardBase { public Image[] images; // 0 메인스탯1, 1 메인스탯2 public TextMeshProUGUI[] texts; // 0 직업명, 1 오픈 가능 조건 public GameObject[] gos; // 0 구매 버튼, 1 변경 버튼, 2 착용 중, 3 잠금 public MoneyForm moneyForm; ClassOpenConditionTableData m_Data; public override void Set(T _base) { base.Set(_base); m_Data = _base as ClassOpenConditionTableData; var jobData = table_classconfig.Ins.Get_Data_orNull(m_Data.n_ClassID); moneyForm.icon.sprite = UIAtlasMgr.Ins.Get_Sprite(table_GlobalValue.Ins.Get_Int("n_JobMaterialID")); moneyForm.amount.text = m_Data.n_NeedGoodsCount.ToString(); //images[0].sprite = UIAtlasMgr.Ins.Get_Sprite(m_Data.n_ClassID); images[0].sprite = jobData.Get_MainStatIcon(0); images[1].sprite = jobData.Get_MainStatIcon(1); images[1].gameObject.SetActive(!DSUtil.CheckNull(images[1].sprite)); texts[0].text = m_Data.Get_Name(); Set_UI(); } public override void Set_UI() { var sdata = ServerInfo.Ins.m_ServerData; gos[0].SetActive(!sdata.IsObtainItem(m_Data.n_ClassID)); gos[1].SetActive(sdata.IsObtainItem(m_Data.n_ClassID) && sdata.Get_EqiupmentEquip(eItem.PC) != m_Data.n_ClassID); gos[2].SetActive(sdata.Get_EqiupmentEquip(eItem.PC) == m_Data.n_ClassID); gos[3].SetActive(!sdata.PC.CanJobBuy(m_Data, false)); if (gos[3].activeSelf) { texts[1].text = ""; // 직업1 필요 if (m_Data.n_linkedClass1 > 0) { var job = table_classconfig.Ins.Get_Data_orNull(m_Data.n_linkedClass1); texts[1].text += DSUtil.Format(412, job.Get_JobName()) + "\n"; } // 직업2 필요 if (m_Data.n_linkedClass2 > 0) { var job = table_classconfig.Ins.Get_Data_orNull(m_Data.n_linkedClass2); texts[1].text += DSUtil.Format(412, job.Get_JobName()) + "\n"; } // 특성 확인 if (m_Data.n_RequireAbility > 0) { var ability = table_abilityconfig.Ins.Get_Data_orNull(m_Data.n_RequireAbility); texts[1].text += DSUtil.Format(242, ability.Get_Name()); } // 각성 확인 1 if (m_Data.e_RequireAwakenType1 != eStat.None && m_Data.n_RequireAwakenStep1 > 0) texts[1].text += DSUtil.Format(413, MyText.Get_StatName(m_Data.e_RequireAwakenType1), m_Data.n_RequireAwakenStep1) + "\n"; // 각성 확인 2 if (m_Data.e_RequireAwakenType2 != eStat.None && m_Data.n_RequireAwakenStep2 > 0) texts[1].text += DSUtil.Format(413, MyText.Get_StatName(m_Data.e_RequireAwakenType2), m_Data.n_RequireAwakenStep2) + "\n"; } } bool CanJobBuy(bool showtoast) { var sdata = ServerInfo.Ins.m_ServerData; if (sdata.PC.IsObtainPC(m_Data.n_ClassID)) return false; return sdata.PC.CanJobBuy(m_Data, showtoast); } public void OnClick_JobChange() { var sdata = ServerInfo.Ins.m_ServerData; if (sdata.IsObtainItem(m_Data.n_ClassID)) { // 착용 여부 if (sdata.Get_EqiupmentEquip(eItem.PC) != m_Data.n_ClassID) { // 착용하기 sdata.Equip.Set_Equip(eItem.PC, m_Data.n_ClassID); Set_UI(); PCJobUI.Ins.Set(); MyValue.Get_ActorStatInfoorNull(eRole.PC); } } else { // 전직 if (CanJobBuy(true)) { var moneyid = table_GlobalValue.Ins.Get_Int("n_JobMaterialID"); if (sdata.Check_ItemAmount(moneyid, m_Data.n_NeedGoodsCount)) { ServerInfo.Ins.Save_PC_BuyJob(m_Data.n_ClassID, () => { sdata.Use_Item(moneyid, m_Data.n_NeedGoodsCount); sdata.PC.Add_PC(m_Data.n_ClassID); // 고유 스킬 지급 var skills = table_skilllist.Ins.Get_DataList(eSkillType.JobPassive, m_Data.n_ClassID); for (int i = 0; i < skills.Count; i++) sdata.Add_Skill(skills[i].n_SkillID, 1); Set_UI(); MyValue.Get_ActorStatInfoorNull(eRole.PC); }); } } } } public void OnClick_Job() { PCJobUI.Ins.Set(m_Data.n_ClassID); } }