using Assets.Framework.Tool;
using Assets.MyGame.Scripts.Net;
using Assets.MyGame.Scripts.Net.API;
using Assets.MyGame.Scripts.Net.API.GameConfig_SubClass;
using Assets.MyGame.Scripts.Net.APIResponses.Enum;
using DG.Tweening;
using Spine.Unity;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using TMPro;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;
using UnityEngine.UI;
///
/// 星际迷航(XJMH)主面板:只放 XJMH 专属逻辑(炮台切换面板、金币柱、核弹道具)。
/// 通用逻辑都在父类 GameMainPanel_FishBase(三个游戏共用,不动具体实现)。
/// XJMH 专属表现移植自原版 Lua:
/// 切换面板 ← PW_SelectBatteryView(EnterAction / ExitAction / UpdateBattery / SelectBattery)
/// 金币柱 ← PW_GoldColumnMgr / PW_GoldColumn(见 GoldColumnController)
/// 道具 ← 原版只开放核弹头:按钮 + 缩放面板(面板同"道具二层"样式,条目按后端核弹数据自动生成)
/// 设置 ← 按钮 + 缩放面板(覆写父类的宽度展开动画,只影响 XJMH)
///
public class GameMainPanel_XJMH : GameMainPanel_FishBase
{
// ==================== 炮台切换面板(按钮式) ====================
[Header("炮台切换面板")]
[Tooltip("长按 img_OpenPT 弹出的切换面板(预制体里嵌的是原版 PW_SelectBatteryView 界面)")]
public GameObject ChangePTPanel;
public Button btn_GreenPT; // 对应 xjmhTurretList[0]
public Button btn_BluePT; // 对应 xjmhTurretList[1]
public Button btn_GoldPT; // 对应 xjmhTurretList[2]
public Button btn_VIPPT; // 对应 xjmhTurretList[3]
// 按钮与列表索引的映射(顺序固定:Green=0, Blue=1, Gold=2, VIP=3)
private Button[] _ptButtons;
[Header("炮台解锁限制(索引=按钮顺序 0绿/1蓝/2金/3VIP;非VIP只能用第一个)")]
[Tooltip("每个炮台所需贵族(VIP)等级,0=不限制。当前规则:只要是 VIP(≥1),后面三个都能用")]
public int[] ptUnlockVipLevel = { 0, 1, 1, 1 };
[Tooltip("每个炮台是否额外要求月卡在有效期内(当前规则不启用月卡限制,需要时把第 4 个勾上)")]
public bool[] ptUnlockNeedMonthCard = { false, false, false, false };
[Tooltip("贵族等级不足时按钮 LimitTip 的提示文案,{0}=所需贵族等级(原版 LevelLimit)")]
public string ptLockTipVipFormat = "贵族{0}解锁";
[Tooltip("需要月卡时按钮 LimitTip 的提示文案(原版 MemberBattery2)")]
public string ptLockTipMonthCard = "月卡专属";
[Tooltip("未解锁炮台按钮上的遮挡灰幕颜色(半透明灰)")]
public Color ptLockMaskColor = new Color(0f, 0f, 0f, 0.55f);
// 每个按钮的未解锁灰幕(懒创建后缓存复用;面板销毁时随之销毁)
private readonly Dictionary