yyl
6 天以前 2a845f0babe52ac324b3cbe294db7dcec9346042
Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts
11个文件已修改
501 ■■■■■ 已修改文件
Main/System/Chat/ChatBubbleBehaviour.cs 58 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Chat/ChatBulletView.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Chat/ChatManager.cs 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Chat/ChatPlayerMineCell.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Chat/ChatPlayerOtherCell.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Chat/ChatSysCell.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Chat/ChatWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Guild/GuildBaseWin.cs 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/HeroUI/HeroUIManager.Reborn.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Main/HomeWin.cs 209 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Utility/OperationLogCollect.cs 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Chat/ChatBubbleBehaviour.cs
@@ -37,21 +37,16 @@
        Refresh();
    }
    public void DisplayContent(string content, bool _left = false)
    public void DisplayContent(string content)
    {
        if (m_Target == null)
        {
            return;
        }
        left = _left;
        m_PreferredWidth = true;
        var richText = m_Target as RichText;
        if (richText != null && !left)
        {
            richText.AutoNewLine = false;
        }
        m_Target.text = content;
        if (richText != null)
        {
            richText.AutoNewLine = true;
@@ -157,50 +152,27 @@
            rect.sizeDelta = sizeDelta;
        }
        SetAnchor(m_Target.rectTransform);
        if (m_Target.rectTransform.anchorMin != Vector2.up)
        {
            m_Target.rectTransform.anchorMin = Vector2.up;
        }
        if (m_Target.rectTransform.anchorMax != Vector2.up)
        {
            m_Target.rectTransform.anchorMax = Vector2.up;
        }
        if (m_Target.rectTransform.pivot != Vector2.up)
        {
            m_Target.rectTransform.pivot = Vector2.up;
        }
        float top = padding.top;
        Vector2 position = Vector2.zero;
        position.x = left ? padding.left : -padding.right;
        position.x = padding.left;
        position.y = -top;
        if (targetRect.anchoredPosition != position)
        {
            targetRect.anchoredPosition = position;
        }
    }
    void SetAnchor(RectTransform targetRect)
    {
        if (!left)
        {
            if (targetRect.anchorMin != Vector2.one)
            {
                targetRect.anchorMin = Vector2.one;
            }
            if (targetRect.anchorMax != Vector2.one)
            {
                targetRect.anchorMax = Vector2.one;
            }
            if (targetRect.pivot != Vector2.one)
            {
                targetRect.pivot = Vector2.one;
            }
        }
        else
        {
            if (targetRect.anchorMin != Vector2.up)
            {
                targetRect.anchorMin = Vector2.up;
            }
            if (targetRect.anchorMax != Vector2.up)
            {
                targetRect.anchorMax = Vector2.up;
            }
            if (targetRect.pivot != Vector2.up)
            {
                targetRect.pivot = Vector2.up;
            }
        }
    }
