Project_WL/Assets/Script/UI/PC/Job/PCJobCard.cs

122 lines
4.7 KiB
C#

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>(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)
{ // 착용하기
ServerInfo.Ins.Save_PC_EquipJob(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);
}
}