2025-07-03 03:34:04 +00:00
|
|
|
using CodeStage.AntiCheat.ObscuredTypes;
|
2025-02-16 23:33:59 +00:00
|
|
|
using System.Collections.Generic;
|
2024-12-15 01:39:39 +00:00
|
|
|
using TMPro;
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
|
|
public class PCLimitUI_Right : uScrollViewMgr
|
|
|
|
|
{
|
2025-02-16 23:33:59 +00:00
|
|
|
public TabUIBase m_Tab;
|
2024-12-15 01:39:39 +00:00
|
|
|
public MoneyForm m_Price;
|
2025-07-14 17:18:25 +00:00
|
|
|
public TextMeshProUGUI[] texts; // 0 보호 등급
|
2024-12-15 01:39:39 +00:00
|
|
|
|
|
|
|
|
string m_Preset = "1";
|
|
|
|
|
int m_matID, m_CurProtectGrade, m_ProtectMaxGrade;
|
2025-07-03 03:34:04 +00:00
|
|
|
ObscuredInt mPrice;
|
2024-12-15 01:39:39 +00:00
|
|
|
|
2025-02-16 23:33:59 +00:00
|
|
|
List<TabUIData> list_TabData = new List<TabUIData>
|
|
|
|
|
{ new TabUIData{ btnName = "1" }, new TabUIData{ btnName = "2" }, new TabUIData{ btnName = "3" } };
|
|
|
|
|
|
2024-12-15 01:39:39 +00:00
|
|
|
public override void Set()
|
|
|
|
|
{
|
|
|
|
|
m_matID = table_GlobalValue.Ins.Get_Int("n_BreakingLimitSlotMaterialID");
|
|
|
|
|
m_Preset = ServerInfo.Ins.m_ServerData.Equip.LimitPreset.ToString();
|
2025-02-16 23:33:59 +00:00
|
|
|
m_Tab.Set_Index(ServerInfo.Ins.m_ServerData.Equip.LimitPreset - 1);
|
|
|
|
|
for (int i = 0; i < list_TabData.Count; i++)
|
|
|
|
|
{
|
2025-07-30 00:23:52 +00:00
|
|
|
list_TabData[i].onClick = OnClick_Preset;
|
2025-02-16 23:33:59 +00:00
|
|
|
}
|
|
|
|
|
m_Tab.Set(list_TabData);
|
|
|
|
|
OnClick_Preset();
|
|
|
|
|
}
|
|
|
|
|
public override void Set_UI()
|
|
|
|
|
{
|
2024-12-15 01:39:39 +00:00
|
|
|
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);
|
|
|
|
|
|
2025-07-03 03:34:04 +00:00
|
|
|
mPrice = Get_Price(); mPrice.RandomizeCryptoKey();
|
|
|
|
|
m_Price.amount.text = NumberFormatter.FormatNumber(mPrice);
|
2024-12-15 01:39:39 +00:00
|
|
|
|
|
|
|
|
var lv = Mathf.Max(1, sdata.Get_LimitLv());
|
2025-07-02 19:59:51 +00:00
|
|
|
if (lv > 9) lv = 0;
|
2024-12-15 01:39:39 +00:00
|
|
|
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)
|
|
|
|
|
{
|
2025-07-03 03:34:04 +00:00
|
|
|
return ServerInfo.Ins.m_ServerData.Check_ItemAmount(m_matID, mPrice, showtoast);
|
2024-12-15 01:39:39 +00:00
|
|
|
}
|
|
|
|
|
public string Get_Preset() { return m_Preset; }
|
|
|
|
|
|
2025-02-16 23:33:59 +00:00
|
|
|
public void OnClick_Preset()
|
2024-12-15 01:39:39 +00:00
|
|
|
{
|
2025-02-16 23:33:59 +00:00
|
|
|
m_Preset = (m_Tab.Get_Index() + 1).ToString();
|
2024-12-15 01:39:39 +00:00
|
|
|
var sdata = ServerInfo.Ins.m_ServerData;
|
|
|
|
|
sdata.Equip.LimitPreset = int.Parse(m_Preset);
|
|
|
|
|
sdata.Equip.LimitPreset.RandomizeCryptoKey();
|
2025-02-16 23:33:59 +00:00
|
|
|
Set_UI();
|
2024-12-15 01:39:39 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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()
|
|
|
|
|
{
|
2025-07-03 04:49:08 +00:00
|
|
|
if (IsOpenSlot() && CheckMoney(true))
|
2024-12-15 01:39:39 +00:00
|
|
|
{
|
|
|
|
|
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()
|
|
|
|
|
{
|
2025-07-03 03:34:04 +00:00
|
|
|
ServerInfo.Ins.Save_PC_LimitSlotOptionChange(m_Preset, options =>
|
|
|
|
|
{
|
|
|
|
|
var sdata = ServerInfo.Ins.m_ServerData;
|
|
|
|
|
sdata.Use_Item(m_matID, mPrice);
|
|
|
|
|
list_CardBase.ForEach(f => (f as PCLimitSlotCard).Set_Change(m_Preset, options));
|
|
|
|
|
Set();
|
|
|
|
|
MyValue.Get_ActorStatInfoorNull(eRole.PC);
|
|
|
|
|
NewGameUI.Ins.m_PCUI.Refresh_Money();
|
|
|
|
|
});
|
2024-12-15 01:39:39 +00:00
|
|
|
}
|
|
|
|
|
}
|