85 lines
3.0 KiB
C#
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);
|
|
});
|
|
}
|
|
}
|
|
} |