少年修仙传客户端代码仓库
hch
2025-03-07 fbe3a861f641233473a0d1995d147a42f0b43c90
0312 重置五行第一次免费改1000级,功能预告优化
8个文件已修改
6个文件已删除
1043 ■■■■ 已修改文件
Core/GameEngine/Model/Config/FunctionForecastConfig.cs 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/FeatureNotice2Win.cs 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/FeatureNoticeModel.cs 285 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/FeatureNoticeTip.cs 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/FeatureNoticeTip.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/FeaturesType1.cs 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/FeaturesType1.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/FeaturesType2.cs 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/FeaturesType2.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/FeaturesType3.cs 221 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/FunctionForecastTip.cs 74 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/FunctionForecastWin.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/MainInterfaceWin.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/TipPanel.cs 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/FunctionForecastConfig.cs
@@ -1,6 +1,6 @@
//--------------------------------------------------------
//    [Author]:           Fish
//    [  Date ]:           2024年5月17日
//    [  Date ]:           Thursday, March 6, 2025
//--------------------------------------------------------
using System.Collections.Generic;
@@ -15,19 +15,7 @@
    public readonly int FuncId;
    public readonly string Award;
    public readonly string FuncName;
    public readonly int OpenLevel;
    public readonly string Describe;
    public readonly string FuncIconKey;
    public readonly string DetailDescribe;
    public readonly string OpenDescribe;
    public readonly string Icon;
    public readonly string Content;
    public readonly int DisplayLevel;
    public readonly int Display;
    public readonly int RedPointLV;
    public readonly int RedPointPercentage;
    public readonly int FrameLevel;
    public readonly int OpenNumber;
    public FunctionForecastConfig()
