using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using asap.core; using cfg; using Event1v1Battle.Data; using game; using GameCore; using TimeManager; using TMPro; using UIExtend.Component; using UniRx; using UnityEngine; using UnityEngine.Playables; using UnityEngine.UI; namespace Event1v1Battle.Panel.MainPanel { /// /// 1v1扇耳光大赛主战斗面板 Event1v1BattleSlapPanel /// public class Event1v1BattleSlapPanel : BasePanel { #region UI Elements // Top private TMP_Text _textEventTime; private TMP_Text _textStageHP; private Image _imgStageHPBar; private TMP_Text _textPlayerHP; private Image _imgPlayerHPBar; private Image[] _lifeImages; /// fx_hploss 下与子节点,与 p_lives_icon 中心形顺序一一对应(本次扣第几颗心就开哪一个) private GameObject[] _fxHpLossSlots; private int? _overrideLifeDisplayCount; private Head _myself; private Head _enemy; private GameObject _iconEmpty; private Button _btnInfo; private Button _btnPack; // 礼包按钮 //buff private GameObject _saleObj; private TMP_Text _textSaleTime; private GameObject fx_ui_event1v1battle_slap_buff; // Bottom private Button _btnBattle; private Button _btnStart; private Button _btnReward; private Button _btnClose; private Button _btnRevive; private TMP_Text _textRound; private TMP_Text _textReviveBtn; private StageItemCell[] _stageItemCells; //chest private PlayableDirector _chestDirector; #endregion #region Manager private Event1v1BattleSlapManager _manager; private Event1v1BattleSlapData Data => _manager?.LoadData(); #endregion [Header("chest reward")] [SerializeField] private float chestRewardTime = 1f; [Header("fx_hploss")] [Tooltip("子节点上无 Animation 默认 clip 时的等待时长(秒)")] [SerializeField] private float _fxHpLossWaitSeconds = 0.5f; private void Awake() { // Top _textEventTime = gameObject.FindChildGameObject("p_text_event_time")?.GetComponent(); _lifeImages = gameObject.FindChildGameObject("p_lives_icon")?.GetComponentsInChildren(true); var fxHpLossRoot = gameObject.FindChildGameObject("fx_hploss"); if (fxHpLossRoot != null) { var t = fxHpLossRoot.transform; int childCount = t.childCount; int slotCount = Mathf.Min(3, childCount); _fxHpLossSlots = new GameObject[slotCount]; for (int i = 0; i < slotCount; i++) { _fxHpLossSlots[i] = t.GetChild(i).gameObject; _fxHpLossSlots[i].SetActive(false); } } _textStageHP = gameObject.FindChildGameObject("p_text_blood")?.GetComponent(); // NPC血量文本 _imgStageHPBar = gameObject.FindChildGameObject("p_bar_enermy")?.GetComponent(); // NPC血条 _enemy = gameObject.FindChildGameObject("head_enermy")?.GetComponent(); _iconEmpty = gameObject.FindChildGameObject("p_icon_empty"); _textPlayerHP = gameObject.FindChildGameObject("p_text_blood_myself")?.GetComponent(); // 玩家血量文本(在myself下) _imgPlayerHPBar = gameObject.FindChildGameObject("p_bar_myself")?.GetComponent(); // 玩家血条 _myself = gameObject.FindChildGameObject("head_myself")?.GetComponent(); _btnPack = gameObject.FindChildGameObject("btn_pack")?.GetComponent