Main/System/Chat/ChatBulletView.cs
@@ -34,8 +34,10 @@
        ChatManager.Instance.OnUpdateTalkEvent -= OnUpdateTalkEvent;
    }
    private void OnUpdateTalkEvent(ChatChannel channel, TalkData data)
    private void OnUpdateTalkEvent(ChatChannel channel, TalkData data, bool isSendBullet)
    {
        if (!isSendBullet)
            return;
        if (!ChatManager.Instance.GetBulletSetting(channel))
            return;
        // 0-系统 1-日期 2-自己 3-其他玩家
Main/System/Chat/ChatManager.cs
@@ -17,7 +17,7 @@
    public Dictionary<int, ChatBubbleData> chatBubbles = new Dictionary<int, ChatBubbleData>();
    //<ChannelType,时间戳>
    public Dictionary<int, int> chatChannelSendTime = new Dictionary<int, int>();
    public event Action<ChatChannel, TalkData> OnUpdateTalkEvent;
    public event Action<ChatChannel, TalkData, bool> OnUpdateTalkEvent;
    public event Action OnUpdateTalkCacheListEvent;
    public Dictionary<int, int> chatChannelCD = new Dictionary<int, int>();
@@ -27,7 +27,6 @@
    public Color32 areaOtherColor;
    public Dictionary<int, int[]> chatChannelBulletColorArrDict = new Dictionary<int, int[]>();
    public Dictionary<ChatChannel, Color32> chatChannelBulletColorDict = new Dictionary<ChatChannel, Color32>();
    public int[] defaultChannelBulletColorArr;
    public Color32 defaultChannelBulletColor;
    public int characterLimit;
@@ -48,45 +47,21 @@
        config = FuncConfigConfig.Get("TalkColor");
        areaMyColorArr = ConfigParse.GetMultipleStr<int>(config.Numerical1);
        areaMyColor = new Color32()
        {
            r = (byte)(areaMyColorArr.Length > 0 ? areaMyColorArr[0] : 0),
            g = (byte)(areaMyColorArr.Length > 1 ? areaMyColorArr[1] : 0),
            b = (byte)(areaMyColorArr.Length > 2 ? areaMyColorArr[2] : 0),
            a = (byte)(areaMyColorArr.Length > 3 ? areaMyColorArr[3] : 255),
        };
        areaMyColor = ParseColor32(areaMyColorArr);
        areaOtherColorArr = ConfigParse.GetMultipleStr<int>(config.Numerical2);
        areaOtherColor = new Color32()
        {
            r = (byte)(areaOtherColorArr.Length > 0 ? areaOtherColorArr[0] : 0),
            g = (byte)(areaOtherColorArr.Length > 1 ? areaOtherColorArr[1] : 0),
            b = (byte)(areaOtherColorArr.Length > 2 ? areaOtherColorArr[2] : 0),
            a = (byte)(areaOtherColorArr.Length > 3 ? areaOtherColorArr[3] : 255),
        };
        areaOtherColor = ParseColor32(areaOtherColorArr);
        chatChannelBulletColorArrDict = ConfigParse.ParseIntArrayDict(config.Numerical3);
        foreach (var kv in chatChannelBulletColorArrDict)
        {
            if (!IsValidChatChannel(kv.Key))
                continue;
            chatChannelBulletColorDict[(ChatChannel)kv.Key] = new Color32()
            {
                r = (byte)(kv.Value.Length > 0 ? kv.Value[0] : 0),
                g = (byte)(kv.Value.Length > 1 ? kv.Value[1] : 0),
                b = (byte)(kv.Value.Length > 2 ? kv.Value[2] : 0),
                a = (byte)(kv.Value.Length > 3 ? kv.Value[3] : 0),
            };
            chatChannelBulletColorDict[(ChatChannel)kv.Key] = ParseColor32(kv.Value);
        }
        defaultChannelBulletColorArr = ConfigParse.GetMultipleStr<int>(config.Numerical4);
        defaultChannelBulletColor = new Color32()
        {
            r = (byte)(defaultChannelBulletColorArr.Length > 0 ? defaultChannelBulletColorArr[0] : 0),
            g = (byte)(defaultChannelBulletColorArr.Length > 1 ? defaultChannelBulletColorArr[1] : 0),
            b = (byte)(defaultChannelBulletColorArr.Length > 2 ? defaultChannelBulletColorArr[2] : 0),
            a = (byte)(defaultChannelBulletColorArr.Length > 3 ? defaultChannelBulletColorArr[3] : 255),
        };
        defaultChannelBulletColor = ParseColor32(defaultChannelBulletColorArr);
        config = FuncConfigConfig.Get("TalkLimit");
        characterLimit = int.Parse(config.Numerical1);
@@ -94,15 +69,20 @@
        config = FuncConfigConfig.Get("TalkBubble");
        sysBubbleID = int.Parse(config.Numerical1);
        sysBubbleColorArr = ConfigParse.GetMultipleStr<int>(config.Numerical2);
        sysBubbleColor = new Color32()
        {
            r = (byte)(sysBubbleColorArr.Length > 0 ? sysBubbleColorArr[0] : 0),
            g = (byte)(sysBubbleColorArr.Length > 1 ? sysBubbleColorArr[1] : 0),
            b = (byte)(sysBubbleColorArr.Length > 2 ? sysBubbleColorArr[2] : 0),
            a = (byte)(sysBubbleColorArr.Length > 3 ? sysBubbleColorArr[3] : 255),
        };
        sysBubbleColor = ParseColor32(sysBubbleColorArr);
        ParseChatBubbleConfig();
    }
    public Color32 ParseColor32(int[] colorArr)
    {
        return new Color32()
        {
            r = (byte)(colorArr.Length > 0 ? colorArr[0] : 0),
            g = (byte)(colorArr.Length > 1 ? colorArr[1] : 0),
            b = (byte)(colorArr.Length > 2 ? colorArr[2] : 0),
            a = (byte)(colorArr.Length > 3 ? colorArr[3] : 255),
        };
    }
    public override void Release()
