using CodeStage.AntiCheat.ObscuredTypes; using System; using TMPro; using UnityEngine.UI; public class EquipmentPopup_Obtain : EquipmentPopupBase { public EquipmentSimpleCard m_SmeltingMaterialCard; public TextMeshProUGUI[] texts; // 0 제련 레벨, 1 제련 효과(전), 2 제련 확률, 3 제련 효과(후) public Image[] images; // 0 분해 시 획득 아이템 public TextMeshProUGUI[] texts_decomp; // 0 분해 시 획득량, 1 분해량 public Slider slider_decomp; Action act_RefreshUI; EquipmentSmeltingTableData m_SmeltingData, m_NextSmeltingData; ObscuredInt m_DecompAmount; private void Start() { m_SmeltingMaterialCard.Set_CardType(eUICardType.MakeMaterial); } public override void Set(EquipmentListTableData data, Action refresh = null) { base.Set(data, refresh); act_RefreshUI = refresh; Set_SmeltingUI(); Set_Decompostion(0); } void Set_SmeltingUI() { var sdata = ServerInfo.Ins.m_ServerData; var lv = sdata.Get_SmeltingLv(m_Data.n_EquipID); texts[0].text = lv.ToString(); m_SmeltingData = table_equipsmelting.Ins.Get_Data(lv); m_NextSmeltingData = table_equipsmelting.Ins.Get_Data(lv + 1); m_SmeltingMaterialCard.Set(table_itemlist.Ins.Get_Data(m_Data.n_EquipID)); m_SmeltingMaterialCard.Set_NeedAmount(m_SmeltingData.n_UpgradePrice); if (!DSUtil.CheckNull(m_NextSmeltingData)) { texts[1].text = $"{NumberFormatter.FormatNumber(m_SmeltingData.f_IncreaseValueRate)}%"; texts[3].text = $"{NumberFormatter.FormatNumber(m_NextSmeltingData.f_IncreaseValueRate)}%"; texts[2].text = $"{NumberFormatter.FormatNumber(m_SmeltingData.f_NextStepRate)}%"; } else { texts[1].text = $"{NumberFormatter.FormatNumber(m_SmeltingData.f_IncreaseValueRate)}%"; texts[2].text = "0%"; } } void Set_Decompostion(int amount) { var max = (int)ServerInfo.Ins.m_ServerData.Get_ItemAmount(m_Data.n_EquipID); if (amount == 0) m_DecompAmount = amount; else m_DecompAmount += amount; if (m_DecompAmount < 0) m_DecompAmount = 0; else if (m_DecompAmount > max) m_DecompAmount = max; m_DecompAmount.RandomizeCryptoKey(); images[0].sprite = UIAtlasMgr.Ins.Get_Sprite(m_Data.n_DecompositionReward); texts_decomp[0].text = NumberFormatter.FormatNumber(m_Data.n_DecompositionCount * m_DecompAmount); texts_decomp[1].text = m_DecompAmount.ToString(); var sliderval = m_DecompAmount / (float)max; slider_decomp.value = DSUtil.Get_SliderValue(sliderval); } public void OnClick_Equip() { // 장비 착용 처리 var sdata = ServerInfo.Ins.m_ServerData; if (sdata.IsObtainItem(m_Data.n_EquipID)) { if (!sdata.IsEquip(m_Data.e_EquipParts, m_Data.n_EquipID)) { ServerInfo.Ins.Save_Equipment_Equip(m_Data.n_EquipID, () => { sdata.Equip.Set_Equip(m_Data.e_EquipParts, m_Data.n_EquipID); act_RefreshUI(); NewGameUI.Ins.m_EquipmentUI.m_equipItems.Set(); NewGameUI.Ins.m_EquipmentUI.m_EquipmentUI_Items.Set_UI(); if (m_Data.e_EquipParts == eItem.Weapon) MyValue.MyPC.Change_Weapon(); MyValue.Get_ActorStatInfoorNull(eRole.PC); switch (m_Data.e_EquipParts) { case eItem.Weapon: sdata.Add_MissionCount(ePurpose.EQUIP_ITEM_MOUNT_PARTS_LIMIT, 1); break; case eItem.Armor: sdata.Add_MissionCount(ePurpose.EQUIP_ITEM_MOUNT_PARTS_LIMIT, 2); break; case eItem.Helmet: sdata.Add_MissionCount(ePurpose.EQUIP_ITEM_MOUNT_PARTS_LIMIT, 3); break; case eItem.Extra: sdata.Add_MissionCount(ePurpose.EQUIP_ITEM_MOUNT_PARTS_LIMIT, 4); break; case eItem.Ring: sdata.Add_MissionCount(ePurpose.EQUIP_ITEM_MOUNT_PARTS_LIMIT, 5); break; case eItem.Necklace: sdata.Add_MissionCount(ePurpose.EQUIP_ITEM_MOUNT_PARTS_LIMIT, 6); break; } }); } } } public void OnClick_Smelting() { // 장비 제련 var sdata = ServerInfo.Ins.m_ServerData; if (DSUtil.CheckNull(m_NextSmeltingData)) { ToastUI.Ins.Set(999900003); return; } if (!sdata.Check_ItemAmount(m_Data.n_EquipID, m_SmeltingData.n_UpgradePrice)) return; var lv = sdata.Get_SmeltingLv(m_Data.n_EquipID); var limitdata = table_breakinglimit.Ins.Get_Data_orNull(sdata.Get_LimitLv()); if (lv >= limitdata.n_Equip_Upgrade_Limit) { ToastUI.Ins.Set(999900003); return; } ServerInfo.Ins.Save_Equipment_Smelting(m_Data.n_EquipID, error => { //sdata.Try_SmeltingLvUp(m_SmeltingData, m_Data.n_EquipID, success => sdata.SmeltingLvUp(m_SmeltingData, m_Data.n_EquipID, error); if (error == 0 || error == 4) { Set_SmeltingUI(); NewGameUI.Ins.m_EquipmentUI.m_equipItems.Set(); NewGameUI.Ins.m_EquipmentUI.m_EquipmentUI_Items.Set_UI(); PopupMgr.Ins.m_EquipmentPopup.Set_UI(); ToastUI.Ins.Set(174, error == 0 ? "제련 성공!!" : "제련 실패..."); if (error == 0) { sdata.Add_MissionCount(ePurpose.EQUIP_ITEM_UPGRADE_ACC); sdata.Add_MissionCount(ePurpose.EQUIP_ITEM_UPGRADE_ALL); sdata.Add_MissionCount(ePurpose.EQUIP_ITEM_UPGRADE_LIMIT); } } //}); }); } public void OnClick_Decomposition() { // 장비 분해 처리 var sdata = ServerInfo.Ins.m_ServerData; if (m_DecompAmount <= 0) { ToastUI.Ins.Set(999900018); return; } if (sdata.Check_ItemAmount(m_Data.n_EquipID, m_DecompAmount)) { ServerInfo.Ins.Save_Equipment_Decomposition(m_Data.n_EquipID, m_DecompAmount, () => { sdata.Use_Item(m_Data.n_EquipID, m_DecompAmount); sdata.Add_Item(m_Data.n_DecompositionReward, m_Data.n_DecompositionCount * m_DecompAmount); ToastUI.Ins.Set(174, $"분해해서 {m_Data.n_DecompositionReward} 아이템 {m_Data.n_DecompositionCount * m_DecompAmount} 개 획득"); sdata.Add_MissionCount(ePurpose.EQUIP_ITEM_DISTROY_ALL, 0, m_DecompAmount); sdata.Add_MissionCount(ePurpose.EQUIP_ITEM_DISTROY_ACC, 0, m_DecompAmount); Set_Decompostion(0); Set_SmeltingUI(); }); } } public void OnClick_Slider(int add) { Set_Decompostion(add); } }