From 863304fc65fec403917dc686d02bb9272eda757c Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期五, 15 二月 2019 15:15:47 +0800
Subject: [PATCH] 6233 【前端】【1.6】精彩活动界面改版

---
 System/OpenServerActivity/OpenServerActivityWin.cs |  188 ++++++++++++++++++++++++++++------------------
 1 files changed, 113 insertions(+), 75 deletions(-)

diff --git a/System/OpenServerActivity/OpenServerActivityWin.cs b/System/OpenServerActivity/OpenServerActivityWin.cs
index f682bb8..cff1333 100644
--- a/System/OpenServerActivity/OpenServerActivityWin.cs
+++ b/System/OpenServerActivity/OpenServerActivityWin.cs
@@ -4,7 +4,10 @@
 using System.Linq;
 using UnityEngine;
 using UnityEngine.UI;
-
+#if UNITY_EDITOR
+using UnityEditor;
+using UnityEditorInternal;
+#endif
 namespace Snxxz.UI
 {
     [XLua.Hotfix]
@@ -12,8 +15,7 @@
     {
         [SerializeField] ScrollerController m_ActivityCtrl;
         [SerializeField] Button m_BtnClose;
-        [SerializeField] Image m_TitleIcon;
-        [SerializeField] List<CustomActivityDisplay> m_CustomActivitys;
+        [SerializeField, HideInInspector] List<CustomActivityDisplay> m_CustomActivitys;
 
         Dictionary<int, bool> m_ActivitySpreadDict = new Dictionary<int, bool>();
 
@@ -251,8 +253,8 @@
             {
                 var activityCell = cell as OpenServerActivityCell;
                 var seconds = fairyLeagueModel.GetBeforeFirstLeagueTime();
-                activityCell.title.text = TimeUtility.SecondsToHMS(seconds);
-                activityCell.title.gameObject.SetActive(seconds > 0);
+                activityCell.timer.text = TimeUtility.SecondsToHMS(seconds);
+                activityCell.containerTimer.gameObject.SetActive(seconds > 0);
             }
             cell = m_ActivityCtrl.GetActiveCellView((int)OpenServerActivityCenter.OSActivityType.FairyGrabBossNotice);
             if (cell != null)
@@ -260,15 +262,14 @@
                 var activityCell = cell as OpenServerActivityCell;
                 var seconds = fairyGrabBossModel.GetNextSessionSeconds();
                 bool isOpen = fairyGrabBossModel.IsOpen;
-                activityCell.title.gameObject.SetActive(seconds > 0 || isOpen);
-                activityCell.title.color = UIHelper.GetUIColor(TextColType.Green, true);
+                activityCell.containerTimer.gameObject.SetActive(seconds > 0 || isOpen);
                 if (seconds > 0)
                 {
-                    activityCell.title.text = TimeUtility.SecondsToHMS(seconds);
+                    activityCell.timer.text = TimeUtility.SecondsToHMS(seconds);
                 }
                 else if (isOpen)
                 {
-                    activityCell.title.text = Language.Get("FairyGrabBossOpened");
+                    activityCell.timer.text = Language.Get("FairyGrabBossOpened");
                 }
             }
         }
@@ -307,7 +308,7 @@
                 if (!m_ActivitySpreadDict.ContainsKey(sort) || !m_ActivitySpreadDict[sort]
                     || (sort != 2 && sort != 0 && sort != 19))
                 {
-                    height = 80;
+                    height = 114;
                     return true;
                 }
             }
@@ -325,35 +326,15 @@
                 return (int)x.activityType == activityType;
             });
 
-            bool customIcon = !string.IsNullOrEmpty(customActivity.titleIcon)
-                || (customActivity.titleIcons != null && customActivity.titleIcons.Count > 0);
-            _cell.title.color = UIHelper.GetUIColor(TextColType.NavyBrown);
-
-            OperationBase operationBase;
             switch (activityType)
             {
-                case 5:
-                    if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.MultipleExp, out operationBase))
-                    {
-                        _cell.title.text = Language.Get("ExpActivity_Text5", (operationBase as OperationMultiExp).GetMultipleCHS());
-                    }
-                    _cell.title.gameObject.SetActive(!customIcon);
-                    break;
-                case 8:
-                    if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.MultipRealmPoint, out operationBase))
-                    {
-                        _cell.title.text = Language.Get("MultipleRealmPoint", Language.Get(StringUtility.Contact("Num_CHS_", (operationBase as OperationMultipleRealmPoint).multiplePractice)));
-                    }
-                    _cell.title.gameObject.SetActive(!customIcon);
-                    break;
                 case 12:
                     {
                         var seconds = fairyLeagueModel.GetBeforeFirstLeagueTime();
-                        _cell.title.gameObject.SetActive(seconds > 0);
+                        _cell.containerTimer.gameObject.SetActive(seconds > 0);
                         if (seconds > 0)
                         {
-                            _cell.title.text = TimeUtility.SecondsToHMS(seconds);
-                            _cell.title.color = UIHelper.GetUIColor(TextColType.Green, true);
+                            _cell.timer.text = TimeUtility.SecondsToHMS(seconds);
                         }
                     }
                     break;
