From 27ca4a943889eff56ec448512e274fa4feb74c08 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 07 十一月 2025 18:53:30 +0800
Subject: [PATCH] 342 子 【主界面】官职晋升 / 官职补充修改

---
 Main/System/OfficialRank/OfficialRankManager.cs |   35 ++++++++++-
 Main/System/OfficialRank/OfficialUpWin.cs       |   39 +++++++++---
 Main/System/Main/HomeWin.cs                     |   18 ++++++
 Main/System/OfficialRank/OfficialUpCell.cs      |   17 +++--
 Main/System/NewBieGuidance/NewBieCenter.cs      |   26 +++++---
 5 files changed, 103 insertions(+), 32 deletions(-)

diff --git a/Main/System/Main/HomeWin.cs b/Main/System/Main/HomeWin.cs
index fdac2ad..95fce4a 100644
--- a/Main/System/Main/HomeWin.cs
+++ b/Main/System/Main/HomeWin.cs
@@ -14,6 +14,7 @@
     [SerializeField] Text playerLevelText;
     [SerializeField] SmoothSlider expSlider;
     [SerializeField] Button officialUpBtn;
+    [SerializeField] Transform officialTip;
 
     //浠诲姟鍖�
     [SerializeField] Button taskButton; //寮曞鎴栬�呴鍙栦换鍔″鍔�
@@ -132,6 +133,7 @@
         DisplayRestState();
 
         funcColBtn.SetActive(FuncOpen.Instance.IsFuncOpen(GeneralDefine.mainRightFuncOpenFuncID));
+        officialTip.SetActive(OfficialRankManager.Instance.CanOfficialLVUP());
     }
 
     protected override void OnPreOpen()
@@ -147,6 +149,7 @@
         FirstChargeManager.Instance.OnUpdateFirstChargeInfo += OnUpdateFirstChargeInfo;
         GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
         HeroUIManager.Instance.OnUnLockHeroCountEvent += OnUnLockHeroCountEvent;
+        OfficialRankManager.Instance.OnOfficialCanLVUpEvent += OnOfficialCanLVUpEvent;
         Display();
         DisplayFirstChargeBtn();
 
@@ -169,9 +172,15 @@
         FirstChargeManager.Instance.OnUpdateFirstChargeInfo -= OnUpdateFirstChargeInfo;
         GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
         HeroUIManager.Instance.OnUnLockHeroCountEvent -= OnUnLockHeroCountEvent;
+        OfficialRankManager.Instance.OnOfficialCanLVUpEvent -= OnOfficialCanLVUpEvent;
 
         //  鍏抽棴鐨勬椂鍊欐妸鎴樻枟鐣岄潰涔熺粰鍏充簡 铏界劧鏄湪澶栭潰寮�鐨�
         UIManager.Instance.CloseWindow<BattleWin>();
+    }
+
+    void OnOfficialCanLVUpEvent()
+    {
+        officialTip.SetActive(OfficialRankManager.Instance.CanOfficialLVUP());
     }
 
     private void OnClickEnterBoss()
@@ -208,6 +217,10 @@
             case PlayerDataType.ExAttr1:
             case PlayerDataType.ExAttr2:
                 DisplayLevel();
+                break;
+
+            case PlayerDataType.RealmLevel:
+                OnOfficialCanLVUpEvent();
                 break;
         }
 
@@ -270,6 +283,11 @@
         {
             taskButton.SetActive(true);
             var taskConfig = TaskConfig.Get(task.TaskID);
+            if (taskConfig == null)
+            {
+                Debug.LogError("鎵句笉鍒颁换鍔� " + task.TaskID);
+                return;
+            }
             taskText.text = taskConfig.TaskDescribe;
             taskNumText.text = string.Format("({0}/{1})", task.CurValue, taskConfig.NeedValue);
             taskNumText.color = task.CurValue >= taskConfig.NeedValue ? UIHelper.GetUIColor(TextColType.NavyYellow) : UIHelper.GetUIColor(TextColType.Red);
diff --git a/Main/System/NewBieGuidance/NewBieCenter.cs b/Main/System/NewBieGuidance/NewBieCenter.cs
index dc303e9..4344ee0 100644
--- a/Main/System/NewBieGuidance/NewBieCenter.cs
+++ b/Main/System/NewBieGuidance/NewBieCenter.cs
@@ -49,6 +49,7 @@
         PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh;
         UIManager.Instance.OnOpenWindow += OnOpenWindow;
         UIManager.Instance.OnCloseWindow += OnCloseWindow;
+        OfficialRankManager.Instance.OnOfficialCanLVUpEvent += OnOfficialCanLVUpEvent;
     }
 
     public override void Release()
@@ -59,6 +60,16 @@
         PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefresh;
         UIManager.Instance.OnOpenWindow -= OnOpenWindow;
         UIManager.Instance.OnCloseWindow -= OnCloseWindow;
