From aee07e17664b4e598f4bc54460cffce26b8b823f Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期一, 15 十二月 2025 11:21:33 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts

---
 Main/System/Guild/GuildManager.cs             |    1 
 Main/System/Chat/ChatManager.cs               |   68 ++++++++++---
 Main/Utility/EnumHelper.cs                    |    4 
 Main/System/Battle/BattleManager.cs           |    3 
 Main/System/OSActivity/OSGalaMissionWin.cs    |    8 
 Main/System/Battle/BattleWin.cs               |   40 ++++++-
 Main/System/Login/LoginWin.cs                 |   10 ++
 Main/System/Battle/BaseBattleWin.cs           |   41 +++++--
 Main/System/Chat/ChatWin.cs                   |   27 ++++
 Main/System/Chat/ChatPlayerOtherCell.cs       |   15 +-
 Main/System/HeroUI/HeroUIManager.Reborn.cs    |   19 +++
 Main/System/Achievement/AchievementManager.cs |    9 +
 Main/System/Message/SysNotifyMgr.cs           |   16 ++-
 Main/System/HeroUI/HeroTrainWin.cs            |    7 +
 Main/System/HeroUI/HeroUIManager.cs           |    2 
 15 files changed, 203 insertions(+), 67 deletions(-)

diff --git a/Main/System/Achievement/AchievementManager.cs b/Main/System/Achievement/AchievementManager.cs
index dd399e9..655bbc5 100644
--- a/Main/System/Achievement/AchievementManager.cs
+++ b/Main/System/Achievement/AchievementManager.cs
@@ -163,6 +163,8 @@
 
     };
 
+    public static int[] galaTypes = new int[] { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 };
+
     void UpdateRedpoint(List<int> _types)
     {
         if (_types.IsNullOrEmpty())
@@ -171,6 +173,13 @@
         }
 
         bool isGalaRed = false;
