From 7677bf7ab5f15f55b7e1366f1601e541a9a31f4d Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期三, 16 七月 2025 16:30:09 +0800
Subject: [PATCH] 0312 界面层级

---
 Main/Component/UI/Common/FunctionButtonGroup.cs |  459 ++++++++++++++++++++++++++++----------------------------
 1 files changed, 228 insertions(+), 231 deletions(-)

diff --git a/Main/Component/UI/Common/FunctionButtonGroup.cs b/Main/Component/UI/Common/FunctionButtonGroup.cs
index 58e4ace..66b475f 100644
--- a/Main/Component/UI/Common/FunctionButtonGroup.cs
+++ b/Main/Component/UI/Common/FunctionButtonGroup.cs
@@ -1,269 +1,266 @@
-锘�// //--------------------------------------------------------
-// //    [Author]:           绗簩涓栫晫
-// //    [  Date ]:           Tuesday, October 31, 2017
-// //--------------------------------------------------------
-// using UnityEngine;
-// using System.Collections;
-// using System.Collections.Generic;
-// using UnityEngine.UI;
-// using UnityEngine.Events;
+锘�//--------------------------------------------------------
+//    [Author]:           鐜╀釜娓告垙
+//    [  Date ]:           Tuesday, October 31, 2017
+//--------------------------------------------------------
+using UnityEngine;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine.UI;
+using UnityEngine.Events;
+using System;
 
