using System;
|
using UnityEngine;
|
|
public class TianziBillboradBossHead : MonoBehaviour
|
{
|
[SerializeField] RectTransform rectTransform;
|
[SerializeField] ImageEx imgQuality;
|
[SerializeField] ImageEx imgHeadIcon;
|
[SerializeField] TextEx txtTime;
|
|
private bool isTodayBoss = false;
|
|
TianziBillboradManager model { get { return TianziBillboradManager.Instance; } }
|
|
public void Display(int bossId)
|
{
|
if (!NPCConfig.HasKey(bossId))
|
return;
|
NPCConfig npcConfig = NPCConfig.Get(bossId);
|
int heroID = npcConfig.RelatedHeroID;
|
if (!HeroConfig.HasKey(heroID))
|
return;
|
var heroConfig = HeroConfig.Get(heroID);
|
int skinID = heroConfig.SkinIDList[0];
|
if (!HeroSkinConfig.HasKey(skinID))
|
return;
|
if (!model.TryGetBossConfig(model.DataMapID, model.todayLineID, out DungeonConfig dungeonConfig, out NPCLineupConfig npcLineupConfig, out NPCConfig npcConfigToday))
|
return;
|
|
isTodayBoss = npcConfigToday.NPCID == bossId;
|
|
// --- 设置尺寸 ---
|
imgQuality.rectTransform.sizeDelta = isTodayBoss ? new Vector2(104, 104) : new Vector2(94, 94);
|
rectTransform.sizeDelta = isTodayBoss ? new Vector2(104, 104) : new Vector2(94, 94);
|
|
// --- 设置图像和状态 ---
|
var heroSkinConfig = HeroSkinConfig.Get(skinID);
|
imgQuality.SetSprite("heroheadBG" + heroConfig.Quality);
|
imgQuality.gray = !isTodayBoss;
|
|
var sprite = UILoader.LoadSprite("HeroHead", heroSkinConfig.SquareIcon);
|
if (sprite == null)
|
{
|
// 内网未配置时
|
imgHeadIcon.SetSprite("herohead_default");
|
}
|
else
|
{
|
imgHeadIcon.overrideSprite = sprite;
|
}
|
imgHeadIcon.gray = !isTodayBoss;
|
|
txtTime.SetActive(isTodayBoss);
|
if (isTodayBoss)
|
{
|
UpdateTimer();
|
}
|
}
|
|
public void UpdateTimer()
|
{
|
if (!isTodayBoss)
|
return;
|
DateTime endDay = TimeUtility.ServerNow.AddDays(1).Date;
|
TimeSpan remainingTime = endDay - TimeUtility.ServerNow;
|
int remainingSeconds = (int)remainingTime.TotalSeconds;
|
|
if (remainingSeconds > 0)
|
{
|
string countdownText = TimeUtility.SecondsToHMS(remainingSeconds);
|
txtTime.text = countdownText;
|
}
|
else
|
{
|
// 倒计时结束,隐藏文本
|
txtTime.SetActive(false);
|
}
|
}
|
}
|