+        if (_types.Count == 1)
+        {
+            if (galaTypes.Contains(_types[0]))
+            {
+                _types = galaTypes.ToList();
+            }
+        }
 
         foreach (var type in _types)
         {
diff --git a/Main/System/Battle/BaseBattleWin.cs b/Main/System/Battle/BaseBattleWin.cs
index fce8ae1..c8f3ac3 100644
--- a/Main/System/Battle/BaseBattleWin.cs
+++ b/Main/System/Battle/BaseBattleWin.cs
@@ -194,14 +194,15 @@
     {
         if (null == battleField)
             return;
-        if (!FuncOpen.Instance.IsFuncOpen(BattleManager.Instance.passFuncId, true))
+        // 妫�鏌ユ槸鍚︿负姘镐箙鐗规潈鍗$帺瀹�
+        bool hasForeverPrivilege = InvestModel.Instance.IsInvested(InvestModel.foreverCardType);
+
+        if (!hasForeverPrivilege && !FuncOpen.Instance.IsFuncOpen(BattleManager.Instance.passFuncId, true))
             return;
 
         int passRound = BattleManager.Instance.defaultPassRound;
         var name = battleField.ToString();
 
-        // 妫�鏌ユ槸鍚︿负姘镐箙鐗规潈鍗$帺瀹�
-        bool hasForeverPrivilege = InvestModel.Instance.IsInvested(InvestModel.foreverCardType);
 
         if (hasForeverPrivilege)
         {
@@ -240,12 +241,15 @@
             // 濡傛灉鎴樺満绫诲瀷涓嶅湪 FieldNameToIndex 涓紝浣跨敤榛樿閰嶇疆
         }
 
-        int nowRound = battleField.round;   
-        int realPassRound = passRound + 1;  // 閰嶇疆鏄秴杩噚鍥炲悎鍙互璺�,鎰忓懗鐫�x+1鍥炲悎鍙互璺�
-        if (nowRound < realPassRound)
+        if (passRound != 0)
         {
-            SysNotifyMgr.Instance.ShowTip("BattlePass", realPassRound - nowRound);
-            return;
+            int nowRound = battleField.round;   
+            int realPassRound = passRound + 1;  // 閰嶇疆鏄秴杩噚鍥炲悎鍙互璺�,鎰忓懗鐫�x+1鍥炲悎鍙互璺�
+            if (nowRound < realPassRound)
+            {
+                SysNotifyMgr.Instance.ShowTip("BattlePass", realPassRound - nowRound);
+                return;
+            }
         }
         battleField.ForceFinish();
     }
@@ -260,15 +264,24 @@
     {
         if (null == battleField)
             return;
+
         // 璁$畻涓嬩竴涓�熷害妗d綅鐨勭储寮�
         int nextSpeedIndex = (BattleManager.Instance.speedIndex + 1) % BattleManager.Instance.speedGear.Length;
-        // 妫�鏌ヤ笅涓�妗e�嶉�熷姛鑳芥槸鍚﹀紑鍚�
-        int nextSpeedFuncId = BattleManager.Instance.speedIndexfuncIdArr[nextSpeedIndex];
-        bool isOpen = FuncOpen.Instance.IsFuncOpen(nextSpeedFuncId);
-        if (!isOpen && FuncOpenLVConfig.HasKey(nextSpeedFuncId))
+        bool isOpen = false;
+        if (InvestModel.Instance.IsActiveFightSpeed(3))
         {
-            var config = FuncOpenLVConfig.Get(nextSpeedFuncId);
-            SysNotifyMgr.Instance.ShowTip("BattleSpeedTip", TaskManager.Instance.GetNeedFinishTaskCount(config.LimitMissionID), nextSpeedIndex + 1);
+            isOpen = true;
+        }
+        else
+        {
+            // 妫�鏌ヤ笅涓�妗e�嶉�熷姛鑳芥槸鍚﹀紑鍚�
+            int nextSpeedFuncId = BattleManager.Instance.speedIndexfuncIdArr[nextSpeedIndex];
+            isOpen = FuncOpen.Instance.IsFuncOpen(nextSpeedFuncId);
+            if (!isOpen && FuncOpenLVConfig.HasKey(nextSpeedFuncId))
+            {
+                var config = FuncOpenLVConfig.Get(nextSpeedFuncId);
+                SysNotifyMgr.Instance.ShowTip("BattleSpeedTip", TaskManager.Instance.GetNeedFinishTaskCount(config.LimitMissionID), nextSpeedIndex + 1);
+            }
         }
         BattleManager.Instance.speedIndex = !isOpen ? 0 : nextSpeedIndex;
         battleField.SetSpeedRatio(BattleManager.Instance.speedGear[BattleManager.Instance.speedIndex]);
diff --git a/Main/System/Battle/BattleManager.cs b/Main/System/Battle/BattleManager.cs
index 0ca113b..2bc46a9 100644
--- a/Main/System/Battle/BattleManager.cs
+++ b/Main/System/Battle/BattleManager.cs
@@ -632,8 +632,7 @@
         float currentTime = Time.time;
         if (currentTime - lastTime < turnCoolDown)
         {
-            SysNotifyMgr.Instance.ShowTip("BattleCoolDown");
-            Debug.Log("BattleCoolDown tip");
+            SysNotifyMgr.Instance.ShowTip("BattleCoolDownClient");
             return;
         }
         lastTime = currentTime;
diff --git a/Main/System/Battle/BattleWin.cs b/Main/System/Battle/BattleWin.cs
index f1c6d26..00f5b88 100644
--- a/Main/System/Battle/BattleWin.cs
+++ b/Main/System/Battle/BattleWin.cs
@@ -48,7 +48,9 @@
 
     protected override void OnPreOpen()
     {
-        // lastClickTime = Time.realtimeSinceStartup;
+        lastClickTime = Time.realtimeSinceStartup;
+        UIManager.Instance.OnCloseWindow += OnCloseWindow;
+        PlayerDatas.Instance.playerDataRefreshEvent += OnPlayerDataRefresh;
         needGuide = !MainLevelManager.Instance.IsPassedByMainLevelID(BattleManager.Instance.fightGuideMainLevelLimit);
 
         // SetBattleField(BattleManager.Instance.storyBattleField);
@@ -58,6 +60,8 @@
 
     protected override void OnPreClose()
     {
+        UIManager.Instance.OnCloseWindow -= OnCloseWindow;
+        PlayerDatas.Instance.playerDataRefreshEvent -= OnPlayerDataRefresh;
         UIManager.Instance.CloseWindow<BattleHUDWin>();
         BattleManager.Instance.onBattleFieldCreate -= OnCreateBattleField;
         UIManager.Instance.OnOpenWindow -= OnOpenWindow;
@@ -71,10 +75,6 @@
         }
     }
 
-    protected override void OnOpen()
-    {
-        base.OnOpen();
-    }
 
     protected override void OnClose()
     {
@@ -89,16 +89,38 @@
         battleField = null;
     }
 
-    protected override void NextFrameAfterOpen()
+
+
+    void OnCloseWindow(UIBase ui)
     {
-        base.NextFrameAfterOpen();
+        if (ui is NewBieWin)
+        {
+            lastClickTime = Time.realtimeSinceStartup;
+        }
     }
 
-    protected override void CompleteClose()
+    bool lastIsBoss = false;
+
+    void OnPlayerDataRefresh(PlayerDataType type)
     {
-        base.CompleteClose();
+        switch (type)
+        {
+
+            case PlayerDataType.ExAttr1:
+            case PlayerDataType.ExAttr2:
+                if (!lastIsBoss && MainLevelManager.Instance.CanChallengeBoss())
+                {
+                    //鍙寫鎴樼殑鏃跺�欎篃瑕佺瓑CD
+                    lastClickTime = Time.realtimeSinceStartup;
+                    lastIsBoss = true;
+                }
+                break;
+
+        }
     }
 
+
+
     public void SetBattleField(BattleField _battleField)
     {
         battleField = _battleField;
diff --git a/Main/System/Chat/ChatManager.cs b/Main/System/Chat/ChatManager.cs
index e9f22b0..701fede 100644
--- a/Main/System/Chat/ChatManager.cs
+++ b/Main/System/Chat/ChatManager.cs
@@ -11,6 +11,9 @@
 
     //<ChannelType,TalkData>
     public Dictionary<ChatChannel, List<TalkData>> talkDict = new Dictionary<ChatChannel, List<TalkData>>();
+    //鐢ㄤ簬缂撳瓨鐜╁鐨勫瑙備俊鎭�
+    public Dictionary<uint, TalkData> playerInfoDict = new Dictionary<uint, TalkData>();
+
     public Dictionary<int, ChatBubbleData> chatBubbles = new Dictionary<int, ChatBubbleData>();
     //<ChannelType,鏃堕棿鎴�>
     public Dictionary<int, int> chatChannelSendTime = new Dictionary<int, int>();
@@ -119,6 +122,8 @@
     private void OnBeforePlayerDataInitializeEvent()
     {
         talkDict.Clear();
+        playerInfoDict.Clear();
+        currentDay = -1;
         ParseChatBubbleConfig();
         nowChatChannel = ChatChannel.World;
         nowChatTab = ChatTab.World;
@@ -185,6 +190,11 @@
     public static int GetUTF8InfoLen(string msg)
     {
         return Encoding.UTF8.GetBytes(msg).Length;
+    }
+
+    public bool TryGetNewPlayerInfoByPlayerID(uint playerID, out TalkData talkData)
+    {
+        return playerInfoDict.TryGetValue(playerID, out talkData);
     }
 
     public bool TryGetBubble(int id, out ChatBubbleData bubble)
@@ -351,7 +361,7 @@
     }
 
     public int currentDay = -1;
-    public void AddTalkData(ChatChannel type, TalkData data)
+    public void AddTalkData(ChatChannel type, TalkData data, bool isSend)
     {
         //濡傛灉瓒呰繃闄愬埗鍏堝垹闄ゆ棫鏁版嵁
         TryDeleteTalkData(type);
@@ -360,10 +370,13 @@
             talkDict[type] = new List<TalkData>();
         }
         talkDict[type].Add(data);
-        OnUpdateTalkEvent?.Invoke(type, data);
+        if (isSend)
+        {
+            OnUpdateTalkEvent?.Invoke(type, data);
+        }
     }
 
-    public bool TryAddDate(int allSeconds, ChatChannel type)
+    public bool TryAddDate(int allSeconds, ChatChannel type, bool isSend)
     {
         DateTime talkTime = TimeUtility.GetTime((uint)allSeconds);
         if (talkTime.Day != currentDay)
@@ -375,17 +388,17 @@
                 isDate = true,
                 Content = Language.Get("Chat09", talkTime.Month, talkTime.Day),
                 TalkTime = (uint)allSeconds,
-            });
+            }, isSend);
             return true;
         }
         return false;
     }
 