@@ -44,33 +32,9 @@
            Award = tables[1];
            FuncName = tables[2];
            DetailDescribe = tables[2];
            int.TryParse(tables[3],out OpenLevel);
            Describe = tables[4];
            FuncIconKey = tables[5];
            DetailDescribe = tables[6];
            OpenDescribe = tables[7];
            Icon = tables[8];
            Content = tables[9];
            int.TryParse(tables[10],out DisplayLevel);
            int.TryParse(tables[11],out Display);
            int.TryParse(tables[12],out RedPointLV);
            int.TryParse(tables[13],out RedPointPercentage);
            int.TryParse(tables[14],out FrameLevel);
            int.TryParse(tables[15],out OpenNumber);
            int.TryParse(tables[3],out OpenNumber);
        }
        catch (Exception ex)
        {
System/MainInterfacePanel/FeatureNotice2Win.cs
@@ -28,7 +28,7 @@
        {
            if (this is SecondWindowInterface)
            {
                var frame = this.GetComponentInChildren<SecondFrameLoader>();
                var frame = this.GetComponentInChildren<SecondFrameLoader2>();
                frame.Create();
                close = frame.GetComponentInChildren<Button>();
            }
@@ -52,7 +52,7 @@
        {
            if (!IsJump)//是否经历跳转打开
            {
                m_ScaleTween.Play(false, IsOpen);
                m_ScaleTween.Play();
            }
            else
            {
@@ -104,55 +104,27 @@
        private void OnRefreshGridCell(ScrollerDataType type, CellView cell)
        {
            int funcId = cell.index;
            Transform Tran = cell.transform;
            GameObject Tran1 = Tran.Find("FeaturesTypeOne").gameObject;
            GameObject Tran2 = Tran.Find("FeaturesTypeTwo").gameObject;
            var configs = FunctionForecastConfig.Get(funcId);
            if (configs.OpenNumber == featureNoticeModel.FunctionForecastIndex)
            {
                Tran1.SetActive(false);
                Tran2.SetActive(true);
                FeaturesType3 featuresType3 = Tran2.GetComponent<FeaturesType3>();
                featuresType3.GetTheFeatureID(funcId);
                return;
            }
            else
            {
                Tran1.SetActive(true);
                Tran2.SetActive(false);
                FeaturesType3 featuresType3 = Tran1.GetComponent<FeaturesType3>();
                featuresType3.GetTheFeatureID(funcId);
                return;
            }
            FeaturesType3 featuresType3 = cell.GetComponent<FeaturesType3>();
            featuresType3.GetTheFeatureID(funcId);
        }
        private void IsOpen()
        {
        }
        private void IsClose()
        {
            Close();
            WindowCenter.Instance.Open<MainInterfaceWin>();
        }
        List<FunctionForecastConfig> con_fig = new List<FunctionForecastConfig>();
        private void UnopenedFirst()            ///找到第一个不是打开状态的细胞的的openNumber
        {
            if (con_fig.Count <= 0)
            {
                con_fig = FunctionForecastConfig.GetValues();
            }
           // var configs = FunctionForecastConfig.GetValues();
            foreach (var config in con_fig)
            int index = 0;
            foreach (var config in featureNoticeModel.FunctionList)
            {
                int openTag = config.FuncId;
                if (!FuncOpen.Instance.IsFuncOpen(openTag))
                {
                    featureNoticeModel.FunctionForecastIndex = config.OpenNumber;
                    featureNoticeModel.FunctionForecastIndex = index;
                    return;
                }
                index++;
            }
        }
@@ -168,10 +140,7 @@
                    return Index;
                }
            }
            Index = featureNoticeModel.FunctionList.FindIndex((x) =>
            {
                return x.OpenNumber == featureNoticeModel.FunctionForecastIndex;
            });
            Index = featureNoticeModel.FunctionForecastIndex;
            if (Index == -1)
            {
                Index = 0;
System/MainInterfacePanel/FeatureNoticeModel.cs
@@ -21,67 +21,32 @@
    public event Action UpdateAwarfItem;
    private const int Redpoint_key1 = 38;
    public Redpoint redPointStre1 = new Redpoint(Redpoint_key1);
    private int OpenFuncId = 0;
    private bool RedPointChange = false;
    private bool IsRedPoint = false;
    public int FunctionForecastIndex = 0;
    private bool  Isbool=true;
    public int ShowLV = 20;//入口显示等级
    public override void Init()
    {
        AddList();
        AddAwardItem();
        AddRedPoint();
    }
    public void OnBeforePlayerDataInitialize()
    {
        Isbool = true;
        FunctionForecastIndex = 0;
        DicOpenFuncState.Clear();
        StageLoad.Instance.onStageLoadFinish -= OnStageLoadFinish;
        PlayerDatas.Instance.playerDataRefreshEvent -= Updatefighting;
    }
    public void OnPlayerLoginOk()
    {
        Isbool = true;
        StageLoad.Instance.onStageLoadFinish += OnStageLoadFinish;
        PlayerDatas.Instance.playerDataRefreshEvent += Updatefighting;
        GlobalTimeEvent.Instance.secondEvent -= secondEvent;
        GlobalTimeEvent.Instance.secondEvent += secondEvent;
        RedPoint_State();
    }
    private void secondEvent()
    {
        if (Isbool)
        {
            RedPoint_State();
            Isbool = false;
        }
    }
    private void Updatefighting(PlayerDataType _tCDBPlayerRefresh)
    {
        if (_tCDBPlayerRefresh == PlayerDataType.LV &&PlayerDatas.Instance.baseData.LV>=100)
        {
            Isbool = true;
        }
    }
    public override void UnInit()
    {
    }
    private void OnStageLoadFinish()
    {
        if (!(StageLoad.Instance.currentStage is DungeonStage))
        {
            OpenFuncId = 0;
            RedPointChange = false;
            IsRedPoint = false;
        }
    }
    private void AddList()//添加列表信息
    {
        if (FunctionList.Count <= 0)
@@ -90,72 +55,54 @@
            foreach (var key in configs)
            {
                var functionForecastConfig = FunctionForecastConfig.Get(key);
                if (functionForecastConfig != null && functionForecastConfig.Display == 1)
                {
                    FunctionList.Add(functionForecastConfig);
                }
                FunctionList.Add(functionForecastConfig);
                AddAwardItem(functionForecastConfig);
                AddRedPoint(functionForecastConfig);
            }
        }
    }
    private void AddAwardItem()
    private void AddAwardItem(FunctionForecastConfig functionForecastConfig)
    {
        if (DicAwardItem.Count <= 0)
        if (!DicAwardItem.ContainsKey(functionForecastConfig.FuncId))
        {
            var configs = FunctionForecastConfig.GetKeys();
            foreach (var key in configs)
            ImpactRankModel.RankAwardItem _award = new ImpactRankModel.RankAwardItem();
            if (functionForecastConfig.Award == string.Empty)
            {
                var functionForecastConfig = FunctionForecastConfig.Get(key);
                if (!DicAwardItem.ContainsKey(functionForecastConfig.FuncId) && functionForecastConfig.Display == 1)
                return;
            }
            var _jsonData = LitJson.JsonMapper.ToObject(functionForecastConfig.Award);
            foreach (string _key in _jsonData.Keys)
            {
                var _job = int.Parse(_key);
                var _itemArray = LitJson.JsonMapper.ToObject<int[][]>(_jsonData[_key].ToJson());
                for (int j = 0; j < _itemArray.Length; j++)
                {
                    ImpactRankModel.RankAwardItem _award = new ImpactRankModel.RankAwardItem();
                    if (functionForecastConfig.Award == string.Empty)
                    {
                        continue;
                    }
                    var _jsonData = LitJson.JsonMapper.ToObject(functionForecastConfig.Award);
                    foreach (string _key in _jsonData.Keys)
                    {
                        var _job = int.Parse(_key);
                        var _itemArray = LitJson.JsonMapper.ToObject<int[][]>(_jsonData[_key].ToJson());
                        for (int j = 0; j < _itemArray.Length; j++)
                        {
                            _award.Add(_job, new Item(_itemArray[j][0], _itemArray[j][1]));
                        }
                    }
                    DicAwardItem.Add(functionForecastConfig.FuncId, _award);
                    _award.Add(_job, new Item(_itemArray[j][0], _itemArray[j][1]));
                }
            }
            DicAwardItem.Add(functionForecastConfig.FuncId, _award);
        }
    }
    private void AddRedPoint()
    private void AddRedPoint(FunctionForecastConfig functionForecastConfig)
    {
        if (DicRedPoint.Count <= 0)
        if (!DicRedPoint.ContainsKey(functionForecastConfig.FuncId))
        {
            var configs = FunctionForecastConfig.GetKeys();
            foreach (var key in configs)
            {
                var functionForecastConfig = FunctionForecastConfig.Get(key);
                if (!DicRedPoint.ContainsKey(functionForecastConfig.FuncId) && functionForecastConfig.Display == 1)
                {
                    int RedPointkey = Redpoint_key1 * 10000 + functionForecastConfig.FuncId;
                    Redpoint redPointMountStare = new Redpoint(Redpoint_key1, RedPointkey);
                    DicRedPoint.Add(functionForecastConfig.FuncId, redPointMountStare);
                }
            }
            int RedPointkey = Redpoint_key1 * 10000 + functionForecastConfig.FuncId;
            Redpoint redPointMountStare = new Redpoint(Redpoint_key1, RedPointkey);
            DicRedPoint.Add(functionForecastConfig.FuncId, redPointMountStare);
        }
    }
    private void RedPoint_State()
    {
        var configs = FunctionForecastConfig.GetKeys();
        foreach (var key in DicRedPoint.Keys)
        {
            DicRedPoint[key].state=RedPointState.None;
        }
        if (PlayerDatas.Instance.baseData.LV <= 19)//功能预告红点110级前不显示
        if (PlayerDatas.Instance.baseData.LV <= ShowLV)//功能预告红点x级前不显示
        {
            return;
        }
@@ -168,93 +115,93 @@
            }
        }
    }
    TreasureModel treasureModel { get { return ModelCenter.Instance.GetModel<TreasureModel>(); } }
    public IEnumerator WhetherToPlayTheBox()
    {
        yield return new WaitForSeconds(0.7f);
        var inDungeon = IsDungeon();
        var IsOpenMaininterface = WindowCenter.Instance.IsOpen<MainInterfaceWin>();
        var IsOpenOffLineOnHook = WindowCenter.Instance.IsOpen<OffLineOnHookWin>();
        var treasureModel = ModelCenter.Instance.GetModel<TreasureModel>();
        var IsLoading = StageLoad.Instance.isLoading;
        if (NewBieCenter.Instance.inGuiding || treasureModel.newGotShowing || inDungeon || !IsOpenMaininterface
            || treasureModel.treasureStageUpShow || WindowCenter.Instance.ExistAnyFullScreenOrMaskWin() ||
            IsOpenOffLineOnHook || IsLoading)
        {
            yield break;
        }
        for (int i = 0; i < FunctionList.Count; i++)
        {
            if (!FuncOpen.Instance.IsFuncOpen(FunctionList[i].FuncId))
            {
                var functionForecastConfig = FunctionForecastConfig.Get(FunctionList[i].FuncId);
                if (functionForecastConfig.FrameLevel <= 0)
                {
                    yield break;
                }
                string strKey = "FeatureNotice" + functionForecastConfig.FrameLevel + PlayerDatas.Instance.baseData.PlayerID;
                int type = LocalSave.GetInt(strKey);
                bool IsOpenMain = WindowCenter.Instance.IsOpen<MainInterfaceWin>();
                if (PlayerDatas.Instance.baseData.LV >= functionForecastConfig.FrameLevel && type == 0)
                {
                    LocalSave.SetInt(strKey, functionForecastConfig.FrameLevel);
                   var IsOpenFeatureNotice = WindowCenter.Instance.IsOpen<FeatureNotice2Win>();
                    if (!IsOpenFeatureNotice)
                    {
                        WindowCenter.Instance.Close<MainInterfaceWin>();
                        WindowCenter.Instance.Open<FeatureNotice2Win>();
                    }
                }
            }
        }
    }
    public bool IsShowFeatureN()
    {
        bool IsBool = false;
        for (int i = 0; i < FunctionList.Count; i++)
        {
            if (!FuncOpen.Instance.IsFuncOpen(FunctionList[i].FuncId))
            {
                var functionForecastConfig = FunctionForecastConfig.Get(FunctionList[i].FuncId);
                if (functionForecastConfig.FrameLevel <= 0)
                {
                    return false;
                }
                string strKey = "FeatureNotice" + functionForecastConfig.FrameLevel + PlayerDatas.Instance.baseData.PlayerID;
                int type = LocalSave.GetInt(strKey);
                bool IsOpenMain = WindowCenter.Instance.IsOpen<MainInterfaceWin>();
                if (PlayerDatas.Instance.baseData.LV >= functionForecastConfig.FrameLevel && type == 0)
                {
                    IsBool = true;
                }
            }
        }
        return IsBool;
    }
    private bool IsDungeon()
    {
        var mapId = PlayerDatas.Instance.baseData.MapID;
        var mapConfig = MapConfig.Get(mapId);
        return mapConfig != null && mapConfig.MapFBType != 0;
    }
    List<FunctionForecastConfig> functionForecastValue = new List<FunctionForecastConfig>();
    public int GetOpenLv(int Inedx)
    {
        int lv = 0;
        if (functionForecastValue.Count <= 0)
        {
            functionForecastValue= FunctionForecastConfig.GetValues();
        }
        foreach (var value in functionForecastValue)
        {
            if (value.OpenNumber == Inedx)
            {
                lv = value.DisplayLevel;
                return lv;
            }
        }
        return lv;
    }
    //TreasureModel treasureModel { get { return ModelCenter.Instance.GetModel<TreasureModel>(); } }
    //public IEnumerator WhetherToPlayTheBox()
    //{
    //    yield return new WaitForSeconds(0.7f);
    //    var inDungeon = IsDungeon();
    //    var IsOpenMaininterface = WindowCenter.Instance.IsOpen<MainInterfaceWin>();
    //    var IsOpenOffLineOnHook = WindowCenter.Instance.IsOpen<OffLineOnHookWin>();
    //    var treasureModel = ModelCenter.Instance.GetModel<TreasureModel>();
    //    var IsLoading = StageLoad.Instance.isLoading;
    //    if (NewBieCenter.Instance.inGuiding || treasureModel.newGotShowing || inDungeon || !IsOpenMaininterface
    //        || treasureModel.treasureStageUpShow || WindowCenter.Instance.ExistAnyFullScreenOrMaskWin() ||
    //        IsOpenOffLineOnHook || IsLoading)
    //    {
    //        yield break;
    //    }
    //    for (int i = 0; i < FunctionList.Count; i++)
    //    {
    //        if (!FuncOpen.Instance.IsFuncOpen(FunctionList[i].FuncId))
    //        {
    //            var functionForecastConfig = FunctionForecastConfig.Get(FunctionList[i].FuncId);
    //            if (functionForecastConfig.FrameLevel <= 0)
    //            {
    //                yield break;
    //            }
    //            string strKey = "FeatureNotice" + functionForecastConfig.FrameLevel + PlayerDatas.Instance.baseData.PlayerID;
    //            int type = LocalSave.GetInt(strKey);
    //            bool IsOpenMain = WindowCenter.Instance.IsOpen<MainInterfaceWin>();
    //            if (PlayerDatas.Instance.baseData.LV >= functionForecastConfig.FrameLevel && type == 0)
    //            {
    //                LocalSave.SetInt(strKey, functionForecastConfig.FrameLevel);
    //               var IsOpenFeatureNotice = WindowCenter.Instance.IsOpen<FeatureNotice2Win>();
    //                if (!IsOpenFeatureNotice)
    //                {
    //                    WindowCenter.Instance.Close<MainInterfaceWin>();
    //                    WindowCenter.Instance.Open<FeatureNotice2Win>();
    //                }
    //            }
    //        }
    //    }
    //}
    //public bool IsShowFeatureN()
    //{
    //    bool IsBool = false;
    //    for (int i = 0; i < FunctionList.Count; i++)
    //    {
    //        if (!FuncOpen.Instance.IsFuncOpen(FunctionList[i].FuncId))
    //        {
    //            var functionForecastConfig = FunctionForecastConfig.Get(FunctionList[i].FuncId);
    //            if (functionForecastConfig.FrameLevel <= 0)
    //            {
    //                return false;
    //            }
    //            string strKey = "FeatureNotice" + functionForecastConfig.FrameLevel + PlayerDatas.Instance.baseData.PlayerID;
    //            int type = LocalSave.GetInt(strKey);
    //            bool IsOpenMain = WindowCenter.Instance.IsOpen<MainInterfaceWin>();
    //            if (PlayerDatas.Instance.baseData.LV >= functionForecastConfig.FrameLevel && type == 0)
    //            {
    //                IsBool = true;
    //            }
    //        }
    //    }
    //    return IsBool;
    //}
    //private bool IsDungeon()
    //{
    //    var mapId = PlayerDatas.Instance.baseData.MapID;
    //    var mapConfig = MapConfig.Get(mapId);
    //    return mapConfig != null && mapConfig.MapFBType != 0;
    //}
    //List<FunctionForecastConfig> functionForecastValue = new List<FunctionForecastConfig>();
    //public int GetOpenLv(int Inedx)
    //{
    //    int lv = 0;
    //    if (functionForecastValue.Count <= 0)
    //    {
    //        functionForecastValue= FunctionForecastConfig.GetValues();
    //    }
    //    foreach (var value in functionForecastValue)
    //    {
    //        if (value.OpenNumber == Inedx)
    //        {
    //            lv = value.DisplayLevel;
    //            return lv;
    //        }
    //    }
    //    return lv;
    //}
    public class OpenFuncState
    {
        public int State;
System/MainInterfacePanel/FeatureNoticeTip.cs
File was deleted
System/MainInterfacePanel/FeatureNoticeTip.cs.meta
File was deleted
System/MainInterfacePanel/FeaturesType1.cs
File was deleted
System/MainInterfacePanel/FeaturesType1.cs.meta
File was deleted
System/MainInterfacePanel/FeaturesType2.cs
File was deleted
System/MainInterfacePanel/FeaturesType2.cs.meta
File was deleted
System/MainInterfacePanel/FeaturesType3.cs
@@ -10,37 +10,20 @@
namespace vnxbqy.UI
{
    //功能预告第三部
    public class FeaturesType3 : MonoBehaviour
    public class FeaturesType3 : CellView
    {
        [SerializeField] ImageEx m_Image_Selected;//底板
        [SerializeField] ImageEx m_Img_Circle;//Icon框
        [SerializeField] ImageEx m_FeaturesTypeIcon;//Icon
        [SerializeField] Text m_FunctionName;//功能名
        [SerializeField] Text m_FunctionalLevel;//功能等级
        [SerializeField] Text m_FunctionalLevel;//功能解锁条件
        [SerializeField] Text m_Content;//内容
        [SerializeField] GameObject m_Award;
        [SerializeField] ImageEx m_ItemBG1;
        [SerializeField] ImageEx m_Icon1;
        [SerializeField] Button m_IconBtn1;
        [SerializeField] Text m_Number1;
        [SerializeField] ImageEx m_Lock1;
        [SerializeField] UIEffect m_UIEffect1;
        [SerializeField] ItemCell m_Award;
        [SerializeField] GameObject m_HasReceived1;
        [SerializeField] ImageEx m_ItemBG2;
        [SerializeField] ImageEx m_Icon2;
        [SerializeField] Button m_IconBtn2;
        [SerializeField] Text m_Number2;
        [SerializeField] ImageEx m_Lock2;
        [SerializeField] UIEffect m_UIEffect2;
        [SerializeField] GameObject m_HasReceived2;
        [SerializeField] RedpointBehaviour m_RedPoint;
        FeatureNoticeModel featureNoticeModel { get { return ModelCenter.Instance.GetModel<FeatureNoticeModel>(); } }
        TaskModel taskModel { get { return ModelCenter.Instance.GetModel<TaskModel>(); } }
        public void GetTheFeatureID(int funcId)
        {
            var functionForecastConfig = FunctionForecastConfig.Get(funcId);
@@ -48,63 +31,47 @@
            {
                return;
            }
            m_FunctionalLevel.text = Language.Get("LoadIconLV", functionForecastConfig.DisplayLevel);
            bool Type = false;
            int NeedLv = 0;
            int playerLv = PlayerDatas.Instance.baseData.LV;
            if (functionForecastConfig.OpenNumber - 2 >= featureNoticeModel.FunctionForecastIndex)
            {
                Type = true;
                NeedLv = featureNoticeModel.GetOpenLv(functionForecastConfig.OpenNumber - 2);
            }
            if (!FuncOpen.Instance.IsFuncOpen(funcId) && Type && NeedLv > playerLv)
            {
                m_FunctionName.SetActive(false);
              //  m_FunctionName.text = "?";
                m_FeaturesTypeIcon.SetSprite("UnKnowIcon");
                m_Award.SetActive(false);
                m_Content.SetActive(true);
                m_Content.text = string.Format(Language.Get("YGFuncLevel"), NeedLv, PlayerDatas.Instance.baseData.LV, NeedLv);
            }
            else
            {
                m_FunctionName.SetActive(true);
                m_FunctionName.text = functionForecastConfig.FuncName;
                m_FeaturesTypeIcon.SetSprite(functionForecastConfig.FuncIconKey);
                if (featureNoticeModel.DicAwardItem.ContainsKey(funcId))
                {
                    m_Award.SetActive(true);
                    m_Content.SetActive(false);
            var funcOpenConfig = FuncOpenLVConfig.Get(funcId);
                    SetRankAwardItem(funcId);
                    //-------------------
            m_FunctionName.text = funcOpenConfig.Remark;
            if (FuncOpen.Instance.IsFuncOpen(funcId))
            {
                m_FunctionalLevel.text = "";
            }
            else if (funcOpenConfig.LimitMissionID != 0)
            {
                int tagValue = TaskListConfig.GetMissionIndex(funcOpenConfig.LimitMissionID);
                int curValue = TaskListConfig.GetMissionIndex(taskModel.GetLatestMainTaskId());
                if (funcId == 3)
                {
                    //翅膀支线开启 FuncNoOpen2 funcid=3 支线等级客户端没有记录,后续优化是否配置在功能配置表
                    m_FunctionalLevel.text = Language.Get("FuncNoOpen2", 200);
                }
                else
                {
                    m_Award.SetActive(false);
                    m_Content.SetActive(true);
                    m_Content.text = functionForecastConfig.Content;
                    m_FunctionalLevel.text = Language.Get("FuncNoOpen1", tagValue - curValue);
                }
            }
            if (PlayerDatas.Instance.baseData.LV >= functionForecastConfig.DisplayLevel)
            {
                m_FunctionalLevel.color = new Color32(141, 220, 17, 255);
            }
            else
            {
                m_FunctionalLevel.color = new Color32(255, 244, 205, 255);
                //后续完善境界解锁等
                m_FunctionalLevel.text = Language.Get("FuncLevelOpen", funcOpenConfig.LimitLV);
            }
            m_FeaturesTypeIcon.SetSprite(funcOpenConfig.Icon);
            m_Content.text = functionForecastConfig.DetailDescribe;
            SetRankAwardItem(funcId);
            if (FuncOpen.Instance.IsFuncOpen(funcId))
            {
                m_Image_Selected.gray = false;
                m_Img_Circle.gray = false;
                m_FeaturesTypeIcon.gray = false;
            }
            else
            {
                m_Image_Selected.gray = true;
                m_Img_Circle.gray = true;
                m_FeaturesTypeIcon.gray = true;
            }
@@ -118,73 +85,18 @@
        {
            ImpactRankModel.RankAwardItem rankAward = featureNoticeModel.DicAwardItem[funcID];
            List<Item> List = rankAward.GetAwardItem(PlayerDatas.Instance.baseData.Job);
            if (List.Count <= 1)
            {
                m_ItemBG1.SetActive(true);
                m_ItemBG2.SetActive(false);
                SetItem1(List, funcID);
            }
            else
            {
                m_ItemBG1.SetActive(true);
                m_ItemBG2.SetActive(true);
                SetItem1(List, funcID);
                SetItem2(List, funcID);
            }
            SetItem1(List, funcID);
        }
        private void SetItem1(List<Item> List,int funcID)
        {
            var itemConfig = ItemConfig.Get(List[0].id);
            UIHelper.SetItemBackGround(m_ItemBG1, itemConfig.ItemColor, itemConfig.QualityEchoType);
            m_Icon1.SetSprite(itemConfig.IconKey);
            m_IconBtn1.SetListener(() =>
            {
                if (featureNoticeModel.DicOpenFuncState.ContainsKey(funcID) && featureNoticeModel.DicOpenFuncState[funcID].State == 1 &&
                featureNoticeModel.DicOpenFuncState[funcID].AwardState == 0)
                {
                    featureNoticeModel.SendGetAward(funcID);
                   // DebugEx.LogError("可以领取");
                }
                else
                {
                    ItemTipUtility.Show(List[0].id);
                   // DebugEx.LogError("弹框");
                }
            int itemID = List[0].id;
            int count = List[0].count;
            m_Award.Init(new ItemCellModel(itemID, false, (ulong)count));
            m_Award.button.AddListener(() => {
                featureNoticeModel.SendGetAward(funcID);
            });
            if (List[0].count > 1)
            {
                m_Number1.SetActive(true);
                m_Number1.text = List[0].count.ToString();
            }
            else
            {
                m_Number1.SetActive(false);
            }
            if (FuncOpen.Instance.IsFuncOpen(funcID))
            {
                m_ItemBG1.gray = false;
                m_Icon1.gray = false;
                m_Lock1.gray = false;
            }
            else
            {
                m_ItemBG1.gray = true;
                m_Icon1.gray = true;
                m_Lock1.gray = true;
            }
            if (featureNoticeModel.DicOpenFuncState.ContainsKey(funcID) && featureNoticeModel.DicOpenFuncState[funcID].State == 1 &&
               featureNoticeModel.DicOpenFuncState[funcID].AwardState == 0)
            {
                m_UIEffect1.Play();
            }
            else
            {
                m_UIEffect1.Stop();
            }
            if (featureNoticeModel.DicOpenFuncState.ContainsKey(funcID) && featureNoticeModel.DicOpenFuncState[funcID].State == 1 && featureNoticeModel.DicOpenFuncState[funcID].AwardState == 1)
            {
                m_HasReceived1.SetActive(true);
@@ -192,65 +104,6 @@
            else
            {
                m_HasReceived1.SetActive(false);
            }
        }
        private void SetItem2(List<Item> List, int funcID)
        {
            var itemConfig = ItemConfig.Get(List[1].id);
            UIHelper.SetItemBackGround(m_ItemBG2, itemConfig.ItemColor, itemConfig.QualityEchoType);
            m_Icon2.SetSprite(itemConfig.IconKey);
            m_IconBtn2.SetListener(() =>
            {
                if (featureNoticeModel.DicOpenFuncState.ContainsKey(funcID) && featureNoticeModel.DicOpenFuncState[funcID].State == 1 &&
               featureNoticeModel.DicOpenFuncState[funcID].AwardState == 0)
                {
                    featureNoticeModel.SendGetAward(funcID);
                  // DebugEx.LogError("可以领取");
                }
                else
                {
                    ItemTipUtility.Show(List[1].id);
                    //DebugEx.LogError("弹框");
                }
            });
            if (List[1].count > 1)
            {
                m_Number2.SetActive(true);
                m_Number2.text = List[1].count.ToString();
            }
            else
            {
                m_Number2.SetActive(false);
            }
            if (FuncOpen.Instance.IsFuncOpen(funcID))
            {
                m_ItemBG2.gray = false;
                m_Icon2.gray = false;
                m_Lock2.gray = false;
            }
            else
            {
                m_ItemBG2.gray = true;
                m_Icon2.gray = true;
                m_Lock2.gray = true;
            }
            if (featureNoticeModel.DicOpenFuncState.ContainsKey(funcID) && featureNoticeModel.DicOpenFuncState[funcID].State == 1 &&
              featureNoticeModel.DicOpenFuncState[funcID].AwardState == 0)
            {
                m_UIEffect2.Play();
            }
            else
            {
                m_UIEffect2.Stop();
            }
            if (featureNoticeModel.DicOpenFuncState.ContainsKey(funcID) && featureNoticeModel.DicOpenFuncState[funcID].State == 1 && featureNoticeModel.DicOpenFuncState[funcID].AwardState == 1)
            {
                m_HasReceived2.SetActive(true);
            }
            else
            {
                m_HasReceived2.SetActive(false);
            }
        }
    }
System/MainInterfacePanel/FunctionForecastTip.cs
@@ -15,20 +15,17 @@
    public class FunctionForecastTip : MonoBehaviour
    {
        public static int OpenTag = 0;
        [SerializeField] Transform _FunctionForecastPanel;//切换面板 
        [SerializeField] Image _FunctionIcon;//图标Icon
        [SerializeField] Button _FunctionIconBtn;//面板开关按钮
        [SerializeField] Text _NameText;//标题名
        [SerializeField] Text _Information;//信息内容
        [SerializeField] Text m_Information_reward;//有奖励可领取
        //[SerializeField] Text _Information;//信息内容
        //[SerializeField] Text m_Information_reward;//有奖励可领取
        public static Action<int> FunctionOpenTagEvent;
        FeatureNoticeModel featureNoticeModel { get { return ModelCenter.Instance.GetModel<FeatureNoticeModel>(); } }
        RealmModel realmModel { get { return ModelCenter.Instance.GetModel<RealmModel>(); } }
        public void Init()//初始化
        {
            PlayerDatas.Instance.playerDataRefreshEvent += OnPlayersUpLV;
            FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
            DataAssignment();
        }
@@ -38,13 +35,13 @@
        public void Unit()
        {
            FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
            PlayerDatas.Instance.playerDataRefreshEvent -= OnPlayersUpLV;
        }
        private void Start()
        {
            _FunctionIconBtn.AddListener(FunctionIconBtn);
            _NameText.text = Language.Get("SecondWindowTitle_27");
        }
        private void OnFuncStateChangeEvent(int obj)
@@ -56,77 +53,42 @@
            }
        }
        private void OnPlayersUpLV(PlayerDataType _type)
        {
            if (_type == PlayerDataType.LV)
            {
                DataAssignment();
            }
        }
        List<FunctionForecastConfig> configs = new List<FunctionForecastConfig>();
        void DataAssignment()
        {
            if (FuncOpen.Instance.IsFuncOpen(OpenTag))
            if (PlayerDatas.Instance.baseData.LV <= featureNoticeModel.ShowLV)
            {
                _FunctionForecastPanel.SetActive(false);
                return;
            }
            if (configs.Count <= 0)
            foreach (var config in featureNoticeModel.FunctionList)
            {
                configs= FunctionForecastConfig.GetValues();
            }
          //  var configs = FunctionForecastConfig.GetValues();
            foreach (var config in configs)
            {
                if (!FuncOpen.Instance.IsFuncOpen(config.FuncId)
                    && PlayerDatas.Instance.baseData.LV >= config.OpenLevel && config.Display == 1)
                if (!FuncOpen.Instance.IsFuncOpen(config.FuncId))
                {
                    OpenTag = config.FuncId;
                    if (FunctionOpenTagEvent != null)
                    {
                        FunctionOpenTagEvent(OpenTag);
                    }
                    OpenPanel(OpenTag);
                    return;
                    OpenPanel(config.FuncId);
                    break;
                }
            }
            bool IsOpen = false;
            foreach (var _key in featureNoticeModel.DicOpenFuncState.Keys)
            foreach (var config in featureNoticeModel.FunctionList)
            {
                if (featureNoticeModel.DicRedPoint.ContainsKey(_key) && featureNoticeModel.DicOpenFuncState[_key].State == 1
                && featureNoticeModel.DicOpenFuncState[_key].AwardState == 0 && featureNoticeModel.DicAwardItem.ContainsKey(_key))
                if (!featureNoticeModel.DicOpenFuncState.ContainsKey(config.FuncId) || featureNoticeModel.DicOpenFuncState[config.FuncId].State == 0 ||
                     featureNoticeModel.DicOpenFuncState[config.FuncId].AwardState == 0)
                {
                    IsOpen = true;
                    break;
                }
            }
            if (IsOpen)//预告完毕还有奖励能领取
            {
                _FunctionForecastPanel.SetActive(true);
                _FunctionIcon.SetSprite("PersonBossIcon");
                m_Information_reward.SetActive(false);
                _NameText.SetActive(true);
                //_NameText.text = Language.Get("Z1043");
                _NameText.text = Language.Get("SecondWindowTitle_27");
                _Information.SetActive(false);
            }
            else
            {
                _FunctionForecastPanel.SetActive(false);
            }
            _FunctionForecastPanel.SetActive(IsOpen);
           
            return;
        }
        void OpenPanel(int ID)
        {
            _FunctionForecastPanel.SetActive(true);
            m_Information_reward.SetActive(false);
            _NameText.SetActive(true);
            _Information.SetActive(false);
            _FunctionIcon.SetSprite(FunctionForecastConfig.Get(ID).FuncIconKey);
            //_NameText.text = FunctionForecastConfig.Get(ID).Describe;
            _NameText.text = Language.Get("SecondWindowTitle_27");
            _Information.text= FunctionForecastConfig.Get(ID).OpenDescribe;
            _FunctionIcon.SetSprite(FuncOpenLVConfig.Get(ID).Icon);
            //_NameText.text = Language.Get("SecondWindowTitle_27");
        }
System/MainInterfacePanel/FunctionForecastWin.cs
@@ -21,7 +21,6 @@
        [SerializeField] Text ContentText;
        [SerializeField] Text ContentText1;
        #region Built-in
        private int OpenID = 0;
        protected override void BindController()
        {
        }
@@ -37,7 +36,6 @@
            {
                WindowCenter.Instance.Close<CombatModeWin>();
            }
            OpenID = FunctionForecastTip.OpenTag;
            FunctionForecastTip.FunctionOpenTagEvent += OnFunctionOpenTag;
        }
@@ -48,17 +46,17 @@
        void Assignment()
        {
            var functionForcecastConfig = FunctionForecastConfig.Get(OpenID);
            if (functionForcecastConfig == null)
            {
                Close();
            }
            var openLvConfig = FuncOpenLVConfig.Get(OpenID);
            //var functionForcecastConfig = FunctionForecastConfig.Get(OpenID);
            //if (functionForcecastConfig == null)
            //{
            //    Close();
            //}
            //var openLvConfig = FuncOpenLVConfig.Get(OpenID);
            FunctionImage.SetSprite(functionForcecastConfig.FuncIconKey);
            IconText.text = functionForcecastConfig.FuncName;
            ContentText.text = functionForcecastConfig.DetailDescribe;
            ContentText1.text = functionForcecastConfig.OpenDescribe;
            //FunctionImage.SetSprite(functionForcecastConfig.FuncIconKey);
            //IconText.text = functionForcecastConfig.FuncName;
            //ContentText.text = functionForcecastConfig.DetailDescribe;
            //ContentText1.text = functionForcecastConfig.OpenDescribe;
        }
        protected override void OnPreClose()
@@ -68,7 +66,6 @@
        private void OnFunctionOpenTag(int obj)
        {
            OpenID = obj;
            Assignment();
        }
System/MainInterfacePanel/MainInterfaceWin.cs
@@ -126,7 +126,6 @@
                WindowCenter.Instance.windowAfterOpenEvent += WindowAfterEvent;
                WindowCenter.Instance.windowAfterCloseEvent += WindowAfterEvent;
                NewBieCenter.Instance.guideBeginEvent += GuideBeginEvent;
                GlobalTimeEvent.Instance.secondEvent += secondEvent;
                PlayerMainDate.DemonJarDamageRankWinChange += IsShowTaskPanel;
                ProcessCrossServerOneVsOne();
@@ -232,7 +231,6 @@
            WindowCenter.Instance.windowAfterOpenEvent -= WindowAfterEvent;
            WindowCenter.Instance.windowAfterCloseEvent -= WindowAfterEvent;
            NewBieCenter.Instance.guideBeginEvent -= GuideBeginEvent;
            GlobalTimeEvent.Instance.secondEvent -= secondEvent;
            PlayerMainDate.DemonJarDamageRankWinChange -= IsShowTaskPanel;
        }
@@ -268,15 +266,6 @@
        }
        #endregion
        private void secondEvent()
        {
            if (IsUpdateBool && gameObject.activeInHierarchy)
            {
                StartCoroutine(featureNoticeModel.WhetherToPlayTheBox());//功能预告
                IsUpdateBool = false;
            }
        }
        private void GuideBeginEvent()
        {
System/MainInterfacePanel/TipPanel.cs
@@ -95,14 +95,14 @@
                PopupWindowsProcessor.Instance.Add("OffLineOnHookWin");
                onHookModel.openWinState = 0;
            }
            if (firstTimeRechargeModel.IsTryOut == 1 && !inDungeon)//装备试用
            {
                firstTimeRechargeModel.OpenFirstChargeTrialWin();
            }
            else if (featureNoticeModel.IsShowFeatureN())//功能预告面板
            {
                SysNotifyMgr.Instance.StartCoroutine(featureNoticeModel.WhetherToPlayTheBox());
            }
            //if (firstTimeRechargeModel.IsTryOut == 1 && !inDungeon)//装备试用
            //{
            //    firstTimeRechargeModel.OpenFirstChargeTrialWin();
            //}
            //else if (featureNoticeModel.IsShowFeatureN())//功能预告面板
            //{
            //    SysNotifyMgr.Instance.StartCoroutine(featureNoticeModel.WhetherToPlayTheBox());
            //}
            //else if (!WindowCenter.Instance.IsOpen<PetAndMountPushWin>()
            //    && !WindowCenter.Instance.IsOpen<OffLineOnHookWin>()) //灵宠坐骑推送
            //{