Project_WL/Assets/Script/UI/Eqiupment/EquipmentEnchantCard.cs

138 lines
5.6 KiB
C#

using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class EquipmentEnchantCard : CardBase
{
public static EnchantCardData Select_EnchantCardData;
public static SD_Slot Select_SlotData;
public Image[] images; // 0 인챈트 아이콘
public TextMeshProUGUI[] texts; // 0 이름, 1 레벨, 2 보유량
public Slider slider;
public GameObject[] gos; // 0 강화 버튼, 1 마법부여 버튼
ItemListTableData m_ItemData;
EnchantListTableData m_Data;
EnchantRateTableData m_EnchantRateTableData;
eItem m_Parts;
public override void Set<T>(T _base)
{
base.Set(_base);
m_Data = _base as EnchantListTableData;
m_ItemData = table_itemlist.Ins.Get_Data(m_Data.n_EnchantID);
Set_UI();
// 착용 장비
DSUtil.InActivateGameObjects(gos, PopupMgr.Ins.m_EquipmentItemPopup.isActiveAndEnabled ? 1 : 0);
m_Parts = PopupMgr.Ins.m_EquipmentItemPopup.Get_Parts();
}
public override void Set_UI()
{
var sdata = ServerInfo.Ins.m_ServerData;
var lv = sdata.Get_EnchantLv(m_Data.n_EnchantID);
var amount = sdata.Get_EnchantAmount(m_Data.n_EnchantID);
images[0].sprite = UIAtlasMgr.Ins.Get_Sprite(m_ItemData.s_ItemIcon);
texts[0].text = table_itemlist.Ins.Get_ItemName(m_ItemData.n_ItemID);
texts[1].text = $"Lv.{lv}";
texts[2].text = DSUtil.Format(204, amount);
// 인챈트 강화에 필요한 갯수는 어디에?
m_EnchantRateTableData = table_enchantrate.Ins.Get_Data(lv);
slider.value = (float)amount / m_EnchantRateTableData.n_NextLvRequireCount;
}
public void OnClick_Info()
{
}
public void OnClick_Reinforce()
{
if (m_EnchantRateTableData.n_NextLvRequireCount <= 0) { ToastUI.Ins.Set(999900003); return; }
var sdata = ServerInfo.Ins.m_ServerData;
if (sdata.Check_ItemAmount(m_Data.n_EnchantID, m_EnchantRateTableData.n_NextLvRequireCount))
{
ServerInfo.Ins.Save_Enchant_LvUp(m_Data.n_EnchantID, result =>
{
sdata.Use_Item(m_Data.n_EnchantID, m_EnchantRateTableData.n_NextLvRequireCount);
sdata.Add_EnchantLv(m_Data.n_EnchantID);
sdata.EnchantOption[m_Data.n_EnchantID] = result.newoption;
Set_UI();
});
}
}
public void OnClick_EnchantEquipItem()
{
var sdata = ServerInfo.Ins.m_ServerData;
if (sdata.Get_EnchantLv(m_Data.n_EnchantID) > 0 && sdata.Check_ItemAmount(m_Data.n_EnchantID, 1))
{ // 마법 부여 하자
sdata.Use_Item(m_Data.n_EnchantID, 1);
var enchant = sdata.EnchantOption[m_Data.n_EnchantID];
var option = enchant.Option[enchant.Index++];
sdata.Set_SlotEnchant(m_Parts, Select_EnchantCardData.Index, option.id, option.lv);
if (enchant.Option.Count <= enchant.Index)
{
ServerInfo.Ins.Save_EquipItem_EnchantOption(m_Data.n_EnchantID, NewGameUI.Ins.m_EquipmentUI.m_MenuBackData,
result =>
{
NewGameUI.Ins.m_EquipmentUI.m_MenuBackData.Init(false, true); // 초기화
sdata.Add_MissionCount(ePurpose.EQUIP_ITEM_ENCHANT_ACC, 0, result.EnchantCount);
sdata.Add_MissionCount(ePurpose.EQUIP_ITEM_ENCHANT_ALL, 0, result.EnchantCount);
sdata.Slot.Clear();
for (int i = 0; i < result.Slot.Count; i++)
sdata.Slot.Add(result.Slot[i].Get());
for (int i = 0; i < result.AllEnchantAmount.Count; i++)
sdata.Set_Item(result.AllEnchantAmount[i].itemid, result.AllEnchantAmount[i].amount);
sdata.EnchantOption[m_Data.n_EnchantID] = result.newoption;
RefreshUI();
});
}
else
{
NewGameUI.Ins.m_EquipmentUI.m_MenuBackData.Add_Enchant(m_Parts, Select_EnchantCardData.Index, m_Data.n_EnchantID);
RefreshUI();
}
}
}
void RefreshUI()
{
PopupMgr.Ins.m_EquipmentItemPopup.m_EquipItemEnchantOption.Set_UI();
Set_UI();
}
/* 변경마다 서버 탐
public void OnClick_EnchantEquipItem()
{
var sdata = ServerInfo.Ins.m_ServerData;
if (sdata.Get_EnchantLv(m_Data.n_EnchantID) > 0 && sdata.Check_ItemAmount(m_Data.n_EnchantID, 1))
{ // 마법 부여 하자
ServerInfo.Ins.Save_EquipItem_Enchant(PopupMgr.Ins.m_EquipmentItemPopup.Get_ItemID(), m_Data.n_EnchantID,
Select_EnchantCardData.Index,
result =>
{
sdata.Use_Item(m_Data.n_EnchantID, 1);
var parts = PopupMgr.Ins.m_EquipmentItemPopup.Get_Parts();
// 주석은 클라 처리 -> 서버 처리로 변경됨
//var grade = DSUtil.Get_RandomIndex(m_EnchantRateTableData.list_rate) + 1;
//var enchantlv = table_enchantgradeconfig.Ins.Get_Lv(grade);
//var optionconfigid = m_Data.Get_OptionConfigID(Select_SlotData);
//sdata.Set_SlotEnchant(parts, Select_EnchantCardData.Index, optionconfigid, enchantlv);
sdata.Set_SlotEnchant(parts, Select_EnchantCardData.Index, result.optionconfigid, result.Lv);
PopupMgr.Ins.m_EquipmentItemPopup.m_EquipItemEnchantOption.Set_UI();
sdata.Add_MissionCount(ePurpose.EQUIP_ITEM_ENCHANT_ACC);
sdata.Add_MissionCount(ePurpose.EQUIP_ITEM_ENCHANT_ALL);
Set_UI();
});
}
}
*/
}