-    public void AddSysData(string msg, ArrayList infoList, ChatChannel type)
+    public void AddSysData(string msg, ArrayList infoList, ChatChannel type, bool isSend)
     {
         int allSeconds = TimeUtility.AllSeconds;
         // 濡傛灉闅斿ぉ,澧炲姞鏃ユ湡琛�
-        TryAddDate(allSeconds, type);
+        TryAddDate(allSeconds, type, isSend);
 
         if (!talkDict.ContainsKey(type))
         {
@@ -399,7 +412,7 @@
             BubbleBox = 1,
             TalkTime = (uint)allSeconds,
             InfoList = new ArrayList(infoList),
-        });
+        }, isSend);
     }
 
     public void UpdateTalk(HB310_tagMCTalk vNetData)
@@ -415,7 +428,7 @@
 
         int allSeconds = TimeUtility.AllSeconds;
         // 濡傛灉闅斿ぉ,澧炲姞鏃ユ湡琛�
-        TryAddDate(allSeconds, type);
+        TryAddDate(allSeconds, type, true);
 
         TalkData talkData = new TalkData()
         {
@@ -433,7 +446,9 @@
             ServerID = vNetData.ServerID,
             TalkTime = (uint)allSeconds,
         };
-        AddTalkData(type, talkData);
+        AddPlayerInfo(talkData);
+        AddTalkData(type, talkData, true);
+
     }
 
     public void UpdateTalkCacheList(HB311_tagMCTalkCacheList vNetData)
