using CodeStage.AntiCheat.ObscuredTypes; using TMPro; using UnityEngine; using UnityEngine.UI; public class PCAwakenCard : CardBase { public Image[] images; // 0 스탯 public TextMeshProUGUI[] texts; // 0 스탯명, 1 누적 스탯, 2 각성 단계, 3 누적 강화, 4 현재 스탯 명, 5 현재 각성 스탯 값 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; ObscuredInt m_Price; public override void Set(T _base) { base.Set(_base); m_Stat = DSUtil.StringToEnum(_base.ToString()); images[0].sprite = UIAtlasMgr.Ins.Get_MainStatSprite(m_Stat); 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[4].text = 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 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)); var moneyid = table_GlobalValue.Ins.Get_Int("AWAKEN_GOODS_UPGRADE"); m_Price = (int)m_AwakenUpgradeTableData.Get_Price(lv); m_Price.RandomizeCryptoKey(); var obtain = sdata.Get_ItemAmount(moneyid); m_MoneyForm.icon.sprite = UIAtlasMgr.Ins.Get_Sprite(moneyid); m_MoneyForm.amount.text = NumberFormatter.FormatNumber(m_Price); m_MoneyForm.amount.color = m_Price > 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_Price)) { 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(); //}); } } } 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)) { 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(); //}); } } } 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"); } } int Get_AwakenMissionID() { switch (m_Stat) { default: return 1; case eStat.DEX: return 2; case eStat.INT: return 3; case eStat.LUK: return 4; } } }