using asap.core;
using DG.Tweening;
using game;
using GameCore;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using UniRx;
using cfg;
using System.Collections;
using System.Collections.Generic;
public class BuildingData
{
public float upgradeTime;
public int curStep;
public string CurrentPrefab;
public int areaStepCount;
public int areaIndex;
public int turnOffTimeScale;
///
/// 以下是下一步的数据
///
public bool isConstructionCost;
public int required;
public ulong NextUpgradeCost;
public List benefitsLevel;
public string Icon;
public string Title_l10n_key;
public List DisplaySwitch;
public int Rewards;
public int NextStep;
public int NextStepCount;
public int NextTimelineId;
public float NextStartTime;
public float NextDuration;
public string NextPrefab;
public int NextOffTimeScale;
}
public class CampPanel : BasePanel
{
private PlayerData _playerData;
private CampDataMM _campData;
private Tables _table;
private IUIService _uiService;
private ILoadResourceService _loadResourceService;
private BuffDataCenter _buffDataCenter;
private PlayerItemData _playerItemData;
private GuideDataCenter _guideDataCenter;
private PlayerShopData _playerShopData;
private IUserService _userService;
// MMTService removed - A/B test switch defaults to false
private CanvasGroup canvasGroup;
private Animator animator;
public TextMeshProUGUI areaInfo;
public TextMeshProUGUI text_progress;
private string text_progress_string = "0/0";
public TextMeshProUGUI cost;
private GameObject costRoot;
private TMP_Text text_cost_buff;
private TMP_Text text_old;
private TMP_Text text_info;
TMP_Text text_info2;
public RewardItemNew[] bg_reward;
private Image[] rewardBg;
public Image costIcon;
private GameObject barGo1;
private GameObject barGo2;
private GameObject barGo3;
private Image bar1;
private Image bar2;
private Image bar3;
public Image currentBar;
private CanvasGroup DownPanel;
private UIButton upgradeButton;
private GameObject tip_fast;
private GameObject btn_icon;
private GameObject btn_fix;
private Animator upButtonAni;
public UIDrag uiDrag;
public Button btn_close;
private Button btn_right;
private Animation camp_target;
private CanvasGroup top_area_canvas;
UITopArea top_area;
private float _upgradeTime;
private bool _isUpgrading;
private ulong _upgradeCost;
ulong _curGold;
private bool isStart = false;
private bool isdrag = false;
private bool fixIng = false;
private GameObject particle;
private GameObject kuang;
private bool isAutoBuilding = false;
private bool isAutoQuickBuilding = false;
/// 本轮长按是否曾进入极速建造 UI(镜头/全屏 loop);不能仅用 IsAutoQuickBuilding(),因金币不足会先清 isAutoBuilding,或某步 turnOffTimeScale 会清 isAutoQuickBuilding。
private bool _quickBuildFxSessionActive = false;
private bool isHolding = false;
private Coroutine startTimer;
private Coroutine _fastBuildScreenLoopFxRoutine;
private GameObject fx_autofastbuild_button_hold;
private GameObject fx_autofastbuild_screen_loop;
private TMP_Text text_name;
private Button btn_go;
private GameObject btn_p_text;
private GameObject btn_text_confirm;
private bool isCampPanel_fade = false;
private List levelItemDatas;
private float buildingSpeed = 1;
private float maxSpeed = 1.5f;
/// 快速建造时镜头 360° 旋转一圈时长(秒),可配置
private float FastBuildCameraRotationDuration => _table.TbGlobalConfig.RotationDuration;
/// 极速 UI 渐隐后再播全屏 loop 特效的延迟(秒),与 CampPanel_fade_fastauto 节奏对齐
[SerializeField] private float _fastAutoScreenLoopFxDelaySeconds = 1f;
/// 快速建造结束后,进度条匀速增长的速度(填充量/秒),值越大进度条跑得越快
private int rewardLen = 0;
private Queue buildingDatas = new Queue();
private int _currentBuildingAreaIndex = -1;
private void Awake()
{
// 一次性解析所有需要的依赖
ResolveDependencies();
var topArea = transform.Find("top_area");
top_area_canvas = topArea.GetComponent();
top_area = topArea.GetComponent();
particle = topArea.Find("particle").gameObject;
maxSpeed = 1 + _table.TbGlobalConfig.TimeScalePerStep * _table.TbGlobalConfig.AccMaxStep;
canvasGroup = GetComponent();
animator = GetComponent();
var safearea = transform.Find("safearea");
uiDrag = safearea.Find("Image").GetComponent();
var middlePanel = safearea.Find("MiddlePanel");
text_name = middlePanel.Find("completed/text_name").GetComponent();
var campTarget = middlePanel.Find("camp_target");
camp_target = campTarget.GetComponent();
bg_reward = campTarget.Find("reward").GetComponentsInChildren();
rewardBg = new Image[bg_reward.Length];
for (int i = 0; i < bg_reward.Length; i++)
{
rewardBg[i] = bg_reward[i].transform.Find("bg").GetComponent();
}
var bgBar = campTarget.Find("bg_bar");
areaInfo = bgBar.Find("text_areaInfo").GetComponent();
text_progress = bgBar.Find("bg_progress/text_progress").GetComponent();
barGo1 = bgBar.Find("bar1").gameObject;
barGo2 = bgBar.Find("bar2").gameObject;
barGo3 = bgBar.Find("bar3").gameObject;
bar1 = barGo1.transform.Find("bar").GetComponent();
bar2 = barGo2.transform.Find("bar").GetComponent();
bar3 = barGo3.transform.Find("bar").GetComponent();
var downPanel = safearea.Find("DownPanel");
DownPanel = downPanel.GetComponent();
btn_close = downPanel.Find("btn_close").GetComponent