+        OfficialRankManager.Instance.OnOfficialCanLVUpEvent -= OnOfficialCanLVUpEvent;
+    }
+
+    void OnOfficialCanLVUpEvent()
+    {
+        var guides = GuideConfig.GetGuideListByType((int)GuideTriggerType.Realm);
+        if (guides != null)
+        {
+            TryStartNewBieGuides(guides, true);
+        }
     }
 
     void OnOpenWindow(UIBase _ui)
@@ -131,14 +142,6 @@
                 TryStartNewBieGuides(guides);
             }
         }
-        else if (type == PlayerDataType.RealmLevel)
-        {
-            var guides = GuideConfig.GetGuideListByType((int)GuideTriggerType.Realm);
-            if (guides != null)
-            {
-                TryStartNewBieGuides(guides);
-            }
-        }
         
     }
 
@@ -191,8 +194,9 @@
             return false;
         }
 
-        if (currentGuide != 0)
+        if (currentGuide != 0 && GuideConfig.Get(currentGuide).NoRecord == 0)
         {
+            // 鍙噸澶嶈Е鍙戠殑寮曞灞炰簬浣庝紭鍏堢骇 浼氳鏂板紩瀵兼浛鎹�
             return false;
         }
 
@@ -448,7 +452,7 @@
             case GuideTriggerType.Level:
                 return PlayerDatas.Instance.baseData.LV >= config.Condition;
             case GuideTriggerType.Realm:
-                return PlayerDatas.Instance.baseData.realmLevel >= config.Condition;
+                return PlayerDatas.Instance.baseData.realmLevel >= config.Condition && OfficialRankManager.Instance.CanOfficialLVUP();
             case GuideTriggerType.OpenWindow:
                 return UIManager.Instance.IsOpened(config.WinName);
             case GuideTriggerType.MainLineQuestCanDo:
@@ -545,6 +549,6 @@
     MissionClick = 4,   //鐐瑰嚮浠诲姟鎸変换鍔$被鍨嬪紩瀵�
     OpenWindow = 5,     //鎵撳紑鐣岄潰鐨勬椂鏈� 濡傝澶囨浛鎹㈢晫闈�
     Level = 6,      //绛夌骇婊¤冻鏉′欢
-    Realm = 7,  //瀹樿亴绛夌骇
+    Realm = 7,  //瀹樿亴鎵�鏈変换鍔″畬鎴愭椂瑙﹀彂寮曞锛屽6鍗�7锛�6鐨勪换鍔″叏閮ㄥ畬鎴愶紝閰嶇疆6
 
 }
\ No newline at end of file
diff --git a/Main/System/OfficialRank/OfficialRankManager.cs b/Main/System/OfficialRank/OfficialRankManager.cs
index 08dbf62..3ea8869 100644
--- a/Main/System/OfficialRank/OfficialRankManager.cs
+++ b/Main/System/OfficialRank/OfficialRankManager.cs
@@ -13,8 +13,12 @@
     int taskAwardState;
     Dictionary<int, int> taskValues = new Dictionary<int, int>();
     public event Action RealmMissionRefreshEvent;
+    public event Action OnOfficialCanLVUpEvent; //妫�娴嬪埌鍙互鍗囧畼鑱�
 
     public Dictionary<int, int> mainLevelDict = new Dictionary<int, int>();    //id锛氱储寮� 鐢ㄤ簬鍒ゆ柇杩橀渶澶氬皯鍏�
+
+    public Dictionary<int, int> guideDict = new Dictionary<int, int>();
+
     public override void Init()
     {
         PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefresh;
@@ -26,9 +30,11 @@
         var levelList = MainLevelConfig.GetKeys().ToList();
         levelList.Sort();
         for (int i = 0; i < levelList.Count; i++)
-        { 
+        {
             mainLevelDict[levelList[i]] = i;
         }
+
+        ParseConfig();
     }
 
     public override void Release()
@@ -43,6 +49,13 @@
     {
         taskValues.Clear();
         taskAwardState = 0;
+    }
+
+    void ParseConfig()
+    {
+        var config = FuncConfigConfig.Get("Official");
+        guideDict = ConfigParse.ParseIntDict(config.Numerical1);
+
     }
 
 
@@ -97,10 +110,8 @@
                 return PlayerDatas.Instance.baseData.ExAttr1 / 100 > config.NeedValueList[0] ? 1 : 0;
             case 3:
                 return taskValues.ContainsKey(missionID) && taskValues[missionID] >= config.NeedValueList[0] ? 1 : 0;
-                
             case 4:
                 return BlessLVManager.Instance.m_TreeLV >= config.NeedValueList[0] ? 1 : 0;
-
             default:
                 return 0;
         }
@@ -191,12 +202,28 @@
                 finish = false;
             }
         }
-        
+
         if (finish)
             redpoint.state = RedPointState.Simple;
+
+        CanOfficialLVUP(true);
     }
 
 
+    public bool CanOfficialLVUP(bool notifyEvent = false)
+    {
+        //鍙浠诲姟瀹屾垚鍗冲彲
+        var ids = RealmLVUPTaskConfig.GetMissionIDs(PlayerDatas.Instance.baseData.realmLevel);
+        foreach (var id in ids)
+        {
+            if (GetMissionState(PlayerDatas.Instance.baseData.realmLevel, id) == 0)
+                return false;
+        }
+        
+        if (notifyEvent)
+            OnOfficialCanLVUpEvent?.Invoke();
+        return true;
+    }
 
 
     public Color GetOfficialRankColor(int quality)
