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

128 lines
4.6 KiB
C#

using asap.core;
using cfg;
using GameCore;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class FishCardUI : MonoBehaviour
{
public Image bg_card;
public TMP_Text text_name;
public TMP_Text text_map;
public GameObject mask_fish;
public Image img_icon_hd;
public Image icon_tag;
public Image bar;
public GameObject up;
public GameObject bg_bar;
public TMP_Text text_bar;
public TMP_Text text_level;
public GameObject bg_num;
public TMP_Text text_num;
public GameObject text_empty;
public GameObject mask_empty;
public GameObject newGo;
public RewardItem transfer;
public FishData data;
cfg.FishCard fishCard;
public int curProficiency;
public int curShowNum = 0;
ShowImageData imageData = null;
public void Init()
{
transfer.gameObject.SetActive(false);
text_map.gameObject.SetActive(false);
if (data != null)
{
IUIService uiService = GContext.container.Resolve<IUIService>();
curProficiency = curShowNum > 0 ? curShowNum : GContext.container.Resolve<PlayerFishData>().GetCardDataProficiency(data.FishCardID);
text_name.text = LocalizationMgr.GetText(data.Name_l10n_key);
fishCard = GContext.container.Resolve<Tables>().TbFishCard[data.FishCardID];
string spriteName = "fishiconhd_empty_02";
if (data.Quality < 3)
{
spriteName = "fishiconhd_empty_01";
}
else if (data.Quality > 3)
{
spriteName = "fishiconhd_empty_03";
}
img_icon_hd.sprite = uiService.GetSprite(spriteName);
if (imageData == null)
{
imageData = new ShowImageData(img_icon_hd);
}
imageData.SetName(fishCard.Icon);
uiService.SetImageSprite(imageData, BasePanel.PanelName);
//设置img_icon颜色为纯白色
img_icon_hd.color = curProficiency > 0 ?
Color.white :
//设置img_icon颜色为纯黑色60%透明度
new Color(0, 0, 0, 0.6f);
mask_fish.gameObject.SetActive(false);
img_icon_hd.gameObject.SetActive(true);
uiService.SetImageSprite(bg_card, $"bg_fishcard_{data.Quality}", BasePanel.PanelName);
uiService.SetImageSprite(icon_tag, $"icon_fish_rate_tag_{data.Quality}", BasePanel.PanelName);
SetProficiency();
}
}
public void SetProficiency()
{
curProficiency = curShowNum > 0 ? curShowNum : GContext.container.Resolve<PlayerFishData>().GetCardDataProficiency(data.FishCardID);
//显示锁头
newGo.SetActive(GContext.container.Resolve<PlayerFishData>().GetDataNewFish(data.ID) && curProficiency > 0);
mask_empty.SetActive(curProficiency == 0);
text_empty.SetActive(curProficiency == 0);
bg_bar.gameObject.SetActive(curProficiency > 0);
text_level.gameObject.SetActive(curProficiency > 0);
icon_tag.gameObject.SetActive(curProficiency > 0);
up.SetActive(false);
int level = GContext.container.Resolve<PlayerFishData>().GetDataLevel(data.ID);
text_level.text = level.ToString();
bg_num.gameObject.SetActive(false);
if (curProficiency > 0)
{
if (level < fishCard.MaxLevel)
{
int endWeight = fishCard.CardsRequiredList[level];
int startWeight = level > 0 ? fishCard.CardsRequiredList[level - 1] : 0;
bar.fillAmount = (curProficiency - startWeight) / (float)(endWeight - startWeight);
if (curProficiency >= endWeight)
{
up.SetActive(true);
newGo.SetActive(false);
}
text_bar.text = $"{curProficiency - startWeight}/{endWeight - startWeight}";
}
else if (level >= fishCard.MaxLevel)
{
bar.fillAmount = 1;
text_bar.text = LocalizationMgr.GetText("UI_FishingPanel_101007");
}
}
else
{
bar.fillAmount = 0;
}
}
public void SetNum(int count)
{
text_map.gameObject.SetActive(true);
var mapData = GContext.container.Resolve<Tables>().TbMapData.GetOrDefault(data.AreaID);
text_map.text = LocalizationMgr.GetText(mapData.Name_l10n_key);
up.SetActive(false);
//text_level.gameObject.SetActive(false);
//if (count > 1)
{
bg_num.gameObject.SetActive(true);
text_num.text = $"x{count}";
}
}
}