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

81 lines
2.7 KiB
C#
Raw Normal View History

2024-12-15 01:39:39 +00:00
using TMPro;
using UnityEngine.UI;
2025-02-15 07:41:12 +00:00
/// <summary>
/// 초월 정보 (전 레벨 -> 다음 레벨)
/// </summary>
public class PCLimit_Center : PCLimit_StatInfo
2024-12-15 01:39:39 +00:00
{
2025-02-15 07:41:12 +00:00
public TextMeshProUGUI[] texts; // 0 레벨(전), 1 레벨(후), 2 보유 스탯 총합, 3 캐릭터 레벨 달성
2024-12-15 01:39:39 +00:00
public Slider[] sliders; // 0 보유 스탯 총합, 1 캐릭터 레벨 달성
BreakingLimitTableData m_CurData, m_NextData;
public void Set()
{
var sdata = ServerInfo.Ins.m_ServerData;
var lv = sdata.Get_LimitLv();
m_CurData = table_breakinglimit.Ins.Get_Data_orNull(lv);
2025-07-14 17:18:25 +00:00
Set(m_CurData);
2024-12-15 01:39:39 +00:00
texts[0].text = $"Lv.{lv}";
2025-07-14 17:18:25 +00:00
m_NextData = table_breakinglimit.Ins.Get_Data_orNull(lv + 1);
2024-12-15 01:39:39 +00:00
if (DSUtil.CheckNull(m_NextData))
{
2025-07-14 17:18:25 +00:00
texts[1].text = "Max";
2024-12-15 01:39:39 +00:00
texts[2].text = table_localtext.Ins.Get_Text(261);
sliders[0].value = 1f;
sliders[1].value = 1f;
}
else
{
2025-07-14 17:18:25 +00:00
Set_Next(m_NextData);
texts[1].text = $"Lv.{lv + 1}";
2024-12-15 01:39:39 +00:00
var total = Get_Total_AwakenLv(sdata);
2025-02-15 07:41:12 +00:00
texts[2].text = $"{total} / {Get_NeedAwakenLv()}";
2024-12-15 01:39:39 +00:00
sliders[0].value = DSUtil.Get_SliderValue((float)total / Get_NeedAwakenLv());
2025-02-15 07:41:12 +00:00
texts[3].text = $"{sdata.PC.Lv} / {Get_NeedPCLv()}";
2024-12-15 01:39:39 +00:00
sliders[1].value = DSUtil.Get_SliderValue((float)sdata.PC.Lv / Get_NeedPCLv());
}
}
int Get_NeedAwakenLv() { return m_CurData.n_RequireTotalStat; }
int Get_NeedPCLv() { return m_CurData.n_RequireLevel; }
int Get_Total_AwakenLv(ServerData sdata)
{
return sdata.Get_AwakenLv(eStat.STR) + sdata.Get_AwakenLv(eStat.DEX) +
sdata.Get_AwakenLv(eStat.INT) + sdata.Get_AwakenLv(eStat.LUK);
}
public void OnClick_LimitLvUp()
{
var sdata = ServerInfo.Ins.m_ServerData;
var total = Get_Total_AwakenLv(sdata);
2025-07-02 07:19:40 +00:00
if (!DSUtil.CheckNull(m_NextData))
2024-12-15 01:39:39 +00:00
{
2025-07-02 07:19:40 +00:00
if (total >= Get_NeedAwakenLv())
2024-12-15 01:39:39 +00:00
{
2025-07-02 07:19:40 +00:00
if (sdata.PC.Lv >= Get_NeedPCLv())
{
2025-07-02 07:19:40 +00:00
ServerInfo.Ins.Save_PC_LimitLvUp(() =>
{
sdata.Add_LimitLv();
PCLimitUI.Ins.Set();
MyValue.Get_ActorStatInfoorNull(eRole.PC);
var moneyid = table_GlobalValue.Ins.Get_Int("n_AbilityMaterialID");
sdata.Add_Item(moneyid, m_NextData.n_MaxAbilityPoint - m_CurData.n_MaxAbilityPoint);
});
}
2025-07-02 07:19:40 +00:00
else
ToastUI.Ins.Set(264);
2024-12-15 01:39:39 +00:00
}
else
2025-07-02 07:19:40 +00:00
ToastUI.Ins.Set(263);
2024-12-15 01:39:39 +00:00
}
else
2025-07-02 07:19:40 +00:00
ToastUI.Ins.Set(999900010);
2024-12-15 01:39:39 +00:00
}
}