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