using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using asap.core;
using cfg;
using DataCenter;
using game;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace UI.PartnerGather.Mining
{
///
/// 事件合作伙伴抽奖挖矿面板控制器
/// 负责管理抽奖转盘UI、挖矿进度显示、场景控制器绑定等核心功能
///
/// 建议挂载在:EventPartnerDrawMiningPanel UI预制体的根对象上
///
/// UI结构建议:
/// EventPartnerDrawMiningPanel (挂载此脚本)
/// ├── root/
/// │ ├── turntable/Scroll_item (转盘滚动区域)
/// │ ├── btn_common_green/btn_green (抽奖按钮)
/// │ └── turnable/select (选中效果)
/// ├── btn_close (关闭按钮)
/// └── SettlementPanel/ (结算面板,可选)
/// ├── Rewards/ (奖励显示区域)
/// └── Trophy/ (奖杯显示区域)
///
/// 重要说明:
/// - 此脚本会自动查找和绑定采集场景控制器
/// - 需要正确设置转盘相关的UI引用
/// - 支持节点结算过场动画和奖杯显示系统
///
public class EventPartnerDrawMiningPanel : MonoBehaviour
{
// 管理器
private EventPartnerGatherManager _eventPartnerGatherManager;
[Header("采集场景配置(运行时自动设置)")]
[SerializeField]
private EventPartnerMiningSceneController miningScene;
private bool _isProcessingResult = false;
// 更新点数即等级
[Header("=== 等级进度显示 ===")]
[Tooltip("等级节点控制器数组 - 每个节点对应一个挖矿阶段")]
public EventPartnerMiningLevelController[] levels;
public float contentDeltaX = 24;
public Image bar;
private Transform _level;
private Transform _turntable; // 转盘
private PanelScroll _scrollList; // 滚动列表
private Transform _select; // 选中效果
private Transform _priceItem; // 列表滚动中的数据
// 按钮
private Button _btnClose;
private Button _btnSpin;
private ScrollRect _scrollRect;
private RectTransform _viewport;
private RectTransform _content;
private RectTransform _itemTemplate;
// 记录当前的Item
private readonly List _spinItemViews = new();
// private readonly List _rects = new List();
private readonly List _dataIndexMap = new List();
[Header("结算过场配置")]
public Transform settlementPanel; // 结算面板
public Transform trophyDisplay; // 奖杯显示区域
public Transform nodeCompletionEffect; // 节点完成特效
public AudioClip settlementSound; // 结算音效
public AudioClip trophySound; // 奖杯音效
private bool _isShowingSettlement = false;
// 当前点数列表
private List _spinPointDatas;
// 0,1,2 停靠在第二个格子
private readonly int _starGrid = 2;
private int _dataCount;
private int _poolSize;
private float _itemWidth;
private bool _animating;
private float _autoScrollSpeed = 60f;
private bool _autoScroll = false;
// 自动滚动累积位移(用于与步进动画叠加)
private float _autoScrollAccumulation = 0f;
private void Awake()
{
//
_eventPartnerGatherManager = GContext.container.Resolve();
//
_btnSpin = transform.Find("root/btn_common_green/btn_green").GetComponent