@@ -453,13 +468,13 @@
         foreach (var info in vNetData.InfoList)
         {
             // 濡傛灉闅斿ぉ,澧炲姞鏃ユ湡琛�
-            TryAddDate((int)info.TalkTime, type);
-            AddTalkData(type, new TalkData()
+            TryAddDate((int)info.TalkTime, type, false);
+            TalkData talkData = new TalkData()
             {
                 ChannelType = vNetData.ChannelType,
-                Name = info.Name,
+                Name = UIHelper.ServerStringTrim(info.Name),
                 PlayerID = info.PlayerID,
-                Content = info.Content,
+                Content = UIHelper.ServerStringTrim(info.Content),
                 BubbleBox = info.BubbleBox,
                 LV = info.LV,
                 Job = info.Job,
@@ -469,9 +484,33 @@
                 FacePic = info.FacePic,
                 ServerID = info.ServerID,
                 TalkTime = info.TalkTime,
-            });
+            };
+            AddPlayerInfo(talkData);
+            AddTalkData(type, talkData, false);
         }
         OnUpdateTalkCacheListEvent?.Invoke();
+    }
+
+    public event Action OnUpdatePlayerInfoEvent;
+    public void AddPlayerInfo(TalkData data)
+    {
+        bool isChange = false;
+        if (playerInfoDict.ContainsKey(data.PlayerID))
+        {
+            if (data.Name != playerInfoDict[data.PlayerID].Name||
+            data.BubbleBox != playerInfoDict[data.PlayerID].BubbleBox||
+            data.LV != playerInfoDict[data.PlayerID].LV||
+            data.Job != playerInfoDict[data.PlayerID].Job||
+            data.RealmLV != playerInfoDict[data.PlayerID].RealmLV||
+            data.TitleID != playerInfoDict[data.PlayerID].TitleID||
+            data.Face != playerInfoDict[data.PlayerID].Face||
+            data.FacePic != playerInfoDict[data.PlayerID].FacePic)
+            isChange = true;
+          
+        }
+        playerInfoDict[data.PlayerID] = data;
+        if (isChange)
+            OnUpdatePlayerInfoEvent?.Invoke();
     }
     #region 鏍囩椤�
     // 褰撳墠灞曠ず鐨勯閬撳叆鍙�
@@ -647,7 +686,6 @@
     public byte ChannelType;    // 0-涓栫晫锛�1-璺ㄦ湇锛�3- 浠欑洘	
     public bool isSystem = false;       //绯荤粺娑堟伅
     public bool isDate = false;          //鍒嗗壊鏃ユ湡
-    public byte NameLen;
     public string Name;
     public uint PlayerID;
     public string Content;
diff --git a/Main/System/Chat/ChatPlayerOtherCell.cs b/Main/System/Chat/ChatPlayerOtherCell.cs
index 318c586..a472369 100644
--- a/Main/System/Chat/ChatPlayerOtherCell.cs
+++ b/Main/System/Chat/ChatPlayerOtherCell.cs
@@ -13,19 +13,20 @@
     ChatManager manager { get { return ChatManager.Instance; } }
     public void Refresh(CellView cell)
     {
-        if (!manager.TryGetChatData(ChatManager.Instance.nowChatChannel, cell.index, out TalkData data))
+        if (!manager.TryGetChatData(ChatManager.Instance.nowChatChannel, cell.index, out TalkData nowData) || nowData == null)
             return;
-        avatarCell.InitUI(AvatarHelper.GetAvatarModel((int)data.PlayerID, (int)data.Face, (int)data.PlayerID, data.Job));
+
+        m_ChatBubble.DisplayContent(nowData.Content, true);
+
+        bool hasNewPlayerInfo = manager.TryGetNewPlayerInfoByPlayerID(nowData.PlayerID, out TalkData newPlayerInfo);
+        TalkData data = hasNewPlayerInfo ? newPlayerInfo : nowData;
+
+        avatarCell.InitUI(AvatarHelper.GetAvatarModel((int)data.PlayerID, (int)data.Face, (int)data.FacePic, data.Job));
         avatarCell.button.SetListener(() =>
         {
 
         });
         title.InitUI(data.RealmLV, (int)data.TitleID);
-
-
-
-        m_ChatBubble.DisplayContent(data.Content, true);
-
         int bubbleID = ChatBubbleHelper.GetOtherChatBubbleID(data.Job, (int)data.BubbleBox);
         m_ChatBubble.DisplayBubble(bubbleID, (int)data.PlayerID);
 
diff --git a/Main/System/Chat/ChatWin.cs b/Main/System/Chat/ChatWin.cs
index 1793fce..427087b 100644
--- a/Main/System/Chat/ChatWin.cs
+++ b/Main/System/Chat/ChatWin.cs
@@ -96,10 +96,12 @@
     protected override void OnPreOpen()
     {
         base.OnPreOpen();
+        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitializeEvent;
         manager.OnChatTabChangeEvent += OnChatTabChange;
         manager.OnUpdateTalkEvent += OnUpdateTalkEvent;
         manager.OnUpdateTalkCacheListEvent += OnUpdateTalkCacheList;
         manager.OnDeleteTalkEvent += OnDeleteTalkEvent;
+        manager.OnUpdatePlayerInfoEvent += OnUpdatePlayerInfoEvent;
 
         scrChatTab.OnRefreshCell += OnRefreshChatTabCell;
         scrWorld.OnGetDynamicSize += OnGetWorldChatDynamicSize;
@@ -126,10 +128,12 @@
     protected override void OnPreClose()
     {
         base.OnPreClose();
+        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitializeEvent;
         manager.OnChatTabChangeEvent -= OnChatTabChange;
         manager.OnUpdateTalkEvent -= OnUpdateTalkEvent;
         manager.OnUpdateTalkCacheListEvent -= OnUpdateTalkCacheList;
         manager.OnDeleteTalkEvent -= OnDeleteTalkEvent;
+        manager.OnUpdatePlayerInfoEvent -= OnUpdatePlayerInfoEvent;
 
         scrChatTab.OnRefreshCell -= OnRefreshChatTabCell;
         scrWorld.OnGetDynamicSize -= OnGetWorldChatDynamicSize;
@@ -140,6 +144,16 @@
         scrGuild.mScrollRect.onValueChanged.RemoveListener(OnGuildScrollValChange);
         GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
         clickScreenOtherSpace.RemoveAllListeners();
+    }
+
+    private void OnBeforePlayerDataInitializeEvent()
+    {
+        CreaterAll(manager.nowChatTab);
+    }
+
+    private void OnUpdatePlayerInfoEvent()
+    {
+        RefreshAll(manager.nowChatChannel, isUpdatePlayerInfo: true);
     }
 
     private void OnDeleteTalkEvent(ChatChannel channel)
@@ -330,21 +344,21 @@
         return 0;
     }
 
-    private void RefreshAll(ChatChannel type, uint playerId = 0)
+    private void RefreshAll(ChatChannel type, uint playerId = 0, bool isUpdatePlayerInfo = false)
     {
         scrChatTab.m_Scorller.RefreshActiveCellViews();
         if (type == ChatChannel.World)
         {
-            RefreshChat(type, scrWorld, playerId);
+            RefreshChat(type, scrWorld, playerId, isUpdatePlayerInfo);
         }
         else if (type == ChatChannel.Guild)
         {
-            RefreshChat(type, scrGuild, playerId);
+            RefreshChat(type, scrGuild, playerId, isUpdatePlayerInfo);
         }
 
     }
 
-    private void RefreshChat(ChatChannel type, ScrollerController scroller, uint playerId = 0)
+    private void RefreshChat(ChatChannel type, ScrollerController scroller, uint playerId = 0, bool isUpdatePlayerInfo = false)
     {
         if (!manager.TryGetTalkData(type, out List<TalkData> datas) || datas == null)
             return;
@@ -361,6 +375,11 @@
                 float height = GetHeight(talkDataType, data.Content, data.InfoList);
                 scroller.m_Scorller.AddHeight(true, height);
                 //Debug.Log($"ChatWin AddCell i {i} AddHeight {height}");
+
+            }
+            if (isUpdatePlayerInfo)
+            {
+                scroller.m_Scorller.RefreshActiveCellViews();
             }
         }
         else
