|
@@ -0,0 +1,158 @@
|
|
|
+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);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|