yyl
6 天以前 aee07e17664b4e598f4bc54460cffce26b8b823f
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