97 lines
3.4 KiB
C#
97 lines
3.4 KiB
C#
using TMPro;
|
|
using UnityEngine.UI;
|
|
|
|
public class PCLimitSlotCard : CardBase
|
|
{
|
|
public TextMeshProUGUI[] texts; // 0 스탯, 1 등급, 2 잠금 설명
|
|
public Image[] images; // 0 등급, 1 잠금
|
|
|
|
SD_PCLimitSlotData m_SData;
|
|
int m_Grade, m_Slot;
|
|
|
|
public override void Set<T>(T _base)
|
|
{
|
|
base.Set(_base);
|
|
m_SData = _base as SD_PCLimitSlotData;
|
|
}
|
|
|
|
public override void Set(int _val)
|
|
{
|
|
m_Slot = _val;
|
|
var lv = ServerInfo.Ins.m_ServerData.Get_LimitLv();
|
|
var openlv = table_breakinglimit.Ins.Get_SlotOpenLv(m_Slot);
|
|
texts[2].text = openlv > lv ? DSUtil.Format(262, openlv) : "";
|
|
|
|
Set_UI();
|
|
}
|
|
|
|
public override void Set_UI()
|
|
{
|
|
var Tdata = table_optionconfig.Ins.Get_Data(m_SData.ID);
|
|
m_Grade = 0;
|
|
texts[0].text = texts[1].text = "";
|
|
images[0].color = table_enchantgradeconfig.Ins.Get_Data(1).GradeColor;
|
|
images[1].enabled = m_SData.Lock > 0;
|
|
|
|
if (DSUtil.CheckNull(Tdata))
|
|
{
|
|
// 오픈된 슬롯인가?
|
|
}
|
|
else
|
|
{
|
|
texts[2].text = "";
|
|
|
|
m_Grade = table_randombag.Ins.Get_Data(m_SData.ID).n_ItemGrade;
|
|
var gradecolor = table_enchantgradeconfig.Ins.Get_Data(m_Grade).GradeColor;
|
|
images[0].color = gradecolor;
|
|
texts[0].text = MyText.Get_StatNameValueText(Tdata.e_OptionType, Tdata.Get_Value(m_SData.Lv));
|
|
texts[1].text = "??";
|
|
}
|
|
}
|
|
|
|
// 기존 클라 기반일 때
|
|
//public void Set_Change(string preset)
|
|
//{
|
|
// var sdata = ServerInfo.Ins.m_ServerData;
|
|
// var isOpen = table_breakinglimit.Ins.Get_SlotOpenLv(m_Slot) <= sdata.Get_LimitLv();
|
|
// if (isOpen && m_SData.Lock == 0)
|
|
// {
|
|
// var lv = sdata.Get_LimitLv();
|
|
// var Tdata = table_limitslotmagicrate.Ins.Get_Data_orNull(lv);
|
|
// var grade = DSUtil.Get_RandomIndex(Tdata.list_rate) + 1;
|
|
// var itemData = table_randombag.Ins.Get_RandomItemData(Tdata.n_DropIndex, grade);
|
|
// var optionlv = table_enchantgradeconfig.Ins.Get_Lv(grade);
|
|
// sdata.Set_LimitSlotID(preset, m_Slot, itemData.itemid, optionlv);
|
|
// sdata.Add_MissionCount(ePurpose.HERO_OPTION_CHANGE);
|
|
// sdata.Add_MissionCount(ePurpose.HERO_OPTION_CHANGE_ACC);
|
|
// }
|
|
//}
|
|
public void Set_Change(string preset, SC_LimitOptionResult options)
|
|
{
|
|
var sdata = ServerInfo.Ins.m_ServerData;
|
|
var isOpen = table_breakinglimit.Ins.Get_SlotOpenLv(m_Slot) <= sdata.Get_LimitLv();
|
|
var s_data = options.results.Find(f => f.slot == m_Slot - 1);
|
|
if (s_data != null)
|
|
{
|
|
sdata.Set_LimitSlotID(preset, m_Slot, s_data.randombagid, s_data.optionlv);
|
|
sdata.Add_MissionCount(ePurpose.HERO_OPTION_CHANGE);
|
|
sdata.Add_MissionCount(ePurpose.HERO_OPTION_CHANGE_ACC);
|
|
}
|
|
}
|
|
|
|
public override int Get_IntData() { return m_Grade; }
|
|
|
|
public void OnClick_Lock()
|
|
{
|
|
if (m_SData.ID > 0)
|
|
{
|
|
var preset = PCLimitUI.Ins.m_PCLimitUI_Right.Get_Preset();
|
|
ServerInfo.Ins.Save_PC_LimitSlotLock(preset, m_Slot, () =>
|
|
{
|
|
var sdata = ServerInfo.Ins.m_ServerData;
|
|
sdata.Set_LimitSlotLock(preset, m_Slot);
|
|
PCLimitUI.Ins.m_PCLimitUI_Right.Set();
|
|
});
|
|
}
|
|
}
|
|
} |