Project_WL/Assets/Script/UI/PC/Awaken/PCAwakenCard.cs

151 lines
5.2 KiB
C#
Raw Normal View History

2025-07-02 04:01:25 +00:00
using CodeStage.AntiCheat.ObscuredTypes;
2024-12-15 01:39:39 +00:00
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class PCAwakenCard : CardBase
{
2025-02-15 00:45:35 +00:00
public Image[] images; // 0 스탯
2025-07-10 07:06:21 +00:00
public TextMeshProUGUI[] texts; // 0 스탯명, 1 누적 스탯, 2 각성 단계, 3 누적 강화, 4 현재 스탯 명, 5 현재 각성 스탯 값
2024-12-15 01:39:39 +00:00
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;
2025-07-02 04:01:25 +00:00
ObscuredInt m_Price;
2024-12-15 01:39:39 +00:00
public override void Set<T>(T _base)
{
base.Set(_base);
m_Stat = DSUtil.StringToEnum<eStat>(_base.ToString());
2025-07-12 22:45:21 +00:00
images[0].sprite = UIAtlasMgr.Ins.Get_MainStatSprite(m_Stat);
2024-12-15 01:39:39 +00:00
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))
{
2025-07-10 07:06:21 +00:00
texts[4].text = texts[0].text = MyText.Get_StatName(m_Stat);
2025-02-15 00:45:35 +00:00
texts[1].text = actorinfo.Get_Stat(m_Stat).ToString("N0");
2024-12-15 01:39:39 +00:00
texts[3].text = $"{exp}/{m_AwakenUpgradeTableData.n_MaxUpgradeLevel}";
slider_acc.value = DSUtil.Get_SliderValue((float)exp / m_AwakenUpgradeTableData.n_MaxUpgradeLevel);
2025-07-10 07:06:21 +00:00
var awakenData = table_awakenconfig.Ins.Get_Data(m_Stat, 1);
var slotlv = sdata.Get_AwakenSlotLv(m_Stat, 1);
texts[5].text = DSUtil.Format("+{0}", (int)awakenData.Get_Value(slotlv));
2024-12-15 01:39:39 +00:00
var moneyid = table_GlobalValue.Ins.Get_Int("AWAKEN_GOODS_UPGRADE");
2025-07-02 04:01:25 +00:00
m_Price = (int)m_AwakenUpgradeTableData.Get_Price(lv);
m_Price.RandomizeCryptoKey();
2024-12-15 01:39:39 +00:00
var obtain = sdata.Get_ItemAmount(moneyid);
2025-07-10 07:06:21 +00:00
m_MoneyForm.icon.sprite = UIAtlasMgr.Ins.Get_Sprite(moneyid);
2025-07-02 04:01:25 +00:00
m_MoneyForm.amount.text = NumberFormatter.FormatNumber(m_Price);
m_MoneyForm.amount.color = m_Price > obtain ? Color.red : Color.green;
2024-12-15 01:39:39 +00:00
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);
2025-07-02 04:01:25 +00:00
if (sdata.Check_ItemAmount(moneyid, m_Price))
2024-12-15 01:39:39 +00:00
{
2025-07-29 07:28:55 +00:00
var csdata = PCAwakenUI.Ins.Get_CS_AwakenData();
++csdata.upgrade[m_Stat];
sdata.Use_Item(moneyid, m_Price);
sdata.Add_AwakenExp(m_Stat);
Set_UI();
//ServerInfo.Ins.Save_PC_AwakenLvUp(m_Stat, () =>
//{
// sdata.Use_Item(moneyid, m_Price);
// sdata.Add_AwakenExp(m_Stat);
// Set_UI();
//});
2024-12-15 01:39:39 +00:00
}
}
}
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))
{
2025-07-29 07:28:55 +00:00
var csdata = PCAwakenUI.Ins.Get_CS_AwakenData();
++csdata.awaken[m_Stat];
sdata.Use_Item(moneyid, m_AwakenUpgradeTableData.n_AwakenGoodsCost);
sdata.Add_AwakenLv(m_Stat);
Set_UI();
//ServerInfo.Ins.Save_PC_Awaken(m_Stat, () =>
//{
// sdata.Use_Item(moneyid, m_AwakenUpgradeTableData.n_AwakenGoodsCost);
// sdata.Add_AwakenLv(m_Stat);
// Set_UI();
//});
2024-12-15 01:39:39 +00:00
}
}
}
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");
}
}
2025-03-19 06:56:28 +00:00
int Get_AwakenMissionID()
{
switch (m_Stat)
{
default: return 1;
case eStat.DEX: return 2;
case eStat.INT: return 3;
case eStat.LUK: return 4;
}
}
2024-12-15 01:39:39 +00:00
}