yyl
2025-12-22 2a845f0babe52ac324b3cbe294db7dcec9346042
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()