@@ -113,19 +93,28 @@
        GuildManager.Instance.EnterOrQuitGuildEvent -= EnterOrQuitGuildEvent;
    }
    //被踢出/退出工会时,切换聊天频道
    //被踢出/退出工会时,切换聊天频道,清理缓存的旧公会信息
    private void EnterOrQuitGuildEvent(bool obj)
    {
        if (!obj)
        {
            nowChatChannel = ChatChannel.World;
            nowChatTab = ChatTab.World;
            if (talkDict.ContainsKey(ChatChannel.Guild))
            {
                talkDict[ChatChannel.Guild].Clear();
            }
            if (lastTalkDataDict.ContainsKey(ChatChannel.Guild))
            {
                lastTalkDataDict.Remove(ChatChannel.Guild);
            }
        }
    }
    private void OnBeforePlayerDataInitializeEvent()
    {
        talkDict.Clear();
        lastTalkDataDict.Clear();
        currentDay = -1;
        nowChatChannel = ChatChannel.World;
        nowChatTab = ChatTab.World;
@@ -235,20 +224,8 @@
                top = config.RightOffset.Length > 2 ? config.RightOffset[2] : 0,
                bottom = config.RightOffset.Length > 3 ? config.RightOffset[3] : 0,
            };
            bubble.myColor = new Color32()
            {
                r = (byte)(config.MyColor.Length > 0 ? config.MyColor[0] : 0),
                g = (byte)(config.MyColor.Length > 1 ? config.MyColor[1] : 0),
                b = (byte)(config.MyColor.Length > 2 ? config.MyColor[2] : 0),
                a = (byte)(config.MyColor.Length > 3 ? config.MyColor[3] : 255),
            };
            bubble.otherColor = new Color32()
            {
                r = (byte)(config.OtherColor.Length > 0 ? config.OtherColor[0] : 0),
                g = (byte)(config.OtherColor.Length > 1 ? config.OtherColor[1] : 0),
                b = (byte)(config.OtherColor.Length > 2 ? config.OtherColor[2] : 0),
                a = (byte)(config.OtherColor.Length > 3 ? config.OtherColor[3] : 255),
            };
            bubble.myColor = ParseColor32(config.MyColor);
            bubble.otherColor = ParseColor32(config.OtherColor);
            bubble.top = config.Top;
            chatBubbles.Add(config.ID, bubble);
        }
@@ -367,8 +344,36 @@
        OnDeleteTalkEvent?.Invoke(type);
    }
    public int currentDay = -1;
    public void AddTalkData(ChatChannel type, TalkData data, bool isSend)
    //记录各个频道最后一条聊天记录
    public Dictionary<ChatChannel, TalkData> lastTalkDataDict = new Dictionary<ChatChannel, TalkData>();
    public bool TryGetLastTalkData(out ChatChannel type, out TalkData data)
    {
        type = ChatChannel.World;
        data = null;
        bool isFound = false;
        foreach (var kvp in lastTalkDataDict)
        {
            ChatChannel channelType = kvp.Key;
            TalkData talkData = kvp.Value;
            bool isOpen = GetBulletSetting(channelType);
            if (!isOpen)
                continue;
            if (channelType == ChatChannel.Guild && !IsTabOpen(ChatTab.Guild, false))
                continue;
            if (data == null || talkData.TalkTime > data.TalkTime)
            {
                isFound = true;
                type = channelType;
                data = talkData;
            }
        }
        return isFound;
    }
    public void AddTalkData(ChatChannel type, TalkData data, bool isSendBullet)
    {
        //如果超过限制先删除旧数据
        TryDeleteTalkData(type);
@@ -377,13 +382,24 @@
            talkDict[type] = new List<TalkData>();
        }
        talkDict[type].Add(data);
        if (isSend)
        if (!lastTalkDataDict.ContainsKey(type) || lastTalkDataDict[type].TalkTime <= data.TalkTime)
        {
            OnUpdateTalkEvent?.Invoke(type, data);
            //展示的消息不能是日期行和系统行
            if (!data.isDate && !data.isSystem)
            {
                lastTalkDataDict[type] = data;
            }
        }
        if (isSendBullet)
        {
            OnUpdateTalkEvent?.Invoke(type, data, isSendBullet);
        }
    }
    public bool TryAddDate(int allSeconds, ChatChannel type, bool isSend)
    public int currentDay = -1;
    public bool TryAddDate(int allSeconds, ChatChannel type, bool isSendBullet)
    {
        DateTime talkTime = TimeUtility.GetTime((uint)allSeconds);
        if (talkTime.Day != currentDay)
@@ -395,17 +411,17 @@
                isDate = true,
                Content = Language.Get("Chat09", talkTime.Month, talkTime.Day),
                TalkTime = (uint)allSeconds,
            }, isSend);
            }, isSendBullet);
            return true;
        }
        return false;
    }
    public void AddSysData(string msg, ArrayList infoList, ChatChannel type, bool isSend)
    public void AddSysData(string msg, ArrayList infoList, ChatChannel type, bool isSendBullet)
    {
        int allSeconds = TimeUtility.AllSeconds;
        // 如果隔天,增加日期行
        TryAddDate(allSeconds, type, isSend);
        TryAddDate(allSeconds, type, isSendBullet);
        if (!talkDict.ContainsKey(type))
        {
@@ -419,7 +435,7 @@
            BubbleBox = 1,
            TalkTime = (uint)allSeconds,
            InfoList = new ArrayList(infoList),
        }, isSend);
        }, isSendBullet);
    }
    public void UpdateTalk(HB310_tagMCTalk vNetData)
