/*** ** ** Blocks 玩法 ** 2025-12-8 **/ using System; using System.Collections.Generic; using System.Threading.Tasks; using asap.core; using cfg; using DG.Tweening; using EventCubeMelt; using EventCubeMelt.Data; using game; using Game; using GameCore; using TMPro; using UniRx; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.UI; using Animation = UnityEngine.Animation; using Sequence = DG.Tweening.Sequence; namespace EventCubeMelt.UI { public class EventCubeMeltPanel : BasePanel { // private EventCubeMeltManager _thisEventManager; private EventCubeMeltData _thisEventData; // private readonly PlayerItemData _playerItemData = GContext.container.Resolve(); // 显示奖励数量 private int _showRewardCount = 4; private IDisposable _robotAddScoreSubscription; private Button _btnClose; private Button _btnQuestionmark; private Button _btnAdd; private Transform root; private TMP_Text icon_ticket; private TMP_Text _textTitle; private TMP_Text _txtTime; private TMP_Text _txtNum; private Image _imgTicket; //- 图标 private Transform _stageComplete; private Transform _nextStageTip; private TMP_Text _textStage; private Animation _showAnimation; // 处理显示的Animation private CanvasGroup _canvasGroup; private Image _weaponImage; //- 视频解码器 private Transform _videoPlayer; //- 引导 private Transform _guide01; private Button _btnJump; // 获取奖励逻辑 private bool _isStageRewardLogic = false; private TaskCompletionSource _waitStageRewardTcs; private bool _isFinalRewardLogic = false; // 最终奖励 private RewardItemNew _rewardFinal; // Level 复用一下 private SandDigLevel[] _levels; private RewardItemNew _rewardItem1; private RewardItemNew _rewardItem2; // 提出来放到脚本中 private CubeMeltCollectItems[] _collectItems; // 定时器 private IDisposable _timer; // 增光特效 private Transform _fxUIEventCubemeltFireIncrease; #region 组件引用 [Header("组件引用")][SerializeField] private BoardRenderer boardRenderer; [SerializeField] private PieceRenderer[] pieceRendererArray; #endregion #region 数值设定 [Header("面板宽度")] public int boardWidth = 8; [Header("面板高度")] public int boardHeight = 8; // [Header("下方单元数量")] // public int pieceNumber = 3; [Header("下方单元宽")] public int pieceWidth = 5; [Header("下方单元高")] public int pieceHeight = 5; [Header("视觉效果")] [Tooltip("点击的偏移")] public int pieceOffsetY = 320; [Tooltip("拖动对象的的缩放")] public float pieceScaleFactor = 100F / 40; [Tooltip("拖动对象目标大小,影响计算位置")] public float pieceTargetSize = 100F; [Tooltip("滑动比例")] public float pieceDistanceFactor = 0.2F; #endregion // GUide private Transform moveNode; private Vector3 moveNodeOriginPos; private Vector3 moveFinalPos; private bool _isUpdatingCollect; #region 周期函数 private void Awake() { ELog("Awake"); _thisEventManager = GContext.container.Resolve(); _thisEventData = _thisEventManager.EventData; root = transform.Find("root"); _textTitle = transform.Find("root/title/Txt_titleName").GetComponent(); _levels = transform.Find("root/title/level").GetComponentsInChildren(true); _txtTime = transform.Find("root/title/level/Txt_time").GetComponent(); _rewardFinal = transform.Find("root/title/level/reward").GetComponent(); _showAnimation = GetComponent(); _canvasGroup = GetComponent(); _collectItems = transform.Find("root/TargetObject/CollectObject/CollectList") .GetComponentsInChildren(true); // _rewardItem1 = transform.Find("root/TargetObject/RewardObject/reward/reward1") .GetComponent(); _rewardItem2 = transform.Find("root/TargetObject/RewardObject/reward/reward2") .GetComponent(); _stageComplete = transform.Find("root/StageComplete"); _nextStageTip = transform.Find("root/NextStageTip"); _textStage = transform.Find("root/NextStageTip/txt_stage").GetComponent(); _btnClose = transform.Find("p_panel_btn_close").GetComponent