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

75 lines
2.5 KiB
C#

using TMPro;
using UnityEngine.UI;
/// <summary>
/// 초월 정보 (전 레벨 -> 다음 레벨)
/// </summary>
public class PCLimit_Center : PCLimit_StatInfo
{
public TextMeshProUGUI[] texts; // 0 레벨(전), 1 레벨(후), 2 보유 스탯 총합, 3 캐릭터 레벨 달성
public Slider[] sliders; // 0 보유 스탯 총합, 1 캐릭터 레벨 달성
BreakingLimitTableData m_CurData, m_NextData;
private void Awake()
{
ServerInfo.Ins.m_ServerData.PC.Add_Exp(3000);
}
public void Set()
{
var sdata = ServerInfo.Ins.m_ServerData;
var lv = sdata.Get_LimitLv();
m_CurData = table_breakinglimit.Ins.Get_Data_orNull(lv);
m_NextData = table_breakinglimit.Ins.Get_Data_orNull(lv + 1);
texts[0].text = $"Lv.{lv}";
texts[1].text = $"Lv.{lv + 1}";
if (DSUtil.CheckNull(m_NextData))
{
texts[2].text = table_localtext.Ins.Get_Text(261);
sliders[0].value = 1f;
sliders[1].value = 1f;
}
else
{
Set(m_NextData);
var total = Get_Total_AwakenLv(sdata);
texts[2].text = $"{total} / {Get_NeedAwakenLv()}";
sliders[0].value = DSUtil.Get_SliderValue((float)total / Get_NeedAwakenLv());
texts[3].text = $"{sdata.PC.Lv} / {Get_NeedPCLv()}";
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);
if (total >= Get_NeedAwakenLv())
{
if (sdata.PC.Lv >= Get_NeedPCLv())
{
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);
}
else
ToastUI.Ins.Set(264);
}
else
ToastUI.Ins.Set(263);
}
}