using cfg.FunctionLockCfg;
using Cysharp.Threading.Tasks;
using Framework;
using PhxhSDK;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace Gameplay.FunctionLock
{
public sealed class FunctionLock : UIGameObjectWrapper
{
///
/// 解锁动画
///
private Animator animator;
///
/// 解锁描述
///
private TMP_Text textContent;
private Button button;
///
/// 功能锁数据
///
private FunctionLockNode functionLockData;
///
/// 解锁动画触发参数名
///
private const string ANIM_TRIGGER_NAME = "Unlock";
///
/// 动画时长
///
private const float ANIM_TIME = 3f;
private bool isPlayingAnim = false;
public int FunctionLockId { get { return functionLockData.FunctionLockCfgId; } }
public DataFunctionLock cfg;
///
/// UI名
///
public string UIName
{
get
{
if (null == cfg)
return string.Empty;
return cfg.UIName;
}
}
public bool IsUnlock
{
get
{
#if !FUNCTION_LOCK
return true; // 未启用功能锁,永远处于解锁状态
#endif
if (null == cfg)
return true;
return FunctionLockManager.Instance.IsUnlock(cfg.FunctionType);
}
}
public FunctionLock(GameObject root) : base(root, true)
{
functionLockData = GoRoot.GetComponent();
animator = GetComponent("Lock");
textContent = GetComponent("Lock/TextContent");
button = GetComponent