diff --git a/Main/System/OfficialRank/OfficialUpCell.cs b/Main/System/OfficialRank/OfficialUpCell.cs
index c25f777..75f8ef1 100644
--- a/Main/System/OfficialRank/OfficialUpCell.cs
+++ b/Main/System/OfficialRank/OfficialUpCell.cs
@@ -32,12 +32,13 @@
         getAwardImg.SetActive(state == 1);
         getAwardEffect.SetActive(state == 1);
         bgImg.SetSprite(state == 0 ? "OfficialMissionBG0" : "OfficialMissionBG1");
-        switch (config.TaskType)
+        var type = config.TaskType;
+        switch (type)
         {
             case 1:
             case 3:
             case 4:
-                taskName.text = Language.Get("OfficialMission" + config.TaskType, config.NeedValueList[0]);
+                taskName.text = Language.Get("OfficialMission" + type, config.NeedValueList[0]);
                 break;
             case 2:
                 var mainLVConfig = MainLevelConfig.Get(config.NeedValueList[0]);
@@ -51,15 +52,19 @@
         taskProcessText.text = process + "/" + total;
         int itemID = config.AwardItemList[0][0];
         taskReward.Init(new ItemCellModel(itemID, false, config.AwardItemList[0][1]));
-        taskReward.button.AddListener(() =>
-        {
-            ItemTipUtility.Show(itemID);
-        });
+        // taskReward.button.AddListener(() =>
+        // {
+        //     ItemTipUtility.Show(itemID);
+        // });
 
         getBtn.AddListener(() =>
         {
             if (state != 1)
+            {
+                UIManager.Instance.CloseWindow<OfficialUpWin>();
+                NewBieCenter.Instance.StartNewBieGuide(OfficialRankManager.Instance.guideDict[type]);
                 return;
+            }
             OfficialRankManager.Instance.RequestAllAwards(id);
         });
 
diff --git a/Main/System/OfficialRank/OfficialUpWin.cs b/Main/System/OfficialRank/OfficialUpWin.cs
index cbf9e0e..478c217 100644
--- a/Main/System/OfficialRank/OfficialUpWin.cs
+++ b/Main/System/OfficialRank/OfficialUpWin.cs
@@ -15,6 +15,7 @@
     [SerializeField] Image officialIcon;
     [SerializeField] Image officialNextIcon;
     [SerializeField] Button closeBtn;
+    [SerializeField] Text addLVText;
     [SerializeField] PositionTween[] paopaoArr;
     [SerializeField] Text[] paopaoTextArrName;
     [SerializeField] Text[] paopaoTextArrValue;
@@ -61,9 +62,14 @@
         for (int i = 0; i < paopaoArr.Length; i++)
         {
             paopaoArr[i].Play();
-            paopaoTextArrName[i].text = PlayerPropertyConfig.Get(nextConfig.AddAttrType[i]).Name;
-            paopaoTextArrValue[i].text = "+" + PlayerPropertyConfig.GetValueDescription(nextConfig.AddAttrType[i], nextConfig.AddAttrNum[i]);
+            if (i < nextConfig.AddAttrType.Length)
+            {
+                paopaoTextArrName[i].text = PlayerPropertyConfig.Get(nextConfig.AddAttrType[i]).Name;
+                paopaoTextArrValue[i].text = "+" + PlayerPropertyConfig.GetValueDescription(nextConfig.AddAttrType[i], nextConfig.AddAttrNum[i]);
+            }
         }
+
+        addLVText.text = "+" + (nextConfig.LVMax - config.LVMax);
 
         RefreshBtn();
     }
@@ -81,20 +87,31 @@
             }
         }
 
-        //鎵�鏈夋场娉¢鍚戞寜閽�
-        for (int i = 0; i < paopaoArr.Length; i++)
-        {
-            paopaoArr[i].Stop();
-            paopaoArr[i].transform.DOLocalMove(lvUpBtn.transform.localPosition, 0.4f);
-        }
-        effectPlayer.Play();
-
         upEffect.onComplete = () =>
         {
             CA523_tagCMRealmLVUp pak = new CA523_tagCMRealmLVUp();
             GameNetSystem.Instance.SendInfo(pak);
         };
-        upEffect.Play();
+
+        effectPlayer.onComplete = () =>
+        {
+            upEffect.Play();
+        };
+
+        //鎵�鏈夋场娉¢鍚戞寜閽�
+        for (int i = 0; i < paopaoArr.Length; i++)
+        {
+            int index = i;
+            paopaoArr[i].Stop();
+            paopaoArr[i].transform.DOLocalMove(lvUpBtn.transform.localPosition, 0.3f).onComplete = () =>
+            {
+                if (index == 0)
+                {
+                    effectPlayer.Play();
+                }
+            };
+        }
+        
     }
 
 

--
Gitblit v1.8.0