using TMPro; using UnityEngine; using UnityEngine.UI; public class MainStatLvUpCard : CardBase { public Image[] sprites; // 0 메인스탯 public TextMeshProUGUI[] labels; // 0 레벨, 1 +스탯, 2 가격, 3 스탯명 public GameObject[] gos; // 0 주스탯 여부 MainStatCardData m_Data; private void Awake() { Set_Repeat_for1sec(Set_Price); } public override void Set(T _base) { base.Set(_base); m_Data = _base as MainStatCardData; sprites[0].sprite = UIAtlasMgr.Ins.Get_Sprite(DSUtil.Format("{0}-upgrade-btn", m_Data.mainStatType.ToString().ToLower())); var classData = table_classconfig.Ins.Get_Data_orNull(ServerInfo.Ins.m_ServerData.Get_EqiupmentEquip(eItem.PC)); gos[0].SetActive(classData.Get_MainStat() == m_Data.mainStatType); labels[3].text = m_Data.mainStatType.ToString().ToUpper(); Set_UI(); Set_Price(); } int Get_Lv() { var curmap = MyValue.MyChoiceMapData; int lv = curmap.Get_MapData().e_Dungeon == eDungeon.d4_Wave ? DungeonInfo.Ins.dic_WaveStat[m_Data.mainStatType] : ServerInfo.Ins.m_ServerData.MapData_Get_StatLv(curmap.n_MapID, curmap.n_Difficult, m_Data.mainStatType); return lv; } public override void Set_UI() { int lv = Get_Lv(); labels[0].text = $"Lv.{lv}"; labels[1].text = $"{lv}"; // TODO 정인호 : 레벨당 스탯1 임시 } void Set_Price() { var price = Get_Price(); labels[2].text = NumberFormatter.FormatNumber(price); bool canLvUp = false; var curmap = MyValue.MyChoiceMapData; if (curmap.Get_MapData().e_Dungeon == eDungeon.d4_Wave) canLvUp = DungeonInfo.Ins.WaveGold >= price; else canLvUp = ServerInfo.Ins.m_ServerData.Check_ItemAmount(eItem.Gold, price, 0, false); if (canLvUp) labels[2].color = Color.black; else labels[2].color = Color.red; } int Get_Price() { return (Get_Lv() + 1) * 100; } public void OnClick_LvUp() { var price = Get_Price(); var curmap = MyValue.MyChoiceMapData; if (curmap.Get_MapData().e_Dungeon == eDungeon.d4_Wave) { if (DungeonInfo.Ins.WaveGold >= price) { DungeonInfo.Ins.Add_WaveGold(-price); ++DungeonInfo.Ins.dic_WaveStat[m_Data.mainStatType]; DungeonInfo.Ins.dic_WaveStat[m_Data.mainStatType].RandomizeCryptoKey(); Set_UI(); Set_Price(); MyValue.Get_ActorStatInfoorNull(eRole.PC, true, "0", 0, true); } } else { var sdata = ServerInfo.Ins.m_ServerData; if (sdata.Check_ItemAmount(eItem.Gold, Get_Price())) { sdata.Use_Item(eItem.Gold, price); sdata.MapData_Add_StatLv(curmap.n_MapID, curmap.n_Difficult, m_Data.mainStatType); Set_UI(); Set_Price(); if (MyInfoUI.isIns) MyInfoUI.Ins.Set_MainStats(); } } } }