172 lines
7.2 KiB
C#
172 lines
7.2 KiB
C#
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))
|
|
{
|
|
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);
|
|
|
|
/*
|
|
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);
|
|
}
|
|
} |