From f5fc680bde88e6cce73a3f153a52358dd9d8aa76 Mon Sep 17 00:00:00 2001
From: client_Zxw <826696702@qq.com>
Date: 星期三, 19 九月 2018 10:08:59 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts

---
 System/OpenServerActivity/ImpactRankModel.cs        |   17 +++++
 System/OpenServerActivity/OpenServerActivityWin.cs  |   76 +++++++++++++++++-------
 Utility/EnumLabelAttribute.cs.meta                  |   12 ++++
 System/OpenServerActivity/OpenServerActivityCell.cs |    2 
 Utility/EnumLabelAttribute.cs                       |   47 +++++++++++++++
 5 files changed, 130 insertions(+), 24 deletions(-)

diff --git a/System/OpenServerActivity/ImpactRankModel.cs b/System/OpenServerActivity/ImpactRankModel.cs
index 98bc9ad..a3efdac 100644
--- a/System/OpenServerActivity/ImpactRankModel.cs
+++ b/System/OpenServerActivity/ImpactRankModel.cs
@@ -758,15 +758,30 @@
 
         public enum OSActivityType
         {
+            [Header("鍏ㄥ悕鍐叉")]
             ImpactRank,
+            [Header("娑堣垂杩斿埄")]
             ConsumeRebate,
+            [Header("寮�鏈嶇孩鍖�")]
             OSRedpack,
+            [Header("寮�鏈嶇壒鎯�")]
             OSSale,
+            [Header("闄愭椂鐗规儬")]
             FlashSale,
+            [Header("澶氬�嶇粡楠�")]
             MultipleExp,
+            [Header("瓒呭�肩ぜ鍖�")]
             OSGift,
+            [Header("闄愭椂绀煎寘")]
+            FlashGift,
+            [Header("澶氬�嶄慨琛岀偣")]
             MultipleRealmPoint,
-            BossReborn
+            [Header("Boss澶嶆椿")]
+            BossReborn,
+            [Header("浠欑帀鎶曡祫")]
+            FairyInvest,
+            [Header("VIP鎶曡祫")]
+            VipInvest
         }
     }
 
diff --git a/System/OpenServerActivity/OpenServerActivityCell.cs b/System/OpenServerActivity/OpenServerActivityCell.cs
index 70272e6..57b2631 100644
--- a/System/OpenServerActivity/OpenServerActivityCell.cs
+++ b/System/OpenServerActivity/OpenServerActivityCell.cs
@@ -32,6 +32,8 @@
         public Image downArrow { get { return m_DownArrow; } }
         [SerializeField] Image m_UpArrow;
         public Image upArrow { get { return m_UpArrow; } }
+        [SerializeField] Image m_TitleImg;
+        public Image titleImage { get { return m_TitleImg; } }
 
         private int m_Order = 0;
         public int order { get { return m_Order; } set { m_Order = value; } }
diff --git a/System/OpenServerActivity/OpenServerActivityWin.cs b/System/OpenServerActivity/OpenServerActivityWin.cs
index 939d0b6..ee7fa88 100644
--- a/System/OpenServerActivity/OpenServerActivityWin.cs
+++ b/System/OpenServerActivity/OpenServerActivityWin.cs
@@ -12,7 +12,7 @@
         [SerializeField] ScrollerController m_ActivityCtrl;
         [SerializeField] Button m_BtnClose;
         [SerializeField] Image m_TitleIcon;
-        [SerializeField, Header("鎺掑簭")] List<int> m_SortArray;
+        [SerializeField] List<CustomActivityDisplay> m_CustomActivitys;
 
         Dictionary<int, bool> m_ActivitySpreadDict = new Dictionary<int, bool>();
 
@@ -43,6 +43,7 @@
         {
             m_ActivityCtrl.OnRefreshCell += OnOpenServerActivityRefresh;
             m_ActivityCtrl.OnGetDynamicSize += OnGetDynamicSize;
+            m_ActivityCtrl.lockType = EnhanceLockType.KeepVertical;
             m_BtnClose.onClick.AddListener(CloseClick);
         }
 
@@ -51,9 +52,9 @@
             TimeUtility.OnServerOpenDayRefresh += OnStepServerDayEvent;
             OperationTimeHepler.Instance.operationTimeUpdateEvent += OperationTimeUpdateEvent;
             OpenServerActivityCenter.Instance.openServerActivityStateChange += OpenServerActivityStateChange;
