少年修仙传客户端代码仓库
hch
2023-06-14 f23c81d21c9cc4c9f06e8bed3ebb7ddbe7e15ac3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Thursday, March 28, 2019
//--------------------------------------------------------
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using DG.Tweening;
 
namespace Snxxz.UI
{
 
    public class MainWinTopGrid : MonoBehaviour
    {
        [SerializeField] bool m_AlwayShow;
        // 配置逻辑参考 IsOpen 函数
        [SerializeField] int m_FunctionId;
        [SerializeField] int m_ActivityType = 0;    //活动模板
        [SerializeField] int m_OpenServerActivityType = 100;
        [SerializeField] bool m_IsAnyOpenServerActivity = false;
        [SerializeField] Operation m_OperationActivityType = Operation.max;
 
        [SerializeField] RectTransform m_Content;
        [SerializeField] CanvasGroup m_CanvasGroup;
        [SerializeField] IsPlayerUIeffect m_IsPlayerUIeffect;
 
        public RectTransform rectTransform { get { return this.transform as RectTransform; } }
        public bool alwayShow { get { return m_AlwayShow; } }
 
        float targetY = 0f;
        float targetAlpha = 0f;
 
        public void Switch(bool active, float offset, float delay)
        {
            if (m_AlwayShow)
            {
                return;
            }
 
            targetY = active ? 0 : (120f + offset);
            targetAlpha = active ? 1f : 0f;
 
            if (active)
            {
                m_Content.DOLocalMoveY(targetY, 0.3f).SetDelay(delay).SetEase(Ease.OutSine).OnComplete(PlayerUIEffect);
            }
            else
            {
                m_Content.DOLocalMoveY(targetY, 0.3f).SetDelay(delay).SetEase(Ease.InSine).OnStart(StopUIEffect);
            }
 
            m_CanvasGroup.DOFade(targetAlpha, 0.3f).SetDelay(delay).SetEase(active ? Ease.OutSine : Ease.InSine);
            m_CanvasGroup.blocksRaycasts = active;
        }
 
        public void SwitchImmediately(bool active, float offset)
        {
            if (m_AlwayShow)
            {
                return;
            }
 
            targetY = active ? 0 : (120f + offset);
            targetAlpha = active ? 1f : 0f;
            m_Content.anchoredPosition = m_Content.anchoredPosition.SetY(targetY);
            m_CanvasGroup.alpha = targetAlpha;
            m_CanvasGroup.blocksRaycasts = active;
 
            if (active)
            {
                PlayerUIEffect();
            }
            else
            {
                StopUIEffect();
            }
        }
 
        public bool IsOpen()
        {
            if (m_FunctionId > 0)
            {
                if (m_FunctionId == 130)
                {
                    return ILRuntimeUtility.Instance.ModelInvoke<bool>("NeedForWhiteModel", "IsOpen");
                }
                else if (m_FunctionId == 193)
                {
                    return ILRuntimeUtility.Instance.ModelInvoke<bool>("OnlineRechargeModel", "IsOpen") &&
                        !ILRuntimeUtility.Instance.ModelInvoke<bool>("OnlineRechargeModel", "IsBottomButtonOpen");
                }
                return FuncOpen.Instance.IsFuncOpen(m_FunctionId);
            }
 
            //默认100为不判定
            if (m_OpenServerActivityType != 100)
            {
                return OpenServerActivityCenter.Instance.IsActivityOpen(m_OpenServerActivityType, m_ActivityType);
            }
 
            if (m_IsAnyOpenServerActivity)
            {
                var functionOrder = 0;
                return OpenServerActivityCenter.Instance.IsAnyActivityOpen(out functionOrder, m_ActivityType);
            }
 
            if (m_OperationActivityType != Operation.max)
            {
                return OperationTimeHepler.Instance.SatisfyOpenCondition(m_OperationActivityType);
            }
 
            return false;
        }
 
        private void PlayerUIEffect()
        {
            if (m_IsPlayerUIeffect != null)
            {
                m_IsPlayerUIeffect.StartPlayUIEffect();
            }
        }
 
        private void StopUIEffect()
        {
            if (m_IsPlayerUIeffect != null)
            {
                m_IsPlayerUIeffect.ObtainPlayUIEffect();
            }
        }
 
    }
 
}