@@ -592,6 +608,7 @@
    private Dictionary<ChatChannel, bool> bulletSettingDict = new Dictionary<ChatChannel, bool>();
    private string settingsKey { get { return StringUtility.Concat("BulletChatSettings_", PlayerDatas.Instance.PlayerId.ToString()); } }
    // 设置特定频道的弹幕开关状态
Main/System/Chat/ChatPlayerMineCell.cs
@@ -15,7 +15,7 @@
        if (!manager.TryGetChatData(ChatManager.Instance.nowChatChannel, cell.index, out TalkData data))
            return;
        m_ChatBubble.DisplayContent(data.Content, true);
        m_ChatBubble.DisplayContent(data.Content);
        int bubbleID = ChatBubbleHelper.GetMyChatBubbleID();
        m_ChatBubble.DisplayBubble(bubbleID, (int)PlayerDatas.Instance.baseData.PlayerID);
Main/System/Chat/ChatPlayerOtherCell.cs
@@ -16,7 +16,7 @@
        if (!manager.TryGetChatData(ChatManager.Instance.nowChatChannel, cell.index, out TalkData nowData) || nowData == null)
            return;
        m_ChatBubble.DisplayContent(nowData.Content, true);
        m_ChatBubble.DisplayContent(nowData.Content);
        bool hasNewPlayerInfo = manager.TryGetNewPlayerInfoByPlayerID(nowData.PlayerID, out TalkData newPlayerInfo);
        TalkData data = hasNewPlayerInfo ? newPlayerInfo : nowData;
Main/System/Chat/ChatSysCell.cs
@@ -15,7 +15,7 @@
            chatText.SetExtenalData(data.InfoList);
        }
        m_ChatBubble.DisplaySysBubble(manager.sysBubbleID, manager.sysBubbleColor);
        m_ChatBubble.DisplayContent(data.Content, true);
        m_ChatBubble.DisplayContent(data.Content);
    }
    public float GetHeight(string content, ArrayList list)
Main/System/Chat/ChatWin.cs
@@ -278,7 +278,7 @@
        CreaterAll(entrance);
    }
    private void OnUpdateTalkEvent(ChatChannel type, TalkData data)
    private void OnUpdateTalkEvent(ChatChannel type, TalkData data, bool isSendBullet)
    {
        RefreshAll(type, playerId: data.PlayerID);
    }
