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

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);
}
}