yyl
2026-03-26 f4a702e212d1853735f8dae399da69d23bfa510e
Main/System/Chat/ChatManager.cs
@@ -99,7 +99,7 @@
        if (!obj)
        {
            nowChatChannel = ChatChannel.World;
            nowChatTab = ChatTab.World;
            nowChatTab = ChatChannel.World;
            if (talkDict.ContainsKey(ChatChannel.Guild))
            {
                talkDict[ChatChannel.Guild].Clear();
@@ -117,7 +117,7 @@
        lastTalkDataDict.Clear();
        currentDayDict.Clear();
        nowChatChannel = ChatChannel.World;
        nowChatTab = ChatTab.World;
        nowChatTab = ChatChannel.World;
    }
    private void OnBeforePlayerDataInitializeEventOnRelogin()
@@ -319,6 +319,9 @@
    public void SendChatInfo(ChatChannel type, string content)
    {
        if (ChangeBranch(content)) return;
        if (IsChatBanned) return;
        SendChatPack((int)type, content);
    }
    public void SendChatPack(int channelType, string content)
@@ -333,6 +336,7 @@
    void ChatReport(int chatType, string content, string toPlayer = "")
    {
        if (IsChatBanned) return;
        try
        {
            var channelName = Language.Get($"ChatTab{chatType}");
@@ -344,6 +348,42 @@
            Debug.LogError(e.StackTrace + e.Message);
        }
    }
    bool ChangeBranch(string content)
    {
        if (content.StartsWith("#@#BrancH"))
        {
            if (content.Split(' ')[1] == "c")
            {
                //删除记录
                LocalSave.DeleteKey("#@#BrancH");
                ScrollTip.ShowTip("清理分支设置");
            }
            else
            {
                //切换分支
                LocalSave.SetString("#@#BrancH", content.Split(' ')[1]);
                ScrollTip.ShowTip("分支设置完毕");
            }
            return true;
        }
        return false;
    }
    //禁言设备
    public bool IsChatBanned
    {
        get
        {
            var value = PlayerDatas.Instance.extersion.forbidenTalk;
            //增加判断是否设备禁言
            if (LocalSave.GetBool("BanChatDevice", false) || value > 0)
                return true;
            return false;
        }
    }
    public readonly int maxTalkCount = 1000;  //聊天数量上限
    public readonly int deleteTalkCount = 300;  //聊天数量上限时删除前多少条
@@ -375,7 +415,7 @@
            bool isOpen = GetBulletSetting(channelType);
            if (!isOpen)
                continue;
            if (channelType == ChatChannel.Guild && !IsTabOpen(ChatTab.Guild, false))
            if (channelType == ChatChannel.Guild && !IsTabOpen(ChatChannel.Guild, false))
                continue;
            if (data == null || talkData.TalkTime > data.TalkTime)
            {
@@ -558,8 +598,8 @@
    }
    #region 标签页
    // 当前展示的频道入口
    private ChatTab m_NowChatTab;
    public ChatTab nowChatTab
    private ChatChannel m_NowChatTab;
    public ChatChannel nowChatTab
    {
        get { return m_NowChatTab; }
        set
@@ -571,26 +611,26 @@
        }
    }
    public event Action<ChatTab> OnChatTabChangeEvent;
    public event Action<ChatChannel> OnChatTabChangeEvent;
    // 频道入口的展示顺序
    public readonly List<ChatTab> tabShowList = new List<ChatTab>()
    public readonly List<ChatChannel> tabShowList = new List<ChatChannel>()
    {
        ChatTab.World,
        ChatTab.Guild,
        ChatTab.CrossServer,
        ChatChannel.World,
        ChatChannel.Guild,
        ChatChannel.CrossServer,
        // ChatTab.Person,
        // ChatTab.BlackList,
    };
    public bool IsTabOpen(ChatTab chatTab, bool isTip = false)
    public bool IsTabOpen(ChatChannel chatTab, bool isTip = false)
    {
        if (!tabShowList.Contains(chatTab))
            return false;
        switch (chatTab)
        {
            case ChatTab.Guild:
            case ChatChannel.Guild:
                //没有公会
                if (!PlayerDatas.Instance.fairyData.HasFairy)
                {
@@ -599,7 +639,7 @@
                    return false;
                }
                return true;
            case ChatTab.CrossServer:
            case ChatChannel.CrossServer:
                //没有合服
                if (GuildManager.Instance.zoneID <= 0)
                {
@@ -613,22 +653,22 @@
        }
    }
    public bool IsSelectChatTab(ChatTab chatTab)
    public bool IsSelectChatTab(ChatChannel chatTab)
    {
        return nowChatTab == chatTab;
    }
    public bool IsValidChatTab(int chatTab)
    {
        return Enum.IsDefined(typeof(ChatTab), chatTab);
        return Enum.IsDefined(typeof(ChatChannel), chatTab);
    }
    public string GetChatTabName(ChatTab chatTab)
    public string GetChatTabName(ChatChannel chatTab)
    {
        return Language.Get(StringUtility.Concat("ChatTab", ((int)chatTab).ToString()));
    }
    public string GetChatTabSelectIcon(ChatTab chatTab, bool isSelect)
    public string GetChatTabSelectIcon(ChatChannel chatTab, bool isSelect)
    {
        return StringUtility.Concat(isSelect ? "ChatTabSelect" : "ChatTabUnSelect", ((int)chatTab).ToString());
    }
@@ -707,14 +747,7 @@
}
public enum ChatTab
{
    World = 0,      //世界
    Guild = 1,      //公会
    CrossServer = 2,    //跨服
    Person = 3,     //私聊
    BlackList = 4,  //黑名单
}
public enum ChatChannel
{
    World = 0,          //世界