lcy
18 小时以前 247c64258e0102a1028199f14866a1fd1c1a205f
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
 
using System;
using System.Collections.Generic;
 
public static class BattleConst
{
    public static List<Type> BattleWindows = new List<Type>()
    {
        typeof(BattleWin),
        typeof(StoryBossBattleWin),
        typeof(ArenaBattleWin),
    };
 
    public const int BattleStartEffectID = 1001; // Example effect ID for battle start
 
    public const int skillMotionFps = 30;
 
    public const int BattlePointItemID = 3;//战锤ID
 
    public const int BattleTotalDamageType = 100001; // 总伤害类型ID
 
    public const int BattleTotalRecoverType = 100002; // 总治疗类型ID
 
 
    //  1000~10000之间的战斗层级
    //  需要考虑根据UI 特效 战斗角色三方的层级关系
    //  确立基本的层级范围 后往上累加
    //  1.不能在BattleWin之下 否则就看不见了
    //  2.处理EffectPenetrationBlocker的自动调整排序
    //  3.要联动EffectConfig的前后的问题
    //  BattleWin.Canvas.sortingOrder是最低值
    //  还需要确立黑色的Mask的层级
 
 
    //  UI界面|非激活英雄|挡板|激活英雄
 
    // 非激活英雄后特效|非激活英雄|非激活英雄前
 
    // 激活英雄后特效|激活英雄|激活英雄前特效
 
    public const int BattleBlackTransparentMaskOffset = 100;
 
 
    public static int BattleWinSortingOrder
    {
        get
        {
            List<int> activeWinOrders = new List<int>();
 
            for (int i = 0; i < BattleWindows.Count; i++)
            {
                var win = UIManager.Instance.GetUI(BattleWindows[i].Name);
                if (win != null && win.IsActive())
                {
                    activeWinOrders.Add(win.GetSortingOrder());
                }
            }
 
            if (activeWinOrders.Count == 0)
            {
                return 0;
            }
 
            int maxOrder = activeWinOrders[0];
            for (int i = 1; i < activeWinOrders.Count; i++)
            {
                if (activeWinOrders[i] > maxOrder)
                {
                    maxOrder = activeWinOrders[i];
                }
            }
 
            return maxOrder;
        }
    }
 
    // 非激活英雄的层级
    public static int UnactiveHeroSortingOrder
    {
        get
        {
            return BattleWinSortingOrder + BattleBlackTransparentMaskOffset - 50;
        }
    }
 
    // 非激活英雄的后特效
    public static int UnactiveHeroBackSortingOrder
    {
        get
        {
            return UnactiveHeroSortingOrder - 1;
        }
    }
 
    // 非激活英雄的前特效
    public static int UnactiveHeroFrontSortingOrder
    {
        get
        {
            return UnactiveHeroSortingOrder + 1;
        }
    }
 
    // 挡板的层级
    public static int BlockerSortingOrder
    {
        get
        {
            return UnactiveHeroFrontSortingOrder + 1;
        }
    }
 
    // 激活英雄的层级
    public static int ActiveHeroSortingOrder
    {
        get
        {
            return BattleWinSortingOrder + BattleBlackTransparentMaskOffset + 50;
        }
    }
 
    //  释放技能钟的英雄层级
    public static int ActiveHeroActionSortingOrder
    {
        get
        {
            return ActiveHeroSortingOrder + 1;
        }
    }
 
    // 激活英雄的后特效
    public static int ActiveHeroBackSortingOrder
    {
        get
        {
            return ActiveHeroSortingOrder - 1;
        }
    }
 
    // 激活英雄的前特效
    public static int ActiveHeroFrontSortingOrder
    {
        get
        {
            return ActiveHeroSortingOrder + 1;
        }
    }
}