Project_WL/Assets/Script/UI/PC/Limit/PCLimitUI_Right.cs

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();
}
}