// - 新的Blocks UI using System; using System.Collections.Generic; using System.Threading.Tasks; using asap.core; using cfg; using DG.Tweening; using EventCubeMelt; using EventCubeMelt.Data; using EventCubeMelt.UI; using game; using Game; using GameCore; using TMPro; using UniRx; using UnityEngine; using UnityEngine.UI; namespace EventBlocks.UI { public class EventBlockPanel : 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 EventBlockVideoPlayer _blockVideoPlayer; //- 引导 private Transform _guide01; private Button _guideBtnSkip; private Transform _guide01Region; 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 Transform _normalReward; private RewardItemNew _rewardItemFinal; // 提出来放到脚本中 private CubeMeltCollectItems[] _collectItems; // 定时器 private IDisposable _timer; // 增光特效 private Transform _fxUIEventCubemeltFireIncrease; #region 组件引用 [Header("组件引用")] [SerializeField] private BoardRenderer boardRenderer; [SerializeField] private PieceRenderer[] pieceRendererArray; #endregion [Header("动画名")] [SerializeField] private string aniEventBlockFinishName = "EventBlockFinish"; [SerializeField] private string anmEventBlockFinishRecover = "EventBlockFinishRecover"; [SerializeField] private string aniEventBlockShow = "EventBlockShow"; [SerializeField] private string aniEventBlockSwithShow = "EventBlockSwithShow"; #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; [Header("新手引导")] [Tooltip("手指演示开始后,超时则结束新手引导(秒);拖错重播手指不重置该计时")] [SerializeField] private float guideFingerDemoTimeoutSeconds = 30f; [SerializeField] private int guideIndex = 2; [SerializeField] private float moveDuration = 1f; [SerializeField] private float pauseDuration = 0.5f; [SerializeField] private float guideScaleFactor = 2.3f; [SerializeField] private Transform guideFinalTrans; private IDisposable _guideFingerTimeoutDisposable; #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); // _normalReward = transform.Find("root/TargetObject/RewardObject/reward"); _rewardItem1 = transform.Find("root/TargetObject/RewardObject/reward/reward1") .GetComponent(); _rewardItem2 = transform.Find("root/TargetObject/RewardObject/reward/reward2") .GetComponent(); _rewardItemFinal = transform.Find("root/TargetObject/RewardObject/rewardFinal") .GetComponent(); // _stageComplete = transform.Find("root/StageComplete"); // _nextStageTip = transform.Find("root/NextStageTip"); // _textStage = transform.Find("root/NextStageTip/txt_stage").GetComponent(); _btnClose = transform.Find("root/p_panel_btn_close").GetComponent