| | |
| | | //-------------------------------------------------------- |
| | | // [Author]: 第二世界 |
| | | // [ Date ]: Tuesday, October 10, 2017 |
| | | //-------------------------------------------------------- |
| | | using UnityEngine; |
| | | using System.Collections; |
| | | using System.Collections.Generic; |
| | | using UnityEngine.UI; |
| | | using System; |
| | | using UnityEngine.EventSystems; |
| | | |
| | | namespace Snxxz.UI |
| | | { |
| | | public class FunctionUnlockFlyObjectTarget : MonoBehaviour, IPointerClickHandler |
| | | { |
| | | [SerializeField] FunctionUnlockType m_UnLockType = FunctionUnlockType.Treasure; |
| | | [SerializeField] int[] m_Ids; |
| | | [SerializeField] Transform m_ContainerLocked; |
| | | [SerializeField] Transform m_ContainerUnLocked; |
| | | [SerializeField] bool m_MainWinUnfold = false; |
| | | |
| | | public static event Action IsPlayerUiEffect; |
| | | public bool mainWinUnFold { get { return m_MainWinUnfold; } } |
| | | [SerializeField] int m_SkillGroup = 0; |
| | | public int skillGroup { get { return m_SkillGroup; } } |
| | | [SerializeField] UIEffect m_Effect; |
| | | |
| | | Window parentWindow; |
| | | bool waitforShow = false; |
| | | float showOverTime = 0f; |
| | | public int[] IdList { |
| | | get { return m_Ids; } |
| | | set { m_Ids = value; } |
| | | } |
| | | public FunctionUnlockType Z_UnLockType { |
| | | get { return m_UnLockType; } |
| | | set { m_UnLockType = value; } |
| | | } |
| | | public void OnPointerClick(PointerEventData eventData) |
| | | { |
| | | for (int i = 0; i < m_Ids.Length; i++) |
| | | { |
| | | NewUnLockFunctionEffectRecorder.Remove(m_Ids[i]); |
| | | } |
| | | |
| | | if (m_Effect != null) |
| | | { |
| | | m_Effect.Stop(); |
| | | } |
| | | } |
| | | |
| | | public void Prepare() |
| | | { |
| | | if (m_ContainerLocked != null) |
| | | { |
| | | m_ContainerLocked.gameObject.SetActive(true); |
| | | } |
| | | |
| | | if (m_ContainerUnLocked != null) |
| | | { |
| | | m_ContainerUnLocked.gameObject.SetActive(false); |
| | | } |
| | | |
| | | waitforShow = true; |
| | | showOverTime = Time.time + 10f; |
| | | } |
| | | |
| | | public void ResponseFunctionUnLock() |
| | | { |
| | | waitforShow = false; |
| | | |
| | | if (m_ContainerLocked != null) |
| | | { |
| | | m_ContainerLocked.gameObject.SetActive(false); |
| | | } |
| | | |
| | | if (m_ContainerUnLocked != null) |
| | | { |
| | | m_ContainerUnLocked.gameObject.SetActive(true); |
| | | } |
| | | |
| | | if (m_Effect != null) |
| | | { |
| | | for (int i = 0; i < m_Ids.Length; i++) |
| | | { |
| | | NewUnLockFunctionEffectRecorder.Record(m_Ids[i]); |
| | | } |
| | | |
| | | m_Effect.Play(); |
| | | } |
| | | |
| | | EffectMgr.Instance.PlayUIEffect(1033, 5500, this.transform, false); |
| | | } |
| | | |
| | | private void Awake() |
| | | { |
| | | if (m_Ids == null) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | FunctionUnlockFlyObjectTargetCenter.Register(m_UnLockType, m_Ids, this); |
| | | WindowCenter.Instance.windowAfterOpenEvent += OnAfterWindowOpen; |
| | | } |
| | | |
| | | private void OnAfterWindowOpen(Window _window) |
| | | { |
| | | if (parentWindow == null || _window != parentWindow) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | for (int i = 0; i < m_Ids.Length; i++) |
| | | { |
| | | if (NewUnLockFunctionEffectRecorder.Contain(m_Ids[i])) |
| | | { |
| | | if (m_Effect != null) |
| | | { |
| | | m_Effect.Play(); |
| | | } |
| | | if (IsPlayerUiEffect != null) |
| | | { |
| | | IsPlayerUiEffect(); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | private void OnEnable() |
| | | { |
| | | parentWindow = this.GetComponentInParent<Window>(); |
| | | if (m_Ids == null) |
| | | { |
| | | return; |
| | | } |
| | | for (int i = 0; i < m_Ids.Length; i++) |
| | | { |
| | | if (NewUnLockFunctionEffectRecorder.Contain(m_Ids[i])) |
| | | { |
| | | if (m_Effect != null && !m_Effect.IsPlaying) |
| | | { |
| | | m_Effect.Play(); |
| | | if (IsPlayerUiEffect != null) |
| | | { |
| | | IsPlayerUiEffect(); |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | private void OnDestroy() |
| | | { |
| | | WindowCenter.Instance.windowAfterOpenEvent -= OnAfterWindowOpen; |
| | | FunctionUnlockFlyObjectTargetCenter.UnRegister(m_UnLockType, m_Ids, this); |
| | | } |
| | | |
| | | private void LateUpdate() |
| | | { |
| | | if (waitforShow && Time.time > showOverTime) |
| | | { |
| | | waitforShow = false; |
| | | |
| | | if (m_ContainerLocked != null && m_ContainerLocked.gameObject.activeInHierarchy) |
| | | { |
| | | m_ContainerLocked.gameObject.SetActive(false); |
| | | } |
| | | |
| | | if (m_ContainerUnLocked != null && !m_ContainerUnLocked.gameObject.activeInHierarchy) |
| | | { |
| | | m_ContainerUnLocked.gameObject.SetActive(true); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | public class FunctionUnlockFlyObjectTargetCenter |
| | | { |
| | | static Dictionary<int, Dictionary<int, FunctionUnlockFlyObjectTarget>> targetDict = new Dictionary<int, Dictionary<int, FunctionUnlockFlyObjectTarget>>(); |
| | | |
| | | public static void Register(FunctionUnlockType _type, int[] _ids, FunctionUnlockFlyObjectTarget _target) |
| | | { |
| | | if (_target != null) |
| | | { |
| | | var typeToInt = (int)_type; |
| | | for (int i = 0; i < _ids.Length; i++) |
| | | { |
| | | Dictionary<int, FunctionUnlockFlyObjectTarget> targets; |
| | | if (!targetDict.ContainsKey(typeToInt)) |
| | | { |
| | | targetDict[typeToInt] = targets = new Dictionary<int, FunctionUnlockFlyObjectTarget>(); |
| | | } |
| | | else |
| | | { |
| | | targets = targetDict[typeToInt]; |
| | | } |
| | | |
| | | targets[_ids[i]] = _target; |
| | | } |
| | | } |
| | | } |
| | | |
| | | public static void UnRegister(FunctionUnlockType _type, int[] _ids, FunctionUnlockFlyObjectTarget _target) |
| | | { |
| | | try |
| | | { |
| | | for (int i = 0; i < _ids.Length; i++) |
| | | { |
| | | var id = _ids[i]; |
| | | if (_target == targetDict[(int)_type][id]) |
| | | { |
| | | targetDict[(int)_type][id] = null; |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | DesignDebug.Log(ex); |
| | | } |
| | | } |
| | | |
| | | public static FunctionUnlockFlyObjectTarget GetTarget(FunctionUnlockType _type, int _id) |
| | | { |
| | | FunctionUnlockFlyObjectTarget target = null; |
| | | try |
| | | { |
| | | target = targetDict[(int)_type][_id]; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | DesignDebug.Log(ex); |
| | | } |
| | | |
| | | return target; |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | //--------------------------------------------------------
|
| | | // [Author]: 第二世界
|
| | | // [ Date ]: Tuesday, October 10, 2017
|
| | | //--------------------------------------------------------
|
| | | using UnityEngine;
|
| | | using System.Collections;
|
| | | using System.Collections.Generic;
|
| | | using UnityEngine.UI;
|
| | | using System;
|
| | | using UnityEngine.EventSystems;
|
| | |
|
| | | namespace Snxxz.UI
|
| | | {
|
| | | public class FunctionUnlockFlyObjectTarget : MonoBehaviour, IPointerClickHandler
|
| | | {
|
| | | [SerializeField] FunctionUnlockType m_UnLockType = FunctionUnlockType.Treasure;
|
| | | [SerializeField] int[] m_Ids;
|
| | | [SerializeField] Transform m_ContainerLocked;
|
| | | [SerializeField] Transform m_ContainerUnLocked;
|
| | | [SerializeField] bool m_MainWinUnfold = false;
|
| | |
|
| | | public static event Action IsPlayerUiEffect;
|
| | | public bool mainWinUnFold { get { return m_MainWinUnfold; } }
|
| | | [SerializeField] int m_SkillGroup = 0;
|
| | | public int skillGroup { get { return m_SkillGroup; } }
|
| | | [SerializeField] UIEffect m_Effect;
|
| | |
|
| | | Window parentWindow;
|
| | | bool waitforShow = false;
|
| | | float showOverTime = 0f;
|
| | | public int[] IdList {
|
| | | get { return m_Ids; }
|
| | | set { m_Ids = value; }
|
| | | }
|
| | | public FunctionUnlockType Z_UnLockType {
|
| | | get { return m_UnLockType; }
|
| | | set { m_UnLockType = value; }
|
| | | }
|
| | | public void OnPointerClick(PointerEventData eventData)
|
| | | {
|
| | | for (int i = 0; i < m_Ids.Length; i++)
|
| | | {
|
| | | NewUnLockFunctionEffectRecorder.Remove(m_Ids[i]);
|
| | | }
|
| | |
|
| | | if (m_Effect != null)
|
| | | {
|
| | | m_Effect.Stop();
|
| | | }
|
| | | }
|
| | |
|
| | | public void Prepare()
|
| | | {
|
| | | if (m_ContainerLocked != null)
|
| | | {
|
| | | m_ContainerLocked.gameObject.SetActive(true);
|
| | | }
|
| | |
|
| | | if (m_ContainerUnLocked != null)
|
| | | {
|
| | | m_ContainerUnLocked.gameObject.SetActive(false);
|
| | | }
|
| | |
|
| | | waitforShow = true;
|
| | | showOverTime = Time.time + 10f;
|
| | | }
|
| | |
|
| | | public void ResponseFunctionUnLock()
|
| | | {
|
| | | waitforShow = false;
|
| | |
|
| | | if (m_ContainerLocked != null)
|
| | | {
|
| | | m_ContainerLocked.gameObject.SetActive(false);
|
| | | }
|
| | |
|
| | | if (m_ContainerUnLocked != null)
|
| | | {
|
| | | m_ContainerUnLocked.gameObject.SetActive(true);
|
| | | }
|
| | |
|
| | | if (m_Effect != null)
|
| | | {
|
| | | for (int i = 0; i < m_Ids.Length; i++)
|
| | | {
|
| | | NewUnLockFunctionEffectRecorder.Record(m_Ids[i]);
|
| | | }
|
| | |
|
| | | m_Effect.Play();
|
| | | }
|
| | |
|
| | | EffectMgr.Instance.PlayUIEffect(1033, 5500, this.transform, false);
|
| | | }
|
| | |
|
| | | private void Awake()
|
| | | {
|
| | | if (m_Ids == null)
|
| | | {
|
| | | return;
|
| | | }
|
| | |
|
| | | FunctionUnlockFlyObjectTargetCenter.Register(m_UnLockType, m_Ids, this);
|
| | | WindowCenter.Instance.windowAfterOpenEvent += OnAfterWindowOpen;
|
| | | }
|
| | |
|
| | | private void OnAfterWindowOpen(Window _window)
|
| | | {
|
| | | if (parentWindow == null || _window != parentWindow)
|
| | | {
|
| | | return;
|
| | | }
|
| | |
|
| | | for (int i = 0; i < m_Ids.Length; i++)
|
| | | {
|
| | | if (NewUnLockFunctionEffectRecorder.Contain(m_Ids[i]))
|
| | | {
|
| | | if (m_Effect != null)
|
| | | {
|
| | | m_Effect.Play();
|
| | | }
|
| | | if (IsPlayerUiEffect != null)
|
| | | {
|
| | | IsPlayerUiEffect();
|
| | | }
|
| | | break;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | private void OnEnable()
|
| | | {
|
| | | parentWindow = this.GetComponentInParent<Window>();
|
| | | if (m_Ids == null)
|
| | | {
|
| | | return;
|
| | | }
|
| | | for (int i = 0; i < m_Ids.Length; i++)
|
| | | {
|
| | | if (NewUnLockFunctionEffectRecorder.Contain(m_Ids[i]))
|
| | | {
|
| | | if (m_Effect != null && !m_Effect.IsPlaying)
|
| | | {
|
| | | m_Effect.Play();
|
| | | if (IsPlayerUiEffect != null)
|
| | | {
|
| | | IsPlayerUiEffect();
|
| | | }
|
| | | }
|
| | | break;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | private void OnDestroy()
|
| | | {
|
| | | WindowCenter.Instance.windowAfterOpenEvent -= OnAfterWindowOpen;
|
| | | FunctionUnlockFlyObjectTargetCenter.UnRegister(m_UnLockType, m_Ids, this);
|
| | | }
|
| | |
|
| | | private void LateUpdate()
|
| | | {
|
| | | if (waitforShow && Time.time > showOverTime)
|
| | | {
|
| | | waitforShow = false;
|
| | |
|
| | | if (m_ContainerLocked != null && m_ContainerLocked.gameObject.activeInHierarchy)
|
| | | {
|
| | | m_ContainerLocked.gameObject.SetActive(false);
|
| | | }
|
| | |
|
| | | if (m_ContainerUnLocked != null && !m_ContainerUnLocked.gameObject.activeInHierarchy)
|
| | | {
|
| | | m_ContainerUnLocked.gameObject.SetActive(true);
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | public class FunctionUnlockFlyObjectTargetCenter
|
| | | {
|
| | | static Dictionary<int, Dictionary<int, FunctionUnlockFlyObjectTarget>> targetDict = new Dictionary<int, Dictionary<int, FunctionUnlockFlyObjectTarget>>();
|
| | |
|
| | | public static void Register(FunctionUnlockType _type, int[] _ids, FunctionUnlockFlyObjectTarget _target)
|
| | | {
|
| | | if (_target != null)
|
| | | {
|
| | | var typeToInt = (int)_type;
|
| | | for (int i = 0; i < _ids.Length; i++)
|
| | | {
|
| | | Dictionary<int, FunctionUnlockFlyObjectTarget> targets;
|
| | | if (!targetDict.ContainsKey(typeToInt))
|
| | | {
|
| | | targetDict[typeToInt] = targets = new Dictionary<int, FunctionUnlockFlyObjectTarget>();
|
| | | }
|
| | | else
|
| | | {
|
| | | targets = targetDict[typeToInt];
|
| | | }
|
| | |
|
| | | targets[_ids[i]] = _target;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | public static void UnRegister(FunctionUnlockType _type, int[] _ids, FunctionUnlockFlyObjectTarget _target)
|
| | | {
|
| | | try
|
| | | {
|
| | | for (int i = 0; i < _ids.Length; i++)
|
| | | {
|
| | | var id = _ids[i];
|
| | | if (_target == targetDict[(int)_type][id])
|
| | | {
|
| | | targetDict[(int)_type][id] = null;
|
| | | }
|
| | | }
|
| | | }
|
| | | catch (Exception ex)
|
| | | {
|
| | | DebugEx.Log(ex);
|
| | | }
|
| | | }
|
| | |
|
| | | public static FunctionUnlockFlyObjectTarget GetTarget(FunctionUnlockType _type, int _id)
|
| | | {
|
| | | FunctionUnlockFlyObjectTarget target = null;
|
| | | try
|
| | | {
|
| | | target = targetDict[(int)_type][_id];
|
| | | }
|
| | | catch (Exception ex)
|
| | | {
|
| | | DebugEx.Log(ex);
|
| | | }
|
| | |
|
| | | return target;
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | |
|
| | |
|