| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 | using System;using Excel2Json;using Fort23.Core;using Fort23.Mono;using Fort23.UTool;using UnityEngine;using UnityEngine.EventSystems;using UnityEngine.UI;public class ULockWidget : MonoBehaviour, IPointerClickHandler{    private int uLockId;    public int uLockFunction;    public Action ulockCallBack;    private UnlockConfig _config;    private bool _currULock;    private Button mUIButton;    private bool mIsUnlock;    private void Awake()    {        if (uLockFunction == 0)            return;        StartULock();        if (mUIButton == null) return;    }    public void SetuLockFunction(int id)    {        uLockFunction = id;        if (uLockFunction == 0)        {            mIsUnlock = true;            UnlockShow(mIsUnlock);            return;        }        StartULock();        if (mUIButton == null) return;    }    public void StartULock()    {        if (uLockId <= 0)        {            _config = ULockManager.Instance.GetULockConfig(uLockFunction);        }        else        {            _config = ULockManager.Instance.GetULockConfig(uLockId, false);        }        mUIButton = transform.GetComponentInChildren<Button>();        EventManager.Instance.RemoveEventListener(CustomEventType.RefreshULock, RefreshULock);        EventManager.Instance.AddEventListener(CustomEventType.RefreshULock, RefreshULock);        ULock();    }    public void UnlockCallBack()    {        ulockCallBack?.Invoke();    }    private void OnDestroy()    {        EventManager.Instance.RemoveEventListener(CustomEventType.RefreshULock, RefreshULock);        ulockCallBack = null;    }    private void RefreshULock(IEventData e)    {        ULock();    }    private void ULock()    {        if (_config.ID == 0)        {            mIsUnlock = true;            return;        }        mIsUnlock = ULockManager.Instance.IsULock(_config);        UnlockShow(mIsUnlock);    }    /// <summary>    /// 解锁的表现逻辑    /// </summary>    /// <param name="isUnlock">是否解锁</param>    private void UnlockShow(bool isUnlock)    {        mIsUnlock = isUnlock;        if (gameObject == null) return;        Text[] texts = gameObject.GetComponentsInChildren<Text>();        if (!isUnlock)        {            if (_config.lockType == 1)            {                gameObject.SetActive(false);            }            else if (_config.lockType == 2)            {                if (mUIButton != null)                {                    mUIButton.enabled = false;                }                else                {                    LogTool.Log("没有碰撞区域" + gameObject.name);                }                gameObject.transform.Gray(true);            }            _currULock = true;        }        else        {            if (_config.lockType == 1)            {                gameObject.SetActive(true);            }            else if (_config.lockType == 2)            {                if (mUIButton != null)                {                    mUIButton.enabled = true;                }                //TODO 恢复正常颜色                gameObject.transform.RecoverColor();            }            UnlockCallBack();            EventManager.Instance.RemoveEventListener(CustomEventType.RefreshULock, RefreshULock);        }    }    public void OnPointerClick(PointerEventData eventData)    {        LogTool.Log("点击~");        if (!mIsUnlock)        {            TipMessagePanel.OpenTipMessagePanel(ULockManager.Instance.ShowUnlockTips(_config.ID), Vector2.zero);        }    }}
 |