//-------------------------------------------------------- 
 | 
//    [Author]:           玩个游戏 
 | 
//    [  Date ]:           Friday, September 29, 2017 
 | 
//-------------------------------------------------------- 
 | 
using UnityEngine; 
 | 
using System.Collections; 
 | 
using UnityEngine.UI; 
 | 
using System; 
 | 
using UnityEngine.EventSystems; 
 | 
  
 | 
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() 
 | 
    { 
 | 
        funcBtn = GetComponent<Button>(); 
 | 
  
 | 
        FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent; 
 | 
    } 
 | 
  
 | 
    public void OnPointerClick(PointerEventData eventData) 
 | 
    { 
 | 
        if (!FuncOpen.Instance.IsFuncOpen(funcOpenKey)) 
 | 
        { 
 | 
            FuncOpen.Instance.ProcessorFuncErrorTip(funcOpenKey); 
 | 
            return; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    private void OnEnable() 
 | 
    { 
 | 
        SetState(); 
 | 
    } 
 | 
  
 | 
    private void OnFuncStateChangeEvent(int func) 
 | 
    { 
 | 
        if (funcOpenKey == func) 
 | 
        { 
 | 
            SetState(); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    private void OnDestroy() 
 | 
    { 
 | 
        FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent; 
 | 
    } 
 | 
    private void SetState() 
 | 
    { 
 | 
        var IsOpen = FuncOpen.Instance.IsFuncOpen(funcOpenKey); 
 | 
        var _funcOpenCfg = FuncOpenLVConfig.Get(funcOpenKey); 
 | 
  
 | 
        if (_funcOpenCfg == null) 
 | 
        { 
 | 
            IsOpen = true; 
 | 
            active = true; 
 | 
        } 
 | 
  
 | 
        if (funcBtn != null) 
 | 
        { 
 | 
            // 禁用按钮的点击事件,但不改变透明度 
 | 
            funcBtn.enabled = 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); 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
} 
 |