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

87 lines
3.1 KiB
C#

using asap.core;
using cfg;
using GameCore;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class EventFishingDuelRankPopupPanel : MonoBehaviour
{
List<Button> buttons;
List<Image> icon_ranks;
List<TMP_Text> txt_ranks;
List<TMP_Text> text_points;
List<GameObject> selecteds;
List<RewardItemNew> rewardItemNews;
List<EventSolomain> data;
Button btn_close;
FishingDuelManager fishingDuelManager;
private void Awake()
{
fishingDuelManager = GContext.container.Resolve<FishingDuelManager>();
buttons = new List<Button>();
icon_ranks = new List<Image>();
txt_ranks = new List<TMP_Text>();
text_points = new List<TMP_Text>();
selecteds = new List<GameObject>();
for (int i = 1; i < 8; i++)
{
buttons.Add(transform.Find($"root/rank{i}/btn_green").GetComponent<Button>());
icon_ranks.Add(transform.Find($"root/rank{i}/btn_green/icon_rank").GetComponent<Image>());
txt_ranks.Add(transform.Find($"root/rank{i}/btn_green/text_rank").GetComponent<TMP_Text>());
text_points.Add(transform.Find($"root/rank{i}/btn_green/text_point").GetComponent<TMP_Text>());
selecteds.Add(transform.Find($"root/rank{i}/btn_green/selected").gameObject);
}
rewardItemNews = new List<RewardItemNew>();
Transform layout_reward = transform.Find("root/layout_reward");
for (int i = 0; i < layout_reward.childCount; i++)
{
rewardItemNews.Add(layout_reward.GetChild(i).GetComponent<RewardItemNew>());
}
btn_close = transform.Find("btn_close").GetComponent<Button>();
}
void Start()
{
data = GContext.container.Resolve<Tables>().TbEventSolomain.DataList;
IUIService uiService = GContext.container.Resolve<IUIService>();
for (int i = 0; i < buttons.Count; i++)
{
int index = i;
txt_ranks[i].text = LocalizationMgr.GetText(data[i].RankText_l10n_key);
text_points[i].text = data[i].TrophyRange[0].ToString();
uiService.SetImageSprite(icon_ranks[i], data[i].RankIcon);
buttons[i].onClick.AddListener(() => SetRewardPanel(index));
if (data[i].RankTier == fishingDuelManager.eventSolomain.RankTier)
{
SetRewardPanel(index);
}
}
btn_close.onClick.AddListener(() => UIManager.Instance.DestroyUI(UITypes.EventFishingDuelRankPopupPanel));
}
void SetRewardPanel(int index)
{
var rank = data[index];
List<ItemData> itemDatas = GContext.container.Resolve<PlayerItemData>().GetItemDataByDropId(rank.WinReward);
for (int i = 0; i < rewardItemNews.Count; i++)
{
if (i < itemDatas.Count)
{
rewardItemNews[i].SetData(itemDatas[i]);
}
else
{
rewardItemNews[i].gameObject.SetActive(false);
}
}
for (int i = 0; i < selecteds.Count; i++)
{
selecteds[i].SetActive(i == index);
}
}
}