Main/System/Guild/GuildBaseWin.cs
@@ -87,7 +87,7 @@
        ShowGuildInfo();
    }
    private void OnUpdateTalkEvent(ChatChannel channel, TalkData data)
    private void OnUpdateTalkEvent(ChatChannel channel, TalkData data, bool isSendBullet)
    {
        if (channel != ChatChannel.Guild)
            return;
@@ -247,6 +247,7 @@
        }
    }
    List<TalkData> showTalkDatas = new List<TalkData>();
    void ShowTalkInfo()
    {
        if (!ChatManager.Instance.TryGetTalkData(ChatChannel.Guild, out List<TalkData> datas) || datas.IsNullOrEmpty())
@@ -254,15 +255,30 @@
            talkInfoText.text = string.Empty;
            return;
        }
        showTalkDatas.Clear();
        StringBuilder stringBuilder = new StringBuilder();
        int startIndex = Mathf.Max(datas.Count - 2, 0);
        for (int i = startIndex; i < datas.Count; i++)
        // 从后向前遍历,找到最后两条玩家消息(过滤掉系统消息和日期消息)
        int count = 0;
        for (int i = datas.Count - 1; i >= 0 && count < 2; i--)
        {
            TalkData data = datas[i];
            // 只保留玩家消息:非系统消息且非日期消息
            if (!data.isSystem && !data.isDate)
            {
                showTalkDatas.Insert(0, data); // 插入到列表开头以保持时间顺序
                count++;
            }
        }
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < showTalkDatas.Count; i++)
        {
            TalkData data = showTalkDatas[i];
            stringBuilder.Append(UIHelper.AppendColor(GetGuildChatAreaColor(data), GetGuildChatAreaContent(data)));
            stringBuilder.AppendLine();
        }
        talkInfoText.text = stringBuilder.ToString();
    }
}
Main/System/HeroUI/HeroUIManager.Reborn.cs
@@ -407,6 +407,12 @@
            return false;
        }
        if (hero.heroStar >= hero.GetCurMaxStar())
        {
            SysNotifyMgr.Instance.ShowTip("HeroDelete1");
            return false;
        }
        if (selectDeleteHeroList.Contains(hero.itemHero.guid))
        {
            selectDeleteHeroList.Remove(hero.itemHero.guid);
Main/System/Main/HomeWin.cs
@@ -73,8 +73,16 @@
    [SerializeField] Text horseLVText;
    //聊天
    [SerializeField] Button chatBtn;
    [SerializeField] Transform transChatInfo;
    [SerializeField] Transform transFastChat;
    [SerializeField] Button chatBtn;
    [SerializeField] Button chatBtn1;
    [SerializeField] ImageEx imgChatType;
    [SerializeField] TextEx txtChatType;
    [SerializeField] RichText txtChatInfo;
    [SerializeField] InputField inputFastChat;
    [SerializeField] ButtonEx btnFastChatSend;
    [SerializeField] ImageEx imgFastChatSend;
@@ -149,48 +157,41 @@
        horseBtn.AddListener(OpenHorse);
        chatBtn.SetListener(() =>
        {
            if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Chat, true))
                return;
        chatBtn.SetListener(OnClickChatBtn);
        chatBtn1.SetListener(OnClickChatBtn);
            transFastChat.SetActive(true);
            chatBtn.SetActive(false);
            UpdateChat(ChatManager.Instance.nowChatTab);
        // btnFastChatClose.SetListener(() =>
        // {
        //     transFastChat.SetActive(false);
        //     transChatInfo.SetActive(true);
        // });
        // btnChatWin.SetListener(() =>
        // {
        //     transFastChat.SetActive(false);
        //     transChatInfo.SetActive(true);
        //     UIManager.Instance.OpenWindow<ChatWin>();
        // });
        });
        btnFastChatClose.SetListener(() =>
        {
            transFastChat.SetActive(false);
            chatBtn.SetActive(true);
        });
        btnChatWin.SetListener(() =>
        {
            transFastChat.SetActive(false);
            chatBtn.SetActive(true);
            UIManager.Instance.OpenWindow<ChatWin>();
        });
        // btnFastChatSend.SetListener(() =>
        // {
        //     // 如果在聊天输入界面无输入文字点击发送,则关闭聊天输入界面
        //     if (string.IsNullOrEmpty(inputFastChat.text))
        //     {
        //         transFastChat.SetActive(false);
        //         transChatInfo.SetActive(true);
        //         return;
        //     }
        btnFastChatSend.SetListener(() =>
        {
            // 如果在聊天输入界面无输入文字点击发送,则关闭聊天输入界面
            if (string.IsNullOrEmpty(inputFastChat.text))
            {
                transFastChat.SetActive(false);
                chatBtn.SetActive(true);
                return;
            }
            if (!ChatManager.Instance.CheckChatLimit(inputFastChat.text, out int errorCode))
            {
                ChatManager.Instance.ShowChatErrorTip(errorCode);
                return;
            }
            ChatManager.Instance.SendChatInfo(ChatManager.Instance.nowChatChannel, inputFastChat.text);
            ChatManager.Instance.AddChatChannelSendTime(ChatManager.Instance.nowChatChannel, TimeUtility.AllSeconds);
            UpdateSendButton();
            inputFastChat.text = string.Empty;
        });
        //     if (!ChatManager.Instance.CheckChatLimit(inputFastChat.text, out int errorCode))
        //     {
        //         ChatManager.Instance.ShowChatErrorTip(errorCode);
        //         return;
        //     }
        //     ChatManager.Instance.SendChatInfo(ChatManager.Instance.nowChatChannel, inputFastChat.text);
        //     ChatManager.Instance.AddChatChannelSendTime(ChatManager.Instance.nowChatChannel, TimeUtility.AllSeconds);
        //     UpdateSendButton();
        //     inputFastChat.text = string.Empty;
        // });
        osMainLevelBtn.AddListener(() =>
        {
@@ -226,10 +227,11 @@
        DisplayHorse();
        DisplayChatBulletView();
        chatBtn.SetActive(true);
        transFastChat.SetActive(false);
        inputFastChat.characterLimit = ChatManager.Instance.characterLimit;
        UpdateSendButton();
        transChatInfo.SetActive(true);
        //transFastChat.SetActive(false);
        //inputFastChat.characterLimit = ChatManager.Instance.characterLimit;
        //UpdateSendButton();
        ShowChatInfo();
    }
    protected override void OnPreOpen()
@@ -252,6 +254,8 @@
        ChatManager.Instance.OnChatTabChangeEvent += OnChatTabChangeEvent;
        GuildManager.Instance.EnterOrQuitGuildEvent += EnterOrQuitGuildEvent;
        TimeMgr.Instance.OnDayEvent += OnDayEvent;
        ChatManager.Instance.OnUpdateTalkEvent += OnUpdateTalkEvent;
        UIManager.Instance.OnOpenWindow += OnOpenWindow;
        Display();
        DisplayFirstChargeBtn();
        DisplayOSActivity();
@@ -284,39 +288,124 @@
        ChatManager.Instance.OnChatTabChangeEvent -= OnChatTabChangeEvent;
        GuildManager.Instance.EnterOrQuitGuildEvent -= EnterOrQuitGuildEvent;
        TimeMgr.Instance.OnDayEvent -= OnDayEvent;
        ChatManager.Instance.OnUpdateTalkEvent -= OnUpdateTalkEvent;
        UIManager.Instance.OnOpenWindow -= OnOpenWindow;
        //  关闭的时候把战斗界面也给关了 虽然是在外面开的
        UIManager.Instance.CloseWindow<BattleWin>();
    }
    private void UpdateSendButton()
    private void OnOpenWindow(UIBase win)
    {
        bool isCanSend = ChatManager.Instance.IsCanSend(ChatManager.Instance.nowChatChannel, out int remainingSeconds);
        btnFastChatSend.interactable = isCanSend;
        imgFastChatSend.gray = !isCanSend;
        txtFastChatSend.text = isCanSend ? Language.Get("Chat11") : Language.Get("Chat14", remainingSeconds);
        txtFastChatSend.colorType = isCanSend ? TextColType.NavyBrown : TextColType.LightWhite;
        if (win is ChatWin)
        {
            transChatInfo.SetActive(false);
        }
    }
    private void OnUpdateTalkEvent(ChatChannel channel, TalkData data, bool isSendBullet)
    {
        ShowChatInfo();
    }
    private void OnClickChatBtn()
    {
        if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Chat, true))
            return;
        //transFastChat.SetActive(true);
        // transChatInfo.SetActive(false);
        // UpdateChat(ChatManager.Instance.nowChatTab);
        bool hasLastTalkData = ChatManager.Instance.TryGetLastTalkData(out ChatChannel type, out TalkData data);
        if (!hasLastTalkData)
        {
            ChatManager.Instance.nowChatTab = ChatTab.World;
            ChatManager.Instance.nowChatChannel = ChatChannel.World;
        }
        else
        {
            switch (type)
            {
                case ChatChannel.World:
                default:
                    ChatManager.Instance.nowChatTab = ChatTab.World;
                    ChatManager.Instance.nowChatChannel = ChatChannel.World;
                    break;
                case ChatChannel.Guild:
                    ChatManager.Instance.nowChatTab = ChatTab.Guild;
                    ChatManager.Instance.nowChatChannel = ChatChannel.Guild;
                    break;
            }
        }
        UIManager.Instance.OpenWindow<ChatWin>();
    }
    public string GetMainChatAreaContent(TalkData talkData)
    {
        int type = ChatManager.Instance.GetTalkDataType(talkData);
        if (type == 0)
        {
            return Language.Get("L1100", Language.Get("Chat13"), talkData.Content);
        }
        else if (type == 1)
        {
            return Language.Get("L1100", Language.Get("Chat13"), talkData.Content);
        }
        else
        {
            return Language.Get("L1100", talkData.Name, talkData.Content);
        }
    }
    private void ShowChatInfo()
    {
        bool hasLastTalkData = ChatManager.Instance.TryGetLastTalkData(out ChatChannel type, out TalkData data);
        if (!hasLastTalkData)
        {
            imgChatType.SetActive(false);
            txtChatInfo.text = string.Empty;
            return;
        }
        imgChatType.SetActive(true);
        txtChatType.text = Language.Get(StringUtility.Concat("ChatChannel", ((int)type).ToString()));
        imgChatType.SetSprite(StringUtility.Concat("ChatChannelBg", ((int)type).ToString()));
        if (data.InfoList != null)
        {
            txtChatInfo.SetExtenalData(data.InfoList);
        }
        txtChatInfo.text = GetMainChatAreaContent(data);
    }
    // private void UpdateSendButton()
    // {
    //     bool isCanSend = ChatManager.Instance.IsCanSend(ChatManager.Instance.nowChatChannel, out int remainingSeconds);
    //     btnFastChatSend.interactable = isCanSend;
    //     imgFastChatSend.gray = !isCanSend;
    //     txtFastChatSend.text = isCanSend ? Language.Get("Chat11") : Language.Get("Chat14", remainingSeconds);
    //     txtFastChatSend.colorType = isCanSend ? TextColType.NavyBrown : TextColType.LightWhite;
    // }
    private void EnterOrQuitGuildEvent(bool obj)
    {
        if (!obj)
        {
            UpdateChat(ChatManager.Instance.nowChatTab);
            ShowChatInfo();
            //UpdateChat(ChatManager.Instance.nowChatTab);
        }
    }
    private void OnChatTabChangeEvent(ChatTab tab)
    {
        UpdateChat(tab);
        //UpdateChat(tab);
    }
    void UpdateChat(ChatTab tab)
    {
        txtChatChannel.text = ChatManager.Instance.GetChatTabName(tab);
    }
    // void UpdateChat(ChatTab tab)
    // {
    //     txtChatChannel.text = ChatManager.Instance.GetChatTabName(tab);
    // }
    void DisplayChatBulletView()
    {
@@ -523,6 +612,12 @@
        {
            DisplayCard(TeamType.Story);
        }
        if (closeUI is ChatWin)
        {
            transChatInfo.SetActive(true);
        }
    }
