Project_WL/Assets/Script/UI/PC/Ability/PCAbilityLvUpUI.cs

85 lines
3.0 KiB
C#

using TMPro;
public class PCAbilityLvUpUI : BackKeyAdd
{
public MoneyForm m_MoneyForm;
public PCAbilityCard m_abilityCard;
public TextMeshProUGUI[] texts; // 0 레벨, 1 이름. 2 설명, 3 지금값, 4 다음값
AbilityConfigTableData m_Data;
public void Set(AbilityConfigTableData data)
{
base.Set();
m_Data = data;
Set_UI();
}
void Set_UI()
{
var sdata = ServerInfo.Ins.m_ServerData;
m_abilityCard.Set_CardType(eUICardType.NoTouch);
m_abilityCard.Set(m_Data);
var lv = sdata.Get_AbilityLv(m_Data.n_AbilityID);
texts[0].text = $"{lv}/{m_Data.n_MaxUpgradeLevel}";
texts[1].text = m_Data.Get_Name();
texts[2].text = m_Data.Get_Desc();
texts[3].text = MyText.Get_StatValueText(m_Data.e_OptionType, m_Data.Get_Value(lv));
texts[4].text = MyText.Get_StatValueText(m_Data.e_OptionType, m_Data.Get_Value(lv + 1));
var moneyid = table_GlobalValue.Ins.Get_Int("n_AbilityMaterialID");
m_MoneyForm.icon.sprite = UIAtlasMgr.Ins.Get_Sprite(moneyid);
m_MoneyForm.amount.text = $"{sdata.Get_ItemAmount(moneyid)}/1";
}
bool CanLvUp(bool showtoast)
{
var sdata = ServerInfo.Ins.m_ServerData;
if (m_Data.n_MaxUpgradeLevel <= sdata.Get_AbilityLv(m_Data.n_AbilityID))
{
if (showtoast) ToastUI.Ins.Set(236);
return false;
}
if (m_Data.n_RequireAbility1 == 0 && m_Data.n_RequireAbility2 == 0) return true;
bool can1 = CheckAbilityRequirement(m_Data.n_RequireAbility1, sdata);
bool can2 = CheckAbilityRequirement(m_Data.n_RequireAbility2, sdata);
if (showtoast && (!can1 || !can2)) ToastUI.Ins.Set(235);
return can1 && can2;
}
bool CheckAbilityRequirement(int requiredAbilityId, ServerData sdata)
{
if (requiredAbilityId == 0) return true;
var abData = table_abilityconfig.Ins.Get_Data_orNull(requiredAbilityId);
if (abData == null) return false;
return sdata.Get_AbilityLv(abData.n_AbilityID) >= abData.n_MaxUpgradeLevel;
}
public void OnClick_LvUp()
{
var sdata = ServerInfo.Ins.m_ServerData;
var moneyid = table_GlobalValue.Ins.Get_Int("n_AbilityMaterialID");
if (CanLvUp(true) && sdata.Check_ItemAmount(moneyid, 1))
{
ServerInfo.Ins.Save_PC_Ability(m_Data.n_AbilityID, MyEnumToInt.Ins.Get_Int(m_Data.e_BattleType), () =>
{
sdata.Use_Item(moneyid, 1);
sdata.Add_AbilityLv(m_Data.n_AbilityID);
MyValue.Get_ActorStatInfoorNull(eRole.PC);
Set_UI();
PCAbilityUI.Ins.Set_UI();
sdata.Add_MissionCount(ePurpose.HERO_ABILITY_UPGRADE_CLASS_LIMIT, MyEnumToInt.Ins.Get_Int(m_Data.e_BattleType));
sdata.Add_MissionCount(ePurpose.HERO_ABILITY_UPGRADE_ALL);
sdata.Add_MissionCount(ePurpose.HERO_ABILITY_UPGRADE_ACC);
});
}
}
}