113 lines
3.8 KiB
C#
113 lines
3.8 KiB
C#
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
public class PCAwakenCard : CardBase
|
|
{
|
|
public Image[] images; // 0 스탯
|
|
public TextMeshProUGUI[] texts; // 0 스탯명, 1 누적 스탯, 2 각성 단계, 3 누적 강화
|
|
public Slider slider_acc;
|
|
public GameObject[] gos_btn; // 0 강화버튼, 1 각성버튼
|
|
public MoneyForm m_MoneyForm;
|
|
public PCAwakenCard_Stat m_PCAwakenCard_Stat;
|
|
|
|
eStat m_Stat;
|
|
AwakenUpgradeTableData m_AwakenUpgradeTableData;
|
|
|
|
public override void Set<T>(T _base)
|
|
{
|
|
base.Set(_base);
|
|
m_Stat = DSUtil.StringToEnum<eStat>(_base.ToString());
|
|
images[0].sprite = UIAtlasMgr.Ins.Get_Sprite($"awaken_{m_Stat} icon");
|
|
Set_UI();
|
|
}
|
|
|
|
public override void Set_UI()
|
|
{
|
|
var sdata = ServerInfo.Ins.m_ServerData;
|
|
var actorinfo = MyValue.Get_ActorStatInfoorNull(eRole.PC);
|
|
var lv = sdata.Get_AwakenLv(m_Stat);
|
|
var exp = sdata.Get_AwakenExp(m_Stat);
|
|
m_AwakenUpgradeTableData = table_awakenupgrade.Ins.Get_Data_orNull(lv);
|
|
|
|
texts[2].text = lv.ToString();
|
|
|
|
if (!DSUtil.CheckNull(m_AwakenUpgradeTableData))
|
|
{
|
|
texts[0].text = MyText.Get_StatName(m_Stat);
|
|
texts[1].text = actorinfo.Get_Stat(m_Stat).ToString("N0");
|
|
texts[3].text = $"{exp}/{m_AwakenUpgradeTableData.n_MaxUpgradeLevel}";
|
|
slider_acc.value = DSUtil.Get_SliderValue((float)exp / m_AwakenUpgradeTableData.n_MaxUpgradeLevel);
|
|
|
|
var moneyid = table_GlobalValue.Ins.Get_Int("AWAKEN_GOODS_UPGRADE");
|
|
var need = m_AwakenUpgradeTableData.Get_Price(lv);
|
|
var obtain = sdata.Get_ItemAmount(moneyid);
|
|
m_MoneyForm.amount.text = NumberFormatter.FormatNumber(need);
|
|
m_MoneyForm.amount.color = need > obtain ? Color.red : Color.green;
|
|
|
|
m_PCAwakenCard_Stat.Set(m_Stat);
|
|
|
|
// 강화 <-> 각성 버튼
|
|
gos_btn[0].SetActive(CanLvUp());
|
|
gos_btn[1].SetActive(CanAwaken());
|
|
}
|
|
else
|
|
{
|
|
DSUtil.InActivateGameObjects(gos_btn);
|
|
texts[3].text = "";
|
|
slider_acc.value = 1f;
|
|
}
|
|
}
|
|
|
|
bool CanLvUp()
|
|
{
|
|
return ServerInfo.Ins.m_ServerData.Get_AwakenExp(m_Stat) < m_AwakenUpgradeTableData.n_MaxUpgradeLevel;
|
|
}
|
|
|
|
bool CanAwaken()
|
|
{
|
|
return !CanLvUp() && !DSUtil.CheckNull(table_awakenupgrade.Ins.Get_Data_orNull(ServerInfo.Ins.m_ServerData.Get_AwakenLv(m_Stat) + 1));
|
|
}
|
|
|
|
public void OnClick_LvUp()
|
|
{
|
|
if (CanLvUp())
|
|
{
|
|
var sdata = ServerInfo.Ins.m_ServerData;
|
|
var moneyid = table_GlobalValue.Ins.Get_Int("AWAKEN_GOODS_UPGRADE");
|
|
var lv = sdata.Get_AwakenLv(m_Stat);
|
|
if (sdata.Check_ItemAmount(moneyid, m_AwakenUpgradeTableData.Get_Price(lv)))
|
|
{
|
|
sdata.Use_Item(moneyid, m_AwakenUpgradeTableData.Get_Price(lv));
|
|
sdata.Add_AwakenExp(m_Stat);
|
|
Set_UI();
|
|
}
|
|
}
|
|
}
|
|
|
|
public void OnClick_Awaken()
|
|
{
|
|
if (CanAwaken())
|
|
{
|
|
var sdata = ServerInfo.Ins.m_ServerData;
|
|
var moneyid = Get_AwakenMoneyID();
|
|
if (sdata.Check_ItemAmount(moneyid, m_AwakenUpgradeTableData.n_AwakenGoodsCost))
|
|
{
|
|
sdata.Use_Item(moneyid, m_AwakenUpgradeTableData.n_AwakenGoodsCost);
|
|
sdata.Add_AwakenLv(m_Stat);
|
|
Set_UI();
|
|
}
|
|
}
|
|
}
|
|
|
|
int Get_AwakenMoneyID()
|
|
{
|
|
switch (m_Stat)
|
|
{
|
|
default: return table_GlobalValue.Ins.Get_Int("AWAKEN_GOODS_STR");
|
|
case eStat.DEX: return table_GlobalValue.Ins.Get_Int("AWAKEN_GOODS_DEX");
|
|
case eStat.INT: return table_GlobalValue.Ins.Get_Int("AWAKEN_GOODS_INT");
|
|
case eStat.LUK: return table_GlobalValue.Ins.Get_Int("AWAKEN_GOODS_LUK");
|
|
}
|
|
}
|
|
} |