118 lines
3.6 KiB
C#
118 lines
3.6 KiB
C#
using TMPro;
|
|
using UnityEngine;
|
|
|
|
public class PCLimitUI_Right : uScrollViewMgr
|
|
{
|
|
public MoneyForm m_Price;
|
|
public TextMeshProUGUI[] texts; // 0 보호 등급
|
|
|
|
string m_Preset = "1";
|
|
int m_matID, m_CurProtectGrade, m_ProtectMaxGrade;
|
|
|
|
public override void Set()
|
|
{
|
|
m_matID = table_GlobalValue.Ins.Get_Int("n_BreakingLimitSlotMaterialID");
|
|
m_Preset = ServerInfo.Ins.m_ServerData.Equip.LimitPreset.ToString();
|
|
|
|
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);
|
|
|
|
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(string preset)
|
|
{
|
|
m_Preset = preset;
|
|
var sdata = ServerInfo.Ins.m_ServerData;
|
|
sdata.Equip.LimitPreset = int.Parse(m_Preset);
|
|
sdata.Equip.LimitPreset.RandomizeCryptoKey();
|
|
Set();
|
|
}
|
|
|
|
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();
|
|
}
|
|
} |