-            for (int i = 0; i < m_SortArray.Count; i++)
+            for (int i = 0; i < m_CustomActivitys.Count; i++)
             {
-                m_ActivitySpreadDict[m_SortArray[i]] = false;
+                m_ActivitySpreadDict[(int)m_CustomActivitys[i].activityType] = false;
             }
             var impactDefaultType= impactRankModel.GetDefaultSelectType();
             if (impactRankModel.IsLock(impactDefaultType))
@@ -137,18 +138,18 @@
             openActivitys.Clear();
             priorityActivitys.Clear();
 
-            for (int i = 0; i < m_SortArray.Count; i++)
+            for (int i = 0; i < m_CustomActivitys.Count; i++)
             {
-                if (OpenServerActivityCenter.Instance.IsActivityOpen(m_SortArray[i]))
+                if (OpenServerActivityCenter.Instance.IsActivityOpen((int)m_CustomActivitys[i].activityType))
                 {
-                    openActivitys.Add(m_SortArray[i]);
-                    if (OpenServerActivityCenter.Instance.IsPriorityOpenOpen(m_SortArray[i]))
+                    openActivitys.Add((int)m_CustomActivitys[i].activityType);
+                    if (OpenServerActivityCenter.Instance.IsPriorityOpenOpen((int)m_CustomActivitys[i].activityType))
                     {
-                        priorityActivitys.Add(m_SortArray[i]);
+                        priorityActivitys.Add((int)m_CustomActivitys[i].activityType);
 
-                        switch (m_SortArray[i])
+                        switch (m_CustomActivitys[i].activityType)
                         {
-                            case 2:
+                            case OpenServerActivityCenter.OSActivityType.OSRedpack:
                                 envelopeModel.selectType = envelopeModel.m_RedAchieveRedpoint.state == RedPointState.Simple ? 1 : 2;
                                 break;
                         }
@@ -170,11 +171,11 @@
         void CheckAlreadyOpen()
         {
             alreadyOpenActivitys.Clear();
-            for (int i = 0; i < m_SortArray.Count; i++)
+            for (int i = 0; i < m_CustomActivitys.Count; i++)
             {
-                if (OpenServerActivityCenter.Instance.IsActivityOpen(m_SortArray[i]))
+                if (OpenServerActivityCenter.Instance.IsActivityOpen((int)m_CustomActivitys[i].activityType))
                 {
-                    alreadyOpenActivitys.Add(m_SortArray[i]);
+                    alreadyOpenActivitys.Add((int)m_CustomActivitys[i].activityType);
                 }
             }
         }
@@ -234,7 +235,22 @@
             _cell.ChangeState(_cell.order == functionOrder ? TitleBtnState.Click : TitleBtnState.Normal);
             _cell.downArrow.gameObject.SetActive(false);
             _cell.upArrow.gameObject.SetActive(false);
-            if(_cell.order == 0 || _cell.order == 2)
+
+            var customActivity = m_CustomActivitys.Find((x) =>
+            {
+                return (int)x.activityType == _cell.index;
+            });
+
+            bool customIcon = !string.IsNullOrEmpty(customActivity.titleIcon);
+            _cell.title.gameObject.SetActive(!customIcon);
+            _cell.titleImage.gameObject.SetActive(customIcon);
+            if (customIcon)
+            {
+                _cell.titleImage.SetSprite(customActivity.titleIcon);
+                _cell.titleImage.SetNativeSize();
+            }
+
+            if (_cell.order == 0 || _cell.order == 2)
             {
                 _cell.downArrow.gameObject.SetActive(m_ActivitySpreadDict[_cell.order]);
                 _cell.upArrow.gameObject.SetActive(!m_ActivitySpreadDict[_cell.order]);
@@ -279,9 +295,9 @@
         private void UpdateFunctionBtns()
         {
             m_ActivityCtrl.Refresh();
-            for (int i = 0; i < m_SortArray.Count; i++)
+            for (int i = 0; i < m_CustomActivitys.Count; i++)
             {
-                var sort = m_SortArray[i];
+                var sort = (int)m_CustomActivitys[i].activityType;
                 if (!alreadyOpenActivitys.Contains(sort))
                 {
                     continue;
@@ -504,10 +520,16 @@
             WindowCenter.Instance.CloseImmediately<VipInvestWin>();
         }
 
-        private int Compare(int x, int y)
+        private int Compare(int order_x, int order_y)
         {
-            var index_x = m_SortArray.IndexOf(x);
-            var index_y = m_SortArray.IndexOf(y);
+            var index_x = m_CustomActivitys.FindIndex((x) =>
+            {
+                return order_x == (int)x.activityType;
+            });
+            var index_y = m_CustomActivitys.FindIndex((x) =>
+            {
+                return order_y == (int)x.activityType;
+            });
             return index_x.CompareTo(index_y);
         }
 
@@ -522,12 +544,12 @@
         private void OpenServerActivityStateChange()
         {
             bool _update = false;
-            for (int i = 0; i < m_SortArray.Count; i++)
+            for (int i = 0; i < m_CustomActivitys.Count; i++)
             {
-                if (OpenServerActivityCenter.Instance.IsActivityOpen(m_SortArray[i])
-                    && !alreadyOpenActivitys.Contains(m_SortArray[i]))
+                if (OpenServerActivityCenter.Instance.IsActivityOpen((int)m_CustomActivitys[i].activityType)
+                    && !alreadyOpenActivitys.Contains((int)m_CustomActivitys[i].activityType))
                 {
-                    alreadyOpenActivitys.Add(m_SortArray[i]);
+                    alreadyOpenActivitys.Add((int)m_CustomActivitys[i].activityType);
                     _update = true;
                 }
             }
@@ -536,6 +558,14 @@
                 UpdateFunctionBtns();
             }
         }
+
+        [Serializable]
+        public struct CustomActivityDisplay
+        {
+            [Header("娲诲姩绫诲瀷"), EnumLabel(typeof(OpenServerActivityCenter.OSActivityType))]
+            public OpenServerActivityCenter.OSActivityType activityType;
+            public string titleIcon;
+        }
     }
 }
 
diff --git a/Utility/EnumLabelAttribute.cs b/Utility/EnumLabelAttribute.cs
new file mode 100644
index 0000000..f2adab0
--- /dev/null
+++ b/Utility/EnumLabelAttribute.cs
@@ -0,0 +1,47 @@
+锘縰sing System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+#if UNITY_EDITOR
+using UnityEditor;
+using System.Reflection;
+#endif
+
+[AttributeUsage(AttributeTargets.Field)]
+public class EnumLabelAttribute : PropertyAttribute
+{
+    public readonly Type enumType;
+    public EnumLabelAttribute(Type type)
+    {
+        this.enumType = type;
+    }
+}
+
+#if UNITY_EDITOR
+[CustomPropertyDrawer(typeof(EnumLabelAttribute))]
+public class EnumLabelPropertyDrawer : PropertyDrawer
+{
+    List<string> m_EnumLabels = new List<string>();
+    public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
+    {
+        var customAttribute = (EnumLabelAttribute)attribute;
+        if (m_EnumLabels.Count != property.enumNames.Length)
+        {
+            m_EnumLabels.Clear();
+            var enumtype = customAttribute.enumType;
+            foreach (var enumName in property.enumNames)
+            {
+                var enumfield = enumtype.GetField(enumName);
+                var customAttributes = enumfield.GetCustomAttributes(typeof(HeaderAttribute), false);
+                m_EnumLabels.Add(customAttributes.Length <= 0 ? enumName : ((HeaderAttribute)customAttributes[0]).header);
+            }
+        }
+        EditorGUI.BeginChangeCheck();
+        var value = EditorGUI.Popup(position, fieldInfo.Name, property.enumValueIndex, m_EnumLabels.ToArray());
+        if (EditorGUI.EndChangeCheck())
+        {
+            property.enumValueIndex = value;
+        }
+    }
+}
+#endif
diff --git a/Utility/EnumLabelAttribute.cs.meta b/Utility/EnumLabelAttribute.cs.meta
new file mode 100644
index 0000000..1054599
--- /dev/null
+++ b/Utility/EnumLabelAttribute.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: ce694ab87ddaeeb4eaf384d8cc6b284b
+timeCreated: 1537268726
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

--
Gitblit v1.8.0