@@ -361,61 +342,35 @@
                     {
                         var seconds = fairyGrabBossModel.GetNextSessionSeconds();
                         bool isOpen = fairyGrabBossModel.IsOpen;
-                        _cell.title.gameObject.SetActive(seconds > 0 || isOpen);
-                        _cell.title.color = UIHelper.GetUIColor(TextColType.Green, true);
+                        _cell.containerTimer.gameObject.SetActive(seconds > 0 || isOpen);
                         if (seconds > 0)
                         {
-                            _cell.title.text = TimeUtility.SecondsToHMS(seconds);
+                            _cell.timer.text = TimeUtility.SecondsToHMS(seconds);
                         }
                         else if (isOpen)
                         {
-                            _cell.title.text = Language.Get("FairyGrabBossOpened");
+                            _cell.timer.text = Language.Get("FairyGrabBossOpened");
                         }
                     }
                     break;
                 default:
-                    _cell.title.gameObject.SetActive(!customIcon);
-                    if (!customIcon)
-                    {
-                        _cell.title.text = Language.Get(StringUtility.Contact("OSActivityTitle_", _cell.index));
-                    }
+                    _cell.containerTimer.gameObject.SetActive(false);
                     break;
             }
 
             _cell.activityType = activityType;
 
-            _cell.titleImage.gameObject.SetActive(customIcon);
-            _cell.titleEffect.StopImediatly();
             switch (activityType)
             {
                 case 6:
                     _cell.redpoint.redpointId = 20906 * 100 + extraValue;
-                    _cell.ChangeState(extraValue == giftModel.selectIndex && functionOrder == activityType
-                        ? TitleBtnState.Click : TitleBtnState.Normal);
-                    if (customIcon)
-                    {
-                        _cell.titleImage.SetSprite(customActivity.titleIcons[extraValue]);
-                        _cell.titleImage.SetNativeSize();
-                    }
-                    if (customActivity.titleEffectIds != null && extraValue < customActivity.titleEffectIds.Count)
-                    {
-                        _cell.titleEffect.effect = customActivity.titleEffectIds[extraValue];
-                        _cell.titleEffect.Play();
-                    }
+                    _cell.SetSelect(extraValue == giftModel.selectIndex && functionOrder == activityType);
+                    _cell.icon.SetSprite(StringUtility.Contact(customActivity.bottomIcon, extraValue));
                     break;
                 default:
                     _cell.redpoint.redpointId = MainRedDot.REDPOINT_OPENSERVER * 100 + activityType;
-                    _cell.ChangeState(_cell.activityType == functionOrder ? TitleBtnState.Click : TitleBtnState.Normal);
-                    if (customIcon)
-                    {
-                        _cell.titleImage.SetSprite(customActivity.titleIcon);
-                        _cell.titleImage.SetNativeSize();
-                    }
-                    if (customActivity.titleEffectId != 0)
-                    {
-                        _cell.titleEffect.effect = customActivity.titleEffectId;
-                        _cell.titleEffect.Play();
-                    }
+                    _cell.SetSelect(_cell.activityType == functionOrder);
+                    _cell.icon.SetSprite(customActivity.bottomIcon);
                     break;
             }
 
@@ -450,17 +405,17 @@
                 case 0:
                     _cell.redpoint.redpointId = ImpactRankModel.Redpoint_Key_ImpactRank * 100 + _type;
                     _cell.titleTxt.text = Language.Get(StringUtility.Contact("ImpactRankType_", _type));
-                    _cell.ChangeState(_type == impactRankModel.presentSelectType ? TitleBtnState.Click : TitleBtnState.Normal);
+                    _cell.SetSelect(_type == impactRankModel.presentSelectType);
                     break;
                 case 2:
                     _cell.redpoint.redpointId = 20902 * 100 + _type;
                     _cell.titleTxt.text = Language.Get(StringUtility.Contact("OSRedEnvelopeType_", _type));
