| | |
| | | using System; |
| | | using UnityEngine.EventSystems; |
| | | |
| | | public class UIFuncOpen : MonoBehaviour, IPointerClickHandler |
| | | public class UIFuncOpen : MonoBehaviour, IPointerClickHandler |
| | | { |
| | | [SerializeField] int funcOpenKey; |
| | | [SerializeField] GameObject LockImg; |
| | | [SerializeField] bool active = true; |
| | | public int id { get { return funcOpenKey; } } |
| | | |
| | | private Button funcBtn; |
| | | |
| | | private void Awake() |
| | | { |
| | | [SerializeField] int funcOpenKey; |
| | | [SerializeField] GameObject LockImg; |
| | | [SerializeField] bool active = true; |
| | | public int id { get { return funcOpenKey; } } |
| | | funcBtn = GetComponent<Button>(); |
| | | |
| | | private Button funcBtn; |
| | | FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent; |
| | | } |
| | | |
| | | private void Awake() |
| | | public void OnPointerClick(PointerEventData eventData) |
| | | { |
| | | if (!FuncOpen.Instance.IsFuncOpen(funcOpenKey)) |
| | | { |
| | | funcBtn = GetComponent<Button>(); |
| | | |
| | | FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent; |
| | | FuncOpen.Instance.ProcessorFuncErrorTip(funcOpenKey); |
| | | return; |
| | | } |
| | | } |
| | | |
| | | public void OnPointerClick(PointerEventData eventData) |
| | | { |
| | | if (!FuncOpen.Instance.IsFuncOpen(funcOpenKey)) |
| | | { |
| | | FuncOpen.Instance.ProcessorFuncErrorTip(funcOpenKey); |
| | | return; |
| | | } |
| | | } |
| | | private void OnEnable() |
| | | { |
| | | SetState(); |
| | | } |
| | | |
| | | private void OnEnable() |
| | | private void OnFuncStateChangeEvent(int func) |
| | | { |
| | | if (funcOpenKey == func) |
| | | { |
| | | SetState(); |
| | | } |
| | | } |
| | | |
| | | private void OnFuncStateChangeEvent(int func) |
| | | private void OnDestroy() |
| | | { |
| | | FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent; |
| | | } |
| | | private void SetState() |
| | | { |
| | | var IsOpen = FuncOpen.Instance.IsFuncOpen(funcOpenKey); |
| | | var _funcOpenCfg = FuncOpenLVConfig.Get(funcOpenKey); |
| | | |
| | | if (_funcOpenCfg == null) |
| | | { |
| | | if (funcOpenKey == func) |
| | | { |
| | | SetState(); |
| | | } |
| | | IsOpen = true; |
| | | active = true; |
| | | } |
| | | |
| | | private void OnDestroy() |
| | | if (funcBtn != null) |
| | | { |
| | | FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent; |
| | | funcBtn.interactable = IsOpen; |
| | | } |
| | | private void SetState() |
| | | |
| | | |
| | | if (LockImg != null) |
| | | { |
| | | var IsOpen = FuncOpen.Instance.IsFuncOpen(funcOpenKey); |
| | | var _funcOpenCfg = FuncOpenLVConfig.Get(funcOpenKey); |
| | | LockImg.SetActive(!IsOpen); |
| | | } |
| | | |
| | | if (_funcOpenCfg == null) |
| | | { |
| | | IsOpen = true; |
| | | active = true; |
| | | } |
| | | // 未开启是否显示的配置 |
| | | // if (_funcOpenCfg != null && _funcOpenCfg.open == 0) |
| | | // { |
| | | // gameObject.SetActive(false); |
| | | // return; |
| | | // } |
| | | |
| | | if (funcBtn != null) |
| | | if (!active) |
| | | { |
| | | gameObject.SetActive(IsOpen); |
| | | } |
| | | else |
| | | { |
| | | if (!gameObject.activeSelf) |
| | | { |
| | | funcBtn.interactable = IsOpen; |
| | | } |
| | | |
| | | |
| | | if (LockImg != null) |
| | | { |
| | | LockImg.SetActive(!IsOpen); |
| | | } |
| | | |
| | | if (_funcOpenCfg != null && _funcOpenCfg.open == 0) |
| | | { |
| | | gameObject.SetActive(false); |
| | | return; |
| | | } |
| | | |
| | | if (!active) |
| | | { |
| | | gameObject.SetActive(IsOpen); |
| | | } |
| | | else |
| | | { |
| | | if (!gameObject.activeSelf) |
| | | { |
| | | gameObject.SetActive(true); |
| | | } |
| | | gameObject.SetActive(true); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |