using System.Collections.Generic; using TMPro; using UnityEngine; public class PCLimitUI_Right : uScrollViewMgr { public TabUIBase m_Tab; public MoneyForm m_Price; public TextMeshProUGUI[] texts; // 0 보호 등급, 1 각성 재료 보유량 string m_Preset = "1"; int m_matID, m_CurProtectGrade, m_ProtectMaxGrade; List list_TabData = new List { new TabUIData{ btnName = "1" }, new TabUIData{ btnName = "2" }, new TabUIData{ btnName = "3" } }; public override void Set() { m_matID = table_GlobalValue.Ins.Get_Int("n_BreakingLimitSlotMaterialID"); m_Preset = ServerInfo.Ins.m_ServerData.Equip.LimitPreset.ToString(); m_Tab.Set_Index(ServerInfo.Ins.m_ServerData.Equip.LimitPreset - 1); for (int i = 0; i < list_TabData.Count; i++) { list_TabData[i].onClick = OnClick_Preset; } m_Tab.Set(list_TabData); OnClick_Preset(); } public override void Set_UI() { var sdata = ServerInfo.Ins.m_ServerData; Set_ScrollView(sdata.Get_LimitSlot(m_Preset)); for (int i = 0; i < list_CardBase.Count; i++) list_CardBase[i].Set(i + 1); texts[1].text = NumberFormatter.FormatNumber(sdata.Get_ItemAmount(m_matID)); m_Price.amount.text = NumberFormatter.FormatNumber(Get_Price()); var lv = Mathf.Max(1, sdata.Get_LimitLv()); var Tdata = table_limitslotmagicrate.Ins.Get_Data_orNull(lv); m_ProtectMaxGrade = Tdata.MaxGrade; if (m_CurProtectGrade == 0) m_CurProtectGrade = m_ProtectMaxGrade; Set_ProtectUI(); } void Set_ProtectUI() { texts[0].text = m_CurProtectGrade.ToString(); } int Get_Price() { int LockCount = 0; var sdata = ServerInfo.Ins.m_ServerData; var lst = sdata.Get_LimitSlot(m_Preset); for (int i = 0; i < lst.Count; i++) { if (lst[i].Lock == 1) ++LockCount; } int baseValue = 10; return baseValue * ((1 + LockCount) * LockCount / 2 + 1); } bool IsOpenSlot() { // 열린 슬롯이 있어야 한다. var sdata = ServerInfo.Ins.m_ServerData; var lst = sdata.Get_LimitSlot(m_Preset); for (int i = 0; i < lst.Count; i++) { var isOpen = table_breakinglimit.Ins.Get_SlotOpenLv(i + 1) <= sdata.Get_LimitLv(); if (isOpen && lst[i].Lock == 0) return true; } return false; } bool CheckMoney(bool showtoast) { return ServerInfo.Ins.m_ServerData.Check_ItemAmount(m_matID, Get_Price(), showtoast); } public string Get_Preset() { return m_Preset; } public void OnClick_Preset() { m_Preset = (m_Tab.Get_Index() + 1).ToString(); var sdata = ServerInfo.Ins.m_ServerData; sdata.Equip.LimitPreset = int.Parse(m_Preset); sdata.Equip.LimitPreset.RandomizeCryptoKey(); Set_UI(); } public void OnClick_ProtectGrade(int grade) { m_CurProtectGrade += grade; if (m_CurProtectGrade < 1) m_CurProtectGrade = m_ProtectMaxGrade; else if (m_CurProtectGrade > m_ProtectMaxGrade) m_CurProtectGrade = 1; Set_ProtectUI(); } public void OnClick_Change() { if (IsOpenSlot() && CheckMoney(true)) { var sdata = ServerInfo.Ins.m_ServerData; var lst = sdata.Get_LimitSlot(m_Preset); for (int i = 0; i < lst.Count; i++) { if (lst[i].Lock == 0 && lst[i].ID > 0) { var Tdata = table_enchantgradeconfig.Ins.Get_Data_bylv(lst[i].Lv); if (Tdata.n_EnchantGrade >= m_CurProtectGrade) { Popup.Ins.Set(ePopupType.One, 265, Change); return; } } } Change(); } } void Change() { var sdata = ServerInfo.Ins.m_ServerData; sdata.Use_Item(m_matID, Get_Price()); list_CardBase.ForEach(f => (f as PCLimitSlotCard).Set_Change(m_Preset)); Set(); MyValue.Get_ActorStatInfoorNull(eRole.PC); NewGameUI.Ins.m_PCUI.Refresh_Money(); } }