-// namespace vnxbqy.UI
-// {
+    public class FunctionButtonGroup : MonoBehaviour
+    {
+        [SerializeField] ScrollRect m_ScrollRect;
+        [SerializeField] RectTransform m_Container;
 
-//     public class FunctionButtonGroup : MonoBehaviour
-//     {
-//         [SerializeField] ScrollRect m_ScrollRect;
-//         [SerializeField] RectTransform m_Container;
+        public int unLockedCount {
+            get {
+                var count = 0;
+                foreach (var button in functionButtons.Values)
+                {
+                    if (button.state != TitleBtnState.Locked)
+                    {
+                        count++;
+                    }
+                }
 
-//         public int unLockedCount {
-//             get {
-//                 var count = 0;
-//                 foreach (var button in functionButtons.Values)
-//                 {
-//                     if (button.state != TitleBtnState.Locked)
-//                     {
-//                         count++;
-//                     }
-//                 }
+                return count;
+            }
+        }
 
-//                 return count;
-//             }
-//         }
+        int currentOrder = 0;
+        List<int> orders = new List<int>();
+        Dictionary<int, FunctionButton> functionButtons = new Dictionary<int, FunctionButton>();
 
-//         int currentOrder = 0;
-//         List<int> orders = new List<int>();
-//         Dictionary<int, FunctionButton> functionButtons = new Dictionary<int, FunctionButton>();
+        public void Register(FunctionButton button)
+        {
+            functionButtons[button.order] = button;
+            if (!orders.Contains(button.order))
+            {
+                orders.Add(button.order);
+                orders.Sort(OrderCompare);
+            }
 
-//         public void Register(FunctionButton button)
-//         {
-//             functionButtons[button.order] = button;
-//             if (!orders.Contains(button.order))
-//             {
-//                 orders.Add(button.order);
-//                 orders.Sort(OrderCompare);
-//             }
+            if (m_ScrollRect != null)
+            {
+                m_ScrollRect.horizontal = functionButtons.Count > 5;
+            }
+        }
 
-//             if (m_ScrollRect != null)
-//             {
-//                 m_ScrollRect.horizontal = functionButtons.Count > 5;
-//             }
-//         }
+        public void ChangeHorizontal(bool move)
+        {
+            if (m_ScrollRect != null)
+            {
+                m_ScrollRect.horizontal = move;
+            }
+        }
 
-//         public void ChangeHorizontal(bool move)
-//         {
-//             if (m_ScrollRect != null)
-//             {
-//                 m_ScrollRect.horizontal = move;
-//             }
-//         }
+        public void ChangeHorizontalPos(float index)
+        {
+            if (m_ScrollRect != null)
+            {
+                m_ScrollRect.horizontalNormalizedPosition = index;
+            }
+        }
+        public void UnRegister(FunctionButton button)
+        {
+            if (functionButtons.ContainsKey(button.order))
+            {
+                functionButtons.Remove(button.order);
+            }
 
-//         public void ChangeHorizontalPos(float index)
-//         {
-//             if (m_ScrollRect != null)
-//             {
-//                 m_ScrollRect.horizontalNormalizedPosition = index;
-//             }
-//         }
-//         public void UnRegister(FunctionButton button)
-//         {
-//             if (functionButtons.ContainsKey(button.order))
-//             {
-//                 functionButtons.Remove(button.order);
-//             }
+            if (orders.Contains(button.order))
+            {
+                orders.Remove(button.order);
+                orders.Sort(OrderCompare);
+            }
 
-//             if (orders.Contains(button.order))
-//             {
-//                 orders.Remove(button.order);
-//                 orders.Sort(OrderCompare);
-//             }
+            if (m_ScrollRect != null)
+            {
+                m_ScrollRect.horizontal = functionButtons.Count > 5;
+            }
+        }
 
-//             if (m_ScrollRect != null)
-//             {
-//                 m_ScrollRect.horizontal = functionButtons.Count > 5;
-//             }
-//         }
+        public void NotifyToggleOn(FunctionButton button)
+        {
 
-//         public void NotifyToggleOn(FunctionButton button)
-//         {
+            if (button.state == TitleBtnState.Click)
+            {
+                currentOrder = button.order;
+                for (int i = 0; i < orders.Count; i++)
+                {
+                    if (!functionButtons.ContainsKey(orders[i]))
+                    {
+                        Debug.LogFormat("<color=#ff0000ff>{0} {1}</color>", orders[i], button.name);
+                    }
+                    var functionButton = functionButtons[orders[i]];
+                    if (functionButton != button && functionButton.state != TitleBtnState.Locked)
+                    {
+                        functionButton.state = TitleBtnState.Normal;
+                    }
+                }
+            }
+        }
 
-//             if (button.state == TitleBtnState.Click)
-//             {
-//                 currentOrder = button.order;
-//                 for (int i = 0; i < orders.Count; i++)
-//                 {
-//                     if (!functionButtons.ContainsKey(orders[i]))
-//                     {
-//                         Debug.LogFormat("<color=#ff0000ff>{0} {1}</color>", orders[i], button.name);
-//                     }
-//                     var functionButton = functionButtons[orders[i]];
-//                     if (functionButton != button && functionButton.state != TitleBtnState.Locked)
-//                     {
-//                         functionButton.state = TitleBtnState.Normal;
-//                     }
-//                 }
-//             }
-//         }
+        public void TriggerByOrder(int targetOrder)
+        {
+            for (int i = 0; i < orders.Count; i++)
+            {
+                var order = orders[i];
+                if (order == targetOrder)
+                {
+                    functionButtons[order].Invoke(true);
+                    break;
+                }
+            }
+        }
 
-//         public void TriggerByOrder(int targetOrder)
-//         {
-//             for (int i = 0; i < orders.Count; i++)
-//             {
-//                 var order = orders[i];
-//                 if (order == targetOrder)
-//                 {
-//                     functionButtons[order].Invoke(true);
-//                     break;
-//                 }
-//             }
-//         }
+        public void TriggerLast()
+        {
+            var index = orders.IndexOf(currentOrder);
+            if (index < 0)
+            {
+                return;
+            }
 
-//         public void TriggerLast()
-//         {
-//             var index = orders.IndexOf(currentOrder);
-//             if (index < 0)
-//             {
-//                 return;
-//             }
+            var loopTimes = 0;
+            while (loopTimes < 2)
+            {
+                index--;
+                if (index < 0)
+                {
+                    index = orders.Count - 1;
+                    loopTimes++;
+                }
 
-//             var loopTimes = 0;
-//             while (loopTimes < 2)
-//             {
-//                 index--;
-//                 if (index < 0)
-//                 {
-//                     index = orders.Count - 1;
-//                     loopTimes++;
-//                 }
+                var next = orders[index];
+                if (functionButtons[next].state != TitleBtnState.Locked)
+                {
+                    functionButtons[next].Invoke(false);
+                    break;
+                }
+            }
 
-//                 var next = orders[index];
-//                 if (functionButtons[next].state != TitleBtnState.Locked)
-//                 {
-//                     functionButtons[next].Invoke(false);
-//                     break;
-//                 }
-//             }
+        }
 
-//         }
+        public void TriggerNext()
+        {
+            var index = orders.IndexOf(currentOrder);
+            if (index < 0)
+            {
+                return;
+            }
 
-//         public void TriggerNext()
-//         {
-//             var index = orders.IndexOf(currentOrder);
-//             if (index < 0)
-//             {
-//                 return;
-//             }
+            var loopTimes = 0;
+            while (loopTimes < 2)
+            {
+                index++;
+                if (index > orders.Count - 1)
+                {
+                    index = 0;
+                    loopTimes++;
+                }
 
-//             var loopTimes = 0;
-//             while (loopTimes < 2)
-//             {
-//                 index++;
-//                 if (index > orders.Count - 1)
-//                 {
-//                     index = 0;
-//                     loopTimes++;
-//                 }
+                var next = orders[index];
+                if (functionButtons[next].state != TitleBtnState.Locked)
+                {
+                    functionButtons[next].Invoke(false);
+                    break;
+                }
+            }
+        }
 
-//                 var next = orders[index];
-//                 if (functionButtons[next].state != TitleBtnState.Locked)
-//                 {
-//                     functionButtons[next].Invoke(false);
-//                     break;
-//                 }
-//             }
-//         }
+        public bool IsFirst()
+        {
+            return orders.Count > 0 && currentOrder == orders[0];
+        }
 
-//         public bool IsFirst()
-//         {
-//             return orders.Count > 0 && currentOrder == orders[0];
-//         }
+        public bool IsLast()
+        {
+            return orders.Count > 0 && currentOrder == orders[orders.Count - 1];
+        }
 
-//         public bool IsLast()
-//         {
-//             return orders.Count > 0 && currentOrder == orders[orders.Count - 1];
-//         }
+        public void GotoOrder(int order)
+        {
+            if (m_ScrollRect != null)
+            {
+                var index = orders.IndexOf(order);
+                if (m_ScrollRect.horizontal)
+                {
+                    m_ScrollRect.horizontalNormalizedPosition = (float)index / orders.Count;
+                }
+                else if (m_ScrollRect.vertical)
+                {
+                    m_ScrollRect.verticalNormalizedPosition = (float)index / orders.Count;
+                }
+            }
+        }
 
-//         public void GotoOrder(int order)
-//         {
-//             if (m_ScrollRect != null)
-//             {
-//                 var index = orders.IndexOf(order);
-//                 if (m_ScrollRect.horizontal)
-//                 {
-//                     m_ScrollRect.horizontalNormalizedPosition = (float)index / orders.Count;
-//                 }
-//                 else if (m_ScrollRect.vertical)
-//                 {
-//                     m_ScrollRect.verticalNormalizedPosition = (float)index / orders.Count;
-//                 }
-//             }
-//         }
+        private int OrderCompare(int a, int b)
+        {
+            return a < b ? -1 : 1;
+        }
 
-//         private int OrderCompare(int a, int b)
-//         {
-//             return a < b ? -1 : 1;
-//         }
+        public FunctionButton AddFunction(string pattern, int order, int functionId, string title, int redpointId)
+        {
+            if (m_Container == null)
+            {
+                return null;
+            }
 
-//         public FunctionButton AddFunction(string pattern, int order, int functionId, string title, int redpointId)
-//         {
-//             if (m_Container == null)
-//             {
-//                 return null;
-//             }
+            var instance = UIUtility.CreateWidget(pattern, string.Concat("Function_", order));
+            instance.transform.SetParentEx(this.m_Container, Vector3.zero, Quaternion.identity, Vector3.one);
 
-//             var instance = UIUtility.CreateWidget(pattern, string.Concat("Function_", order));
-//             instance.transform.SetParentEx(this.m_Container, Vector3.zero, Quaternion.identity, Vector3.one);
+            var functionButton = instance.GetComponent<FunctionButton>();
+            functionButton.functionId = functionId;
+            functionButton.order = order;
+            functionButton.title.text = title;
 
-//             var functionButton = instance.GetComponent<FunctionButton>();
-//             functionButton.functionId = functionId;
-//             functionButton.order = order;
-//             functionButton.title.text = title;
+            functionButton.group = this;
+            functionButton.redpoint.redpointId = redpointId;
+            functionButtons[order] = functionButton;
 
-//             functionButton.group = this;
-//             functionButton.redpoint.redpointId = redpointId;
-//             functionButtons[order] = functionButton;
+            functionButton.SetActive(functionButton.functionId != -1);
+            return functionButton;
+        }
 
-//             functionButton.SetActive(functionButton.functionId != -1);
-//             return functionButton;
-//         }
+        public void SetFunctionListener(int order, Action callBack)
+        {
+            if (functionButtons.ContainsKey(order))
+            {
+                functionButtons[order].SetListener(() => callBack?.Invoke());
+            }
+        }
 
-//         public void SetFunctionListener(int order, UnityAction callBack)
-//         {
-//             if (functionButtons.ContainsKey(order))
-//             {
-//                 functionButtons[order].SetListener(callBack);
-//             }
-//         }
+        public void SetFunctionButtonActive(int order, bool isShow)
+        {
+            if (functionButtons.ContainsKey(order))
+            {
+                functionButtons[order].SetActive(isShow);
+            }
+        }
 
-//         public void SetFunctionButtonActive(int order, bool isShow)
-//         {
-//             if (functionButtons.ContainsKey(order))
-//             {
-//                 functionButtons[order].SetActive(isShow);
-//             }
-//         }
+        public RedPointState GetFunctionButtonRedPointState(int order)
+        {
+            if (functionButtons.ContainsKey(order))
+            {
+                return RedpointCenter.Instance.GetRedpointState(functionButtons[order].redpoint.redpointId);
+            }
 
-//         public RedPointState GetFunctionButtonRedPointState(int order)
-//         {
-//             if (functionButtons.ContainsKey(order))
-//             {
-//                 return RedpointCenter.Instance.GetRedpointState(functionButtons[order].redpoint.redpointId);
-//             }
+            return RedPointState.None;
+        }
 
-//             return RedPointState.None;
-//         }
+        public FunctionButton GetFunctionBtn(int order)
+        {
+            if (functionButtons.ContainsKey(order))
+            {
+                return functionButtons[order];
+            }
+            return null;
+        }
+    }
 
-//         public FunctionButton GetFunctionBtn(int order)
-//         {
-//             if (functionButtons.ContainsKey(order))
-//             {
-//                 return functionButtons[order];
-//             }
-//             return null;
-//         }
-//     }
-
-// }
 
 
 

--
Gitblit v1.8.0