yyl
2025-05-28 d2c89959c7e56d8b0c52e8eecf90c2fbf6bc506a
Main/Component/UI/Common/FuncOpen.cs
@@ -4,7 +4,6 @@
using UnityEngine;
using LitJson;
    //  TODO YYL
    public class FuncOpen
    {
        private static FuncOpen _inst = null;
@@ -20,51 +19,51 @@
        protected FuncOpen()
        {
            // if (Application.isEditor)
            // {
            //     if (!Application.isPlaying) return;
            // }
            if (Application.isEditor)
            {
                if (!Application.isPlaying) return;
            }
            // var allKeys = FuncOpenLVConfig.GetKeys();
            // funcArray = new int[allKeys.Count];
            // int _index = 0;
            // foreach (var key in allKeys)
            // {
            //     int func = int.Parse(key);
            //     funcOpenState[func] = false;
            //     funcArray[_index] = func;
            //     _index++;
            // }
            var allKeys = new List<int>(FuncOpenLVConfig.dic.Keys);//GetKeys();
            funcArray = new int[allKeys.Count];
            int _index = 0;
            foreach (var key in allKeys)
            {
                int func = key;
                funcOpenState[func] = false;
                funcArray[_index] = func;
                _index++;
            }
            // DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += BeforePlayerDataInitializeEvent;
            // DTC0102_tagCDBPlayer.switchAccountEvent += SwitchAccountEvent;
            DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += BeforePlayerDataInitializeEvent;
            DTC0102_tagCDBPlayer.switchAccountEvent += SwitchAccountEvent;
            // funcClientLVLimitDict.Clear();
            // var jsonConfig = JsonMapper.ToObject(FuncConfigConfig.Get("FuncLevelLimitClient").Numerical1);
            // foreach (var key in jsonConfig.Keys)
            // {
            //     funcClientLVLimitDict[int.Parse(key)] = int.Parse(jsonConfig[key].ToString());
            // }
            funcClientLVLimitDict.Clear();
            var jsonConfig = JsonMapper.ToObject(FuncConfigConfig.Get("FuncLevelLimitClient").Numerical1);
            foreach (var key in jsonConfig.Keys)
            {
                funcClientLVLimitDict[int.Parse(key)] = int.Parse(jsonConfig[key].ToString());
            }
        }
        private void BeforePlayerDataInitializeEvent()
        {
            // for (int i = 0; i < funcArray.Length; i++)
            // {
            //     funcOpenState[funcArray[i]] = false;
            // }
            for (int i = 0; i < funcArray.Length; i++)
            {
                funcOpenState[funcArray[i]] = false;
            }
        }
        private void SwitchAccountEvent()
        {
            // for (int i = 0; i < funcArray.Length; i++)
            // {
            //     funcOpenState[funcArray[i]] = false;
            //     if (OnFuncStateChangeEvent != null)
            //     {
            //         OnFuncStateChangeEvent(funcArray[i]);
            //     }
            // }
            for (int i = 0; i < funcArray.Length; i++)
            {
                funcOpenState[funcArray[i]] = false;
                if (OnFuncStateChangeEvent != null)
                {
                    OnFuncStateChangeEvent(funcArray[i]);
                }
            }
        }
        // TaskModel m_TaskModel;
@@ -76,56 +75,56 @@
        //纯客户端的功能等级限制, key 以功能配置表的FuncLevelLimitClient为准
        //1. 精彩活动-全服红包显示等级
        // public Dictionary<int, int> funcClientLVLimitDict = new Dictionary<int, int>();
        public Dictionary<int, int> funcClientLVLimitDict = new Dictionary<int, int>();
        public bool IsClientLVLimit(int key)
        {
            // if (!funcClientLVLimitDict.ContainsKey(key))
            //     return true;
            if (!funcClientLVLimitDict.ContainsKey(key))
                return true;
            // if (PlayerDatas.Instance.baseData.LV >= funcClientLVLimitDict[key])
            //     return true;
            if (PlayerDatas.Instance.baseData.LV >= funcClientLVLimitDict[key])
                return true;
            return false;
        }
        public void UpdateFuncState(/*HA302_tagMCFuncOpenStateList vNetData*/)
        public void UpdateFuncState(HA302_tagMCFuncOpenStateList vNetData)
        {
            // for (int i = 0; i < vNetData.FuncCount; i++)
            // {
            for (int i = 0; i < vNetData.FuncCount; i++)
            {
                
            //     var funcState = vNetData.FuncStateList[i];
                var funcState = vNetData.FuncStateList[i];
            //     bool bPerFuncIsOpen = false;
            //     bool bAfterFuncIsOpen = false;
                bool bPerFuncIsOpen = false;
                bool bAfterFuncIsOpen = false;
            //     if (!funcOpenState.ContainsKey(funcState.FuncID))
            //     {
            //         funcOpenState.Add(funcState.FuncID, funcState.State == 1);
            //         bAfterFuncIsOpen = true;
            //     }
            //     else
            //     {
            //         bPerFuncIsOpen = funcOpenState[funcState.FuncID];
            //         funcOpenState[funcState.FuncID] = funcState.State == 1;
            //         bAfterFuncIsOpen = funcOpenState[funcState.FuncID];
            //     }
            //     if (OnFuncStateChangeEvent != null)
            //     {
            //         OnFuncStateChangeEvent(funcState.FuncID);
            //     }
            // }
                if (!funcOpenState.ContainsKey(funcState.FuncID))
                {
                    funcOpenState.Add(funcState.FuncID, funcState.State == 1);
                    bAfterFuncIsOpen = true;
                }
                else
                {
                    bPerFuncIsOpen = funcOpenState[funcState.FuncID];
                    funcOpenState[funcState.FuncID] = funcState.State == 1;
                    bAfterFuncIsOpen = funcOpenState[funcState.FuncID];
                }
                if (OnFuncStateChangeEvent != null)
                {
                    OnFuncStateChangeEvent(funcState.FuncID);
                }
            }
        }
        private bool IsFuncOpen(int key, out int errorCode)
        {
            
            errorCode = 0;
            // var config = FuncOpenLVConfig.Get(key);
            // if (config == null)
            // {
            //     return false;
            // }
            var config = FuncOpenLVConfig.Get(key);
            if (config == null)
            {
                return false;
            }
            // if (config.LimitMagicWeapon > 0)
            // {
            //     Treasure treasure = null;
@@ -152,64 +151,65 @@
            //     errorCode = 3;
            //     return false;
            // }
            // if (config.LimitLV > 0 && PlayerDatas.Instance.baseData.LV < config.LimitLV)
            // {
            //     errorCode = 1;
            //     return false;
            // }
            // return true;
            return false;
            if (config.LimitLV > 0 && PlayerDatas.Instance.baseData.LV < config.LimitLV)
            {
                errorCode = 1;
                return false;
            }
            return true;
            // return false;
        }
        public bool IsFuncOpen(int key, bool tip = false)
        {
            bool isOpen = false;
            // if (funcOpenState.ContainsKey(key))
            //     isOpen = funcOpenState[key];
            // if (!isOpen && tip)
            //     ProcessorFuncErrorTip(key);
            if (funcOpenState.ContainsKey(key))
                isOpen = funcOpenState[key];
            if (!isOpen && tip)
                ProcessorFuncErrorTip(key);
            return isOpen;
        }
        public void ProcessorFuncErrorTip(int key)
        {
            // var config = FuncOpenLVConfig.Get(key);
            // if (config != null)
            // {
            //     SoundPlayer.Instance.PlayUIAudio(SoundPlayer.defaultClickNegativeAudio);
            //     if (config.Tip.Equals("FuncLimit_Level"))
            //     {
            //         SysNotifyMgr.Instance.ShowTip(config.Tip);
            //         return;
            //     }
            //     var errorCode = 0;
            //     if (!IsFuncOpen(key, out errorCode))
            //     {
            //         switch (errorCode)
            //         {
            //             case 1:
            //                 SysNotifyMgr.Instance.ShowTip(config.Tip, Language.Get("OpenFunc4", config.LimitLV));
            //                 break;
            //             case 2:
            //                 var treasureConfig = TreasureConfig.Get(config.LimitMagicWeapon / 100);
            //                 SysNotifyMgr.Instance.ShowTip(config.Tip, Language.Get("OpenFunc1", treasureConfig != null ? treasureConfig.Name : string.Empty));
            //                 break;
            //             case 3:
            //                 SysNotifyMgr.Instance.ShowTip(config.Tip, UIHelper.GetRealmName(config.LimiRealmLV, true));
            //                 break;
            //             case 4:
            //                 if (config.LimitLV > 0)
            //                 {
            //                     SysNotifyMgr.Instance.ShowTip(config.Tip, Language.Get("OpenFunc2", config.LimitLV));
            //                 }
            //                 else
            //                 {
            //                     SysNotifyMgr.Instance.ShowTip(config.Tip, Language.Get("OpenFunc3"));
            //                 }
            //                 break;
            //         }
            //     }
            // }
            var config = FuncOpenLVConfig.Get(key);
            if (config != null)
            {
                SoundPlayer.Instance.PlayUIAudio(SoundPlayer.defaultClickNegativeAudio);
                if (config.Tip.Equals("FuncLimit_Level"))
                {
                    SysNotifyMgr.Instance.ShowTip(config.Tip);
                    return;
                }
                var errorCode = 0;
                if (!IsFuncOpen(key, out errorCode))
                {
                    switch (errorCode)
                    {
                        case 1:
                            SysNotifyMgr.Instance.ShowTip(config.Tip, Language.Get("OpenFunc4", config.LimitLV));
                            break;
                        //  TODO YYL
                        // case 2:
                        //     var treasureConfig = TreasureConfig.Get(config.LimitMagicWeapon / 100);
                        //     SysNotifyMgr.Instance.ShowTip(config.Tip, Language.Get("OpenFunc1", treasureConfig != null ? treasureConfig.Name : string.Empty));
                        //     break;
                        // case 3:
                        //     SysNotifyMgr.Instance.ShowTip(config.Tip, UIHelper.GetRealmName(config.LimiRealmLV, true));
                        //     break;
                        case 4:
                            if (config.LimitLV > 0)
                            {
                                SysNotifyMgr.Instance.ShowTip(config.Tip, Language.Get("OpenFunc2", config.LimitLV));
                            }
                            else
                            {
                                SysNotifyMgr.Instance.ShowTip(config.Tip, Language.Get("OpenFunc3"));
                            }
                            break;
                    }
                }
            }
        }
        public int GetLimitLv(int key)