2024-12-15 01:39:39 +00:00
|
|
|
using TMPro;
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
using UnityEngine.UI;
|
|
|
|
|
|
|
|
|
|
public class PCJobCard : CardBase
|
|
|
|
|
{
|
2025-07-16 07:17:44 +00:00
|
|
|
public Image[] images; // 0 메인스탯1, 1 메인스탯2
|
|
|
|
|
public TextMeshProUGUI[] texts; // 0 직업명, 1 오픈 가능 조건
|
|
|
|
|
public GameObject[] gos; // 0 구매 버튼, 1 변경 버튼, 2 착용 중, 3 잠금
|
|
|
|
|
public MoneyForm moneyForm;
|
2024-12-15 01:39:39 +00:00
|
|
|
|
|
|
|
|
ClassOpenConditionTableData m_Data;
|
|
|
|
|
|
|
|
|
|
public override void Set<T>(T _base)
|
|
|
|
|
{
|
|
|
|
|
base.Set(_base);
|
|
|
|
|
m_Data = _base as ClassOpenConditionTableData;
|
2025-07-16 07:17:44 +00:00
|
|
|
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);
|
2024-12-15 01:39:39 +00:00
|
|
|
|
2025-07-16 07:17:44 +00:00
|
|
|
images[0].sprite = jobData.Get_MainStatIcon(0);
|
|
|
|
|
images[1].sprite = jobData.Get_MainStatIcon(1);
|
|
|
|
|
images[1].gameObject.SetActive(!DSUtil.CheckNull(images[1].sprite));
|
2024-12-15 01:39:39 +00:00
|
|
|
texts[0].text = m_Data.Get_Name();
|
2025-07-16 07:17:44 +00:00
|
|
|
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)
|
|
|
|
|
{ // 착용하기
|
2025-07-30 00:23:52 +00:00
|
|
|
sdata.Equip.Set_Equip(eItem.PC, m_Data.n_ClassID);
|
|
|
|
|
Set_UI();
|
|
|
|
|
PCJobUI.Ins.Set();
|
|
|
|
|
MyValue.Get_ActorStatInfoorNull(eRole.PC);
|
2025-07-16 07:17:44 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
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);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-12-15 01:39:39 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void OnClick_Job()
|
|
|
|
|
{
|
|
|
|
|
PCJobUI.Ins.Set(m_Data.n_ClassID);
|
|
|
|
|
}
|
|
|
|
|
}
|