-                    _cell.ChangeState(_type == envelopeModel.selectType ? TitleBtnState.Click : TitleBtnState.Normal);
+                    _cell.SetSelect(_type == envelopeModel.selectType);
                     break;
                 case 19:
                     _cell.redpoint.redpointId = 20919 * 100 + _type;
                     _cell.titleTxt.text = Language.Get(StringUtility.Contact("FestivalRedpackType_", _type));
-                    _cell.ChangeState(_type == festivalRedpackModel.selectType ? TitleBtnState.Click : TitleBtnState.Normal);
+                    _cell.SetSelect(_type == festivalRedpackModel.selectType);
                     break;
             }
             _cell.functionBtn.onClick.RemoveAllListeners();
@@ -712,14 +667,97 @@
         [Serializable]
         public struct CustomActivityDisplay
         {
-            [Header("娲诲姩绫诲瀷"), EnumLabel(typeof(OpenServerActivityCenter.OSActivityType))]
             public OpenServerActivityCenter.OSActivityType activityType;
-            public string titleIcon;
-            public int titleEffectId;
-
-            public List<string> titleIcons;
-            public List<int> titleEffectIds;
+            public string bottomIcon;
         }
     }
+
+#if UNITY_EDITOR
+    [CustomEditor(typeof(OpenServerActivityWin))]
+    public class OpenServerActivityInspector : Editor
+    {
+        Dictionary<OpenServerActivityCenter.OSActivityType, string> activityDisplayNames
+            = new Dictionary<OpenServerActivityCenter.OSActivityType, string>();
+
+        ReorderableList reorderableList;
+        private void OnEnable()
+        {
+            var prop = serializedObject.FindProperty("m_CustomActivitys");
+            reorderableList = new ReorderableList(serializedObject, prop, true, true, true, true);
+
+            reorderableList.elementHeight = 50;
+
+            reorderableList.drawElementCallback =
+                (rect, index, isActive, isFocused) =>
+                {
+                    var element = prop.GetArrayElementAtIndex(index);
+                    rect.height -= 4;
+                    rect.y += 2;
+                    EditorGUI.PropertyField(rect, element);
+                };
+
+            reorderableList.drawElementBackgroundCallback = (rect, index, isActive, isFocused) =>
+            {
+                GUI.backgroundColor = Color.yellow;
+            };
+
+            reorderableList.drawHeaderCallback = (rect) =>
+                EditorGUI.LabelField(rect, prop.displayName);
+        }
+
+        public override void OnInspectorGUI()
+        {
+            base.OnInspectorGUI();
+            serializedObject.Update();
+            reorderableList.DoLayoutList();
+            serializedObject.ApplyModifiedProperties();
+        }
+    }
+
+    [CustomPropertyDrawer(typeof(OpenServerActivityWin.CustomActivityDisplay))]
+    public class CustomActivityDrawer : PropertyDrawer
+    {
+        static string[] enumDisplayNames = null;
+
+        public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
+        {
+            using (new EditorGUI.PropertyScope(position, label, property))
+            {
+                var rect = new Rect(position)
+                {
+                    height = 20,
+                };
+
+                var serializedProperty = property.FindPropertyRelative("activityType");
+                if (enumDisplayNames == null ||
+                enumDisplayNames.Length != serializedProperty.enumNames.Length)
+                {
+                    enumDisplayNames = new string[serializedProperty.enumNames.Length];
+                    var enumtype = typeof(OpenServerActivityCenter.OSActivityType);
+                    var index = 0;
+                    foreach (var enumName in serializedProperty.enumNames)
+                    {
+                        var enumfield = enumtype.GetField(enumName);
+                        var customAttributes = enumfield.GetCustomAttributes(typeof(HeaderAttribute), false);
+                        enumDisplayNames[index] = customAttributes.Length <= 0 ? enumName : ((HeaderAttribute)customAttributes[0]).header;
+                        index++;
+                    }
+                }
+
+                serializedProperty.enumValueIndex = EditorGUI.Popup(rect, serializedProperty.enumValueIndex, enumDisplayNames);
+
+                rect = new Rect(position)
+                {
+                    y = position.y + 20,
+                    height = 20,
+                };
+
+                serializedProperty = property.FindPropertyRelative("bottomIcon");
+                serializedProperty.stringValue = EditorGUI.TextField(rect, "IconKey", serializedProperty.stringValue);
+            }
+        }
+    }
+
+#endif
 }
 

--
Gitblit v1.8.0