diff --git a/Main/System/Guild/GuildManager.cs b/Main/System/Guild/GuildManager.cs
index 98015a1..7981c55 100644
--- a/Main/System/Guild/GuildManager.cs
+++ b/Main/System/Guild/GuildManager.cs
@@ -80,6 +80,7 @@
 
     void ClearGuildData()
     {
+        PlayerDatas.Instance.baseData.FamilyId = 0;
         m_FairyRequesteds.Clear();
         familyActions.Clear();
         guildChanged = false;
diff --git a/Main/System/HeroUI/HeroTrainWin.cs b/Main/System/HeroUI/HeroTrainWin.cs
index 7a974fc..35e69aa 100644
--- a/Main/System/HeroUI/HeroTrainWin.cs
+++ b/Main/System/HeroUI/HeroTrainWin.cs
@@ -95,6 +95,7 @@
     [SerializeField] Image redpointAwake;
     [SerializeField] Image redpointGift;
     [SerializeField] Image redpointLVUP;
+    [SerializeField] Image redpointBreakLVUP; //绐佺牬绾㈢偣
 
 
 
@@ -207,6 +208,7 @@
         {
             functionOrder = 0;
             DisplayTrainOrBreak(hero);
+            ForceRefreshLayout();
         });
 
         breakMainButton.AddListener(() =>
@@ -838,13 +840,14 @@
         redpointLVUP.SetActive(false);
         trainMainRedImg.SetActive(false);
         breakMainRedImg.SetActive(false);
+        redpointBreakLVUP.SetActive(false);
 
 
         var heroCnt = PackManager.Instance.GetItemCountByID(PackType.Hero, hero.heroId);
         var itemPack = PackManager.Instance.GetSinglePack(PackType.Item);
 
 
-        if (heroCnt > 1)
+        if (heroCnt > 1 && hero.heroStar < hero.GetCurMaxStar())
         {
             redpointGift.SetActive(true);
             trainMainRedImg.SetActive(true);
@@ -887,7 +890,7 @@
 
         if (HeroUIManager.Instance.IsCanBreak(hero))
         {
-            redpointLVUP.SetActive(true);
+            redpointBreakLVUP.SetActive(true);
             breakMainRedImg.SetActive(true);
         }
 
diff --git a/Main/System/HeroUI/HeroUIManager.Reborn.cs b/Main/System/HeroUI/HeroUIManager.Reborn.cs
index 484fa83..f8136fb 100644
--- a/Main/System/HeroUI/HeroUIManager.Reborn.cs
+++ b/Main/System/HeroUI/HeroUIManager.Reborn.cs
@@ -119,14 +119,31 @@
         int specialAttrType = selectList[4];
 
         List<string> retGuidList = new List<string>();
+
+        List<int> fullStarHeroIDList = new List<int>();
+        foreach (var heroInfo in _list)
+        {
+            if (heroInfo.heroStar < heroInfo.GetCurMaxStar())
+            {
+                //鐩稿悓姝﹀皢涓凡缁忔湁婊℃槦鐨�
+                continue;
+            }
+            var heorID = heroInfo.heroId;
+            if (fullStarHeroIDList.Contains(heorID))
+                continue;
+            fullStarHeroIDList.Add(heorID);
+
+        }
+
         foreach (var heroInfo in _list)
         {
 
             if (heroInfo.isAttrActive)
                 continue;
 
-            if (heroInfo.heroStar < heroInfo.GetCurMaxStar())
+            if (!fullStarHeroIDList.Contains(heroInfo.heroId))
             {
+                //鐩稿悓姝﹀皢涓凡缁忔湁婊℃槦鐨�
                 continue;
             }
 
diff --git a/Main/System/HeroUI/HeroUIManager.cs b/Main/System/HeroUI/HeroUIManager.cs
index 578acf9..91ad53b 100644
--- a/Main/System/HeroUI/HeroUIManager.cs
+++ b/Main/System/HeroUI/HeroUIManager.cs
@@ -605,7 +605,7 @@
 
             if (HeroManager.Instance.GetHeroCountByID(hero.heroId) > 1)
             {
-                heroEatRedPoint.state = RedPointState.Simple;
+                heroEatRedPoint.state = RedPointState.GetReward;
                 break;
             }
         }
diff --git a/Main/System/Login/LoginWin.cs b/Main/System/Login/LoginWin.cs
index d5abbde..efe6ca9 100644
--- a/Main/System/Login/LoginWin.cs
+++ b/Main/System/Login/LoginWin.cs
@@ -358,6 +358,10 @@
                     // 鍒犻櫎鎵�鏈夋枃浠�  
                     foreach (string file in files)
                     {
+                        if (file.Contains(".txt"))
+                        {
+                            continue;
+                        }
                         File.Delete(file);
                     }
 
@@ -365,9 +369,15 @@
                     // 閫掑綊鍒犻櫎鎵�鏈夋枃浠跺す  
                     foreach (string dir in dirs)
                     {
+                        if (dir.Contains("config"))
+                        {
+                            continue;
+                        }
                         Directory.Delete(dir, true);
                     }
 
+                    
+
                 }
                 catch (System.Exception e)
                 {
diff --git a/Main/System/Message/SysNotifyMgr.cs b/Main/System/Message/SysNotifyMgr.cs
index 9da1a2f..40f281b 100644
--- a/Main/System/Message/SysNotifyMgr.cs
+++ b/Main/System/Message/SysNotifyMgr.cs
@@ -154,6 +154,10 @@
         SysInfoConfig cfg = SysInfoConfig.Get(key);
         if (cfg != null)
         {
+            if (string.IsNullOrEmpty(cfg.richText))
+            {
+                return;
+            }
             tipInfoList.Clear();
             tipInfoList.AddRange(msg);
             AnalysisSysmsg(cfg);
@@ -236,10 +240,10 @@
                     ServerTipDetails.ShowMarquee(msg, tipInfoList, order);
                     break;
                 case SysNotifyType.ChatChannelWorld:
-                    ChatManager.Instance.AddSysData(msg, tipInfoList, ChatChannel.World);
+                    ChatManager.Instance.AddSysData(msg, tipInfoList, ChatChannel.World, true);
                     break;
                 case SysNotifyType.ChatChannelGuild:
-                    ChatManager.Instance.AddSysData(msg, tipInfoList, ChatChannel.Guild);
+                    ChatManager.Instance.AddSysData(msg, tipInfoList, ChatChannel.Guild, true);
                     break;
                 case SysNotifyType.SysRealmTip:
                     if (OnSysTipEvent != null)
@@ -248,10 +252,10 @@
                     }
                     break;
 
-                //  TODO YYL    
-                // case SysNotifyType.SysEvenKill:
-                //     BattleHint.Instance.ReceiveEvenKill(msg, tipInfoList);
-                //     break;
+                    //  TODO YYL    
+                    // case SysNotifyType.SysEvenKill:
+                    //     BattleHint.Instance.ReceiveEvenKill(msg, tipInfoList);
+                    //     break;
 
 
             }
diff --git a/Main/System/OSActivity/OSGalaMissionWin.cs b/Main/System/OSActivity/OSGalaMissionWin.cs
index 39d15df..d477633 100644
--- a/Main/System/OSActivity/OSGalaMissionWin.cs
+++ b/Main/System/OSActivity/OSGalaMissionWin.cs
@@ -9,12 +9,12 @@
 using UnityEngine.UI;
 
 
-////寮�鏈嶆椿鍔�-涓荤嚎鍏冲崱娲诲姩
+////寮�鏈嶆椿鍔�-搴嗗吀
 public class OSGalaMissionWin : UIBase
 {
     [SerializeField] ScrollerController scroller;
 
-    int[] types = new int[] { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 };
+    
 
     List<int> ids = new List<int>();
     protected override void OnPreOpen()
@@ -38,14 +38,14 @@
         // -1 涓烘墍鏈夌被鍨�
         if (type >= 2 && type <= 19 || type == -1)
         {
-            ids = AchievementManager.Instance.GetAchievementIDsByTypes(types);
+            ids = AchievementManager.Instance.GetAchievementIDsByTypes(AchievementManager.galaTypes);
             scroller.m_Scorller.RefreshActiveCellViews();
         }
     }
 
     void CreateScroller()
     {
-        ids = AchievementManager.Instance.GetAchievementIDsByTypes(types);
+        ids = AchievementManager.Instance.GetAchievementIDsByTypes(AchievementManager.galaTypes);
         var count = ids.Count;
         scroller.Refresh();
         for (int i = 0; i < count; i++)
diff --git a/Main/Utility/EnumHelper.cs b/Main/Utility/EnumHelper.cs
index f428ab2..268b065 100644
--- a/Main/Utility/EnumHelper.cs
+++ b/Main/Utility/EnumHelper.cs
@@ -1109,8 +1109,8 @@
     Simple = 1,
     Quantity = 2,
     Full = 3,
-    GetReward = 4,
-    New = 5,
+    New = 4,
+    GetReward = 5,
 }
 
 

--
Gitblit v1.8.0