@@ -661,7 +756,7 @@
    private void OnSecondEvent()
    {
        DisplayFirstChargeBtn();
        UpdateSendButton();
        //UpdateSendButton();
    }
    void OnUnLockHeroCountEvent()
Main/Utility/OperationLogCollect.cs
@@ -170,7 +170,10 @@
            tables["Title"] = "system";
            _content = _content.Replace("0000", "");
            if (ConfigManager.Instance.isLoadFinished && DTC0102_tagCDBPlayer.playerIdBuf != 0 && LoginManager.Instance.sdkLoginResult != null && !string.IsNullOrEmpty(LoginManager.Instance.sdkLoginResult.account))
                _content = LoginManager.Instance.sdkLoginResult.account + _content;
            {
                _content = StringUtility.Concat(LoginManager.Instance.sdkLoginResult.account, "@", ServerListCenter.Instance.currentServer.region_flag.ToString(), " ", _content);
            }
            tables["Content"] = _content.Substring(0, Math.Min(800, _content.Length));
            tables["ClientInfo"] = contentPrefix;
@@ -187,30 +190,30 @@
    const string chatReportUrl = "http://xssgcenter.secondworld.net.cn:11000/center/eventreport.php?";
    public void ChatReport(string content, string channelName, string toPlayer, int chatType)
    {
#if !UNITY_EDITOR
        bool isFairy = false; //chatType == ChatInfoType.Fairy;
        var tables = new Dictionary<string, string>();
        tables["ProductID"] = VersionConfig.Get().gameId;
        tables["OperatorID"] = VersionConfig.Get().appId;
        tables["OperatorName"] = string.Empty;
        tables["RegionName"] = StringUtility.Concat("s", ServerListCenter.Instance.currentServer.region_flag);
        tables["RegionID"] = ServerListCenter.Instance.currentServer.region_flag.ToString();
        tables["EventID"] = 9003.ToString();
        tables["Time"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
        tables["IP"] = DeviceUtility.GetIp();
        tables["ChatChannel"] = channelName;
        var sdkLoginResult = ModelCenter.Instance.GetModel<LoginModel>().sdkLoginResult;
        tables["AccountID"] = sdkLoginResult == null ? string.Empty : sdkLoginResult.account;
        tables["RoleID"] = StringUtility.Concat(isFairy ? UIHelper.ServerStringTrim(PlayerDatas.Instance.baseData.FamilyName) : string.Empty,
           isFairy ? "-" : string.Empty, UIHelper.ServerStringTrim(PlayerDatas.Instance.baseData.PlayerName));
        tables["ToRoleID"] = UIHelper.ServerStringTrim(toPlayer);
        tables["Level"] = PlayerDatas.Instance.baseData.LV.ToString();
        tables["VIPLevel"] = PlayerDatas.Instance.baseData.VIPLv.ToString();
        tables["Content"] = WWW.EscapeURL(UIHelper.TrimContentToServer(content));
        tables["DeviceFlag"] = ynmbxxjUtil.Instance.Device == null ? string.Empty : ynmbxxjUtil.Instance.Device.uniqueID;
// #if !UNITY_EDITOR
//         bool isFairy = false; //chatType == ChatInfoType.Fairy;
//         var tables = new Dictionary<string, string>();
//         tables["ProductID"] = VersionConfig.Get().gameId;
//         tables["OperatorID"] = VersionConfig.Get().appId;
//         tables["OperatorName"] = string.Empty;
//         tables["RegionName"] = StringUtility.Concat("s", ServerListCenter.Instance.currentServer.region_flag);
//         tables["RegionID"] = ServerListCenter.Instance.currentServer.region_flag.ToString();
//         tables["EventID"] = 9003.ToString();
//         tables["Time"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
//         tables["IP"] = DeviceUtility.GetIp();
//         tables["ChatChannel"] = channelName;
//         var sdkLoginResult = ModelCenter.Instance.GetModel<LoginModel>().sdkLoginResult;
//         tables["AccountID"] = sdkLoginResult == null ? string.Empty : sdkLoginResult.account;
//         tables["RoleID"] = StringUtility.Concat(isFairy ? UIHelper.ServerStringTrim(PlayerDatas.Instance.baseData.FamilyName) : string.Empty,
//            isFairy ? "-" : string.Empty, UIHelper.ServerStringTrim(PlayerDatas.Instance.baseData.PlayerName));
//         tables["ToRoleID"] = UIHelper.ServerStringTrim(toPlayer);
//         tables["Level"] = PlayerDatas.Instance.baseData.LV.ToString();
//         tables["VIPLevel"] = PlayerDatas.Instance.baseData.VIPLv.ToString();
//         tables["Content"] = WWW.EscapeURL(UIHelper.TrimContentToServer(content));
//         tables["DeviceFlag"] = ynmbxxjUtil.Instance.Device == null ? string.Empty : ynmbxxjUtil.Instance.Device.uniqueID;
        HttpRequest.Instance.RequestHttpGet(StringUtility.Concat(chatReportUrl, HttpRequest.HashtablaToString(tables)), HttpRequest.defaultHttpContentType);
#endif
//         HttpRequest.Instance.RequestHttpGet(StringUtility.Concat(chatReportUrl, HttpRequest.HashtablaToString(tables)), HttpRequest.defaultHttpContentType);
// #endif
    }
}