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