Files
back_cantanBuilding/Assets/Scripts/UI/Grade/PlayerGradeBenefitInfoPopupPanel.cs
2026-05-26 16:15:54 +08:00

133 lines
5.1 KiB
C#

using asap.core;
using cfg;
using GameCore;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class PlayerGradeBenefitInfoPopupPanel : MonoBehaviour
{
public Button btn_close;
public TMP_Text text_title;
public RewardItemNew reward;
public TMP_Text text_info;
public GameObject _level;
public TMP_Text _level_level;
public TMP_Text _level_num;
public GameObject current_level;
public TMP_Text current_level_level;
public TMP_Text current_level_num;
public GameObject next_level;
public TMP_Text next_level_level;
public TMP_Text next_level_num;
public GameObject max_level;
public TMP_Text max_level_level;
public TMP_Text max_level_num;
Tables table;
PlayerData playerData;
#if UNITY_EDITOR
private void Reset()
{
btn_close = transform.Find("btn_close").GetComponent<Button>();
text_title = transform.Find("root/bg/text_title").GetComponent<TMP_Text>();
reward = transform.Find("root/bg/reward_1").GetComponent<RewardItemNew>();
text_info = transform.Find("root/bg/text_info").GetComponent<TMP_Text>();
_level = transform.Find("root/bg/level").gameObject;
_level_level = transform.Find("root/bg/level/text_level").GetComponent<TMP_Text>();
_level_num = transform.Find("root/bg/level/text_num").GetComponent<TMP_Text>();
current_level = transform.Find("root/bg/current_level").gameObject;
current_level_level = transform.Find("root/bg/current_level/text_level").GetComponent<TMP_Text>();
current_level_num = transform.Find("root/bg/current_level/text_num").GetComponent<TMP_Text>();
next_level = transform.Find("root/bg/next_level").gameObject;
next_level_level = transform.Find("root/bg/next_level/text_level").GetComponent<TMP_Text>();
next_level_num = transform.Find("root/bg/next_level/text_num").GetComponent<TMP_Text>();
max_level = transform.Find("root/bg/max_level").gameObject;
max_level_level = transform.Find("root/bg/max_level/text_level").GetComponent<TMP_Text>();
max_level_num = transform.Find("root/bg/max_level/text_num").GetComponent<TMP_Text>();
}
#endif
private void Start()
{
btn_close.onClick.AddListener(() =>
{
UIManager.Instance.DestroyUI(UITypes.PlayerGradeBenefitInfoPopupPanel);
});
}
public void Init(Item item, int level)
{
table = GContext.container.Resolve<Tables>();
playerData = GContext.container.Resolve<PlayerData>();
text_title.text = LocalizationMgr.GetText(item.Name_l10n_key);
text_info.text = LocalizationMgr.GetText(item.Desc_l10n_key);
//if (level < 0)
//{
// level = playerData.benefitsLevel[item.SubType - 1];
//}
reward.SetData(item, level);
var benefits = table.TBBenefits.GetOrDefault(item.SubType);
CurBenefitPanelEvent curBenefitPanelEvent = new CurBenefitPanelEvent();
GContext.Publish(curBenefitPanelEvent);
if (curBenefitPanelEvent.panelName != "PlayerGradeBenefitPopupPanel")
{
_level.SetActive(true);
current_level.SetActive(false);
next_level.SetActive(false);
max_level.SetActive(false);
if (item.SubType == 3 || item.SubType == 4 || item.SubType == 7)
{
_level_num.text = benefits.BenefitsValue[level].ToString("F0");
}
else
{
_level_num.text = benefits.BenefitsValue[level].ToPercentageString();
}
_level_level.text = LocalizationMgr.GetFormatTextValue("UI_PlayerGradePanel_8", level);
return;
}
_level.SetActive(false);
bool isMax = level >= benefits.BenefitsValue.Count - 1;
current_level.SetActive(!isMax);
next_level.SetActive(!isMax);
max_level.SetActive(isMax);
if (isMax)
{
if (item.SubType == 3 || item.SubType == 4 || item.SubType == 7)
{
max_level_num.text = benefits.BenefitsValue[level].ToString("F0");
}
else
{
max_level_num.text = benefits.BenefitsValue[level].ToPercentageString();
}
max_level_level.text = LocalizationMgr.GetFormatTextValue("UI_PlayerGradePanel_4", level);
}
else
{
if (item.SubType == 3 || item.SubType == 4 || item.SubType == 7)
{
current_level_num.text = benefits.BenefitsValue[level].ToString("F0");
next_level_num.text = benefits.BenefitsValue[level + 1].ToString("F0");
}
else
{
current_level_num.text = benefits.BenefitsValue[level].ToPercentageString();
next_level_num.text = benefits.BenefitsValue[level + 1].ToPercentageString();
}
current_level_level.text = LocalizationMgr.GetFormatTextValue("UI_PlayerGradePanel_4", level);
next_level_level.text = LocalizationMgr.GetFormatTextValue("UI_PlayerGradePanel_5", level + 1);
}
}
}
public class CurBenefitPanelEvent
{
public string panelName;
}