//-------------------------------------------------------- 
 | 
//    [Author]:           玩个游戏 
 | 
//    [  Date ]:           Monday, April 09, 2018 
 | 
//-------------------------------------------------------- 
 | 
  
 | 
using System; 
 | 
using System.Collections; 
 | 
using System.Collections.Generic; 
 | 
  
 | 
using UnityEngine; 
 | 
using UnityEngine.UI; 
 | 
  
 | 
  
 | 
    public class ChatWin : UIBase 
 | 
    { 
 | 
        [SerializeField] Button m_CloseBtn; 
 | 
        [SerializeField] Text m_ChatTip; 
 | 
        [SerializeField] ChatSendComponent m_ChatSend; 
 | 
        [SerializeField] ScrollerController m_ChannelControl; 
 | 
        [SerializeField] ChatContentBehaviour m_ChatContent; 
 | 
        [SerializeField] ChatRecently m_ChatRecently; 
 | 
        [SerializeField] Button m_ChannelBtn; 
 | 
        [SerializeField] Text m_ChannelInfo; 
 | 
  
 | 
  
 | 
        protected override void InitComponent() 
 | 
        { 
 | 
            m_CloseBtn.onClick.AddListener(OnClose); 
 | 
            m_ChannelBtn.onClick.AddListener(OnChannelBtn); 
 | 
        } 
 | 
  
 | 
        protected override void OnPreOpen() 
 | 
        { 
 | 
            if (!IsSatisfyShowChannel(ChatManager.Instance.presentChatType)) 
 | 
            { 
 | 
                ChatManager.Instance.presentChatType = ChatInfoType.System; 
 | 
            } 
 | 
  
 | 
            // m_ChatSend.parent = this; 
 | 
            ChatManager.Instance.lockUpdate = false; 
 | 
            ChatManager.Instance.OnPteChatChangeEvent += OnPteChatChangeEvent; 
 | 
            ChatManager.Instance.OpenPteChatEvent += OpenPteChatEvent; 
 | 
            DisplayChannel(); 
 | 
            OnChatTypeChange(); 
 | 
            ChatCenter.Instance.UpdateChatContentPos(); 
 | 
        } 
 | 
  
 | 
        protected override void OnOpen() 
 | 
        { 
 | 
            AchievementRandomWord(); 
 | 
            if (ChatManager.Instance.openFromDaily) 
 | 
            { 
 | 
                AssitRandomChat(); 
 | 
                ChatManager.Instance.needCheckAssitChat = true; 
 | 
            } 
 | 
            else if (ChatManager.Instance.openFromGem) 
 | 
            { 
 | 
                string chat = Language.Get("ThanksGift" + UnityEngine.Random.Range(1, 4)); 
 | 
                if (chat != string.Empty) 
 | 
                { 
 | 
                    ChatCenter.Instance.ChangeChatValue(chat, false, true); 
 | 
                } 
 | 
            } 
 | 
            else if (ChatManager.Instance.openFromFairyTask) 
 | 
            { 
 | 
                TaskRandomChat(); 
 | 
            } 
 | 
            ChatManager.Instance.openFromDaily = false; 
 | 
            ChatManager.Instance.openFromGem = false; 
 | 
            ChatManager.Instance.openFromFairyTask = false; 
 | 
        } 
 | 
  
 | 
        protected override void OnPreClose() 
 | 
        { 
 | 
            ChatManager.Instance.OnPteChatChangeEvent -= OnPteChatChangeEvent; 
 | 
            ChatManager.Instance.OpenPteChatEvent -= OpenPteChatEvent; 
 | 
            ChatManager.Instance.openFromDaily = false; 
 | 
            ChatManager.Instance.openFromGem = false; 
 | 
            ChatManager.Instance.needCheckAssitChat = false; 
 | 
            ChatManager.Instance.openFromFairyTask = false; 
 | 
            //ChatCenter.Instance.ChangeChatValue(string.Empty, false, true); 
 | 
            //ChatManager.Instance.itemPlaceList.Clear(); 
 | 
        } 
 | 
  
 | 
        protected override void OnClose() 
 | 
        { 
 | 
        } 
 | 
  
 | 
        private void OpenPteChatEvent() 
 | 
        { 
 | 
            OnChannelSelect(ChatInfoType.Friend); 
 | 
        } 
 | 
  
 | 
        private void DisplayChannel() 
 | 
        { 
 | 
            m_ChannelControl.Refresh(); 
 | 
            for (int i = 0; i < ChatCenter.Instance.chatChannels.Count; i++) 
 | 
            { 
 | 
                if (IsSatisfyShowChannel(ChatCenter.Instance.chatChannels[i])) 
 | 
                { 
 | 
                    m_ChannelControl.AddCell(ScrollerDataType.Normal, (int)ChatCenter.Instance.chatChannels[i], OnChannelSelect); 
 | 
                } 
 | 
            } 
 | 
            m_ChannelControl.Restart(); 
 | 
  
 | 
            m_ChannelControl.JumpIndex(Math.Min((int)ChatManager.Instance.presentChatType, m_ChannelControl.GetNumberOfCells(m_ChannelControl.m_Scorller) - 1)); 
 | 
  
 | 
        } 
 | 
  
 | 
        private bool IsSatisfyShowChannel(ChatInfoType channel) 
 | 
        { 
 | 
  
 | 
            return true; 
 | 
        } 
 | 
  
 | 
        private void OnPteChatChangeEvent() 
 | 
        { 
 | 
            if (ChatManager.Instance.presentChatType == ChatInfoType.Friend) 
 | 
            { 
 | 
                OnChatTypeChange(); 
 | 
            } 
 | 
        } 
 | 
  
 | 
        private void OnChatTypeChange() 
 | 
        { 
 | 
            m_ChannelBtn.SetActive(false); 
 | 
            m_ChannelInfo.SetActive(false); 
 | 
            m_ChatSend.placeholder.text= Language.Get("L1111"); 
 | 
            m_CloseBtn.SetActive(ChatManager.Instance.presentChatType != ChatInfoType.Friend); 
 | 
            switch (ChatManager.Instance.presentChatType) 
 | 
            { 
 | 
                case ChatInfoType.Trumpet: 
 | 
                    m_ChatRecently.SetActive(false); 
 | 
                    m_ChatTip.SetActive(false); 
 | 
                    m_ChatSend.SetActive(true); 
 | 
                    m_ChatSend.placeholder.text = Language.Get("L1012"); 
 | 
                    break; 
 | 
                case ChatInfoType.Invite: 
 | 
                case ChatInfoType.System: 
 | 
                    m_ChatRecently.SetActive(false); 
 | 
                    m_ChatTip.text = Language.Get("L1109"); 
 | 
                    m_ChatTip.SetActive(true); 
 | 
                    m_ChatSend.SetActive(false); 
 | 
                    break; 
 | 
                case ChatInfoType.World: 
 | 
                case ChatInfoType.Area: 
 | 
                case ChatInfoType.CrossServer: 
 | 
                case ChatInfoType.default1: 
 | 
                    m_ChatRecently.SetActive(false); 
 | 
                    m_ChatTip.SetActive(false); 
 | 
                    m_ChatSend.SetActive(true); 
 | 
                    break; 
 | 
                case ChatInfoType.Team: 
 | 
                    // TODO YYL 
 | 
                    // m_ChatRecently.SetActive(false); 
 | 
                    // var _team = ModelCenter.Instance.GetModel<TeamModel>().myTeam; 
 | 
                    // m_ChatSend.SetActive(_team.teamId > 0); 
 | 
                    // m_ChatTip.SetActive(_team.teamId <= 0); 
 | 
                    // m_ChatTip.text = Language.Get("L1110"); 
 | 
                    break; 
 | 
                case ChatInfoType.Fairy: 
 | 
                    // TODO YYL 
 | 
                    // m_ChatRecently.SetActive(false); 
 | 
                    // m_ChannelBtn.SetActive(!PlayerDatas.Instance.fairyData.HasFairy); 
 | 
                    // m_ChannelInfo.SetActive(!PlayerDatas.Instance.fairyData.HasFairy); 
 | 
                    // m_ChatTip.SetActive(!PlayerDatas.Instance.fairyData.HasFairy); 
 | 
                    // m_ChatSend.SetActive(PlayerDatas.Instance.fairyData.HasFairy); 
 | 
                    // if (!PlayerDatas.Instance.fairyData.HasFairy) 
 | 
                    // { 
 | 
                    //     m_ChatTip.text = Language.Get("L1011"); 
 | 
                    // } 
 | 
                    break; 
 | 
                case ChatInfoType.Friend: 
 | 
                    m_ChatSend.SetActive(true); 
 | 
                    m_ChatTip.SetActive(false); 
 | 
                    if (!m_ChatRecently.gameObject.activeSelf) 
 | 
                    { 
 | 
                        m_ChatRecently.SetActive(true); 
 | 
                    } 
 | 
                    break; 
 | 
            } 
 | 
            m_ChatContent.chatType = ChatManager.Instance.presentChatType; 
 | 
            ChatManager.Instance.ViewChat(ChatManager.Instance.presentChatType); 
 | 
        } 
 | 
  
 | 
        private void OnChannelSelect(CellView _cell) 
 | 
        { 
 | 
            if ((ChatInfoType)_cell.index == ChatInfoType.CrossServer) 
 | 
            { 
 | 
                if (!FuncOpen.Instance.IsFuncOpen(162)) 
 | 
                { 
 | 
                    SysNotifyMgr.Instance.ShowTip("CrossServerHint"); 
 | 
                    return; 
 | 
                } 
 | 
            } 
 | 
            OnChannelSelect((ChatInfoType)_cell.index); 
 | 
        } 
 | 
  
 | 
        private void OnChannelSelect(ChatInfoType _type) 
 | 
        { 
 | 
            ChatManager.Instance.presentChatType = _type; 
 | 
            m_ChannelControl.m_Scorller.RefreshActiveCellViews(); 
 | 
            if (_type == ChatInfoType.Friend) 
 | 
            { 
 | 
                ChatManager.Instance.lockUpdate = true; 
 | 
            } 
 | 
            else 
 | 
            { 
 | 
                ChatManager.Instance.lockUpdate = false; 
 | 
            } 
 | 
            OnChatTypeChange(); 
 | 
            ChatCenter.Instance.UpdateChatContentPos(); 
 | 
        } 
 | 
  
 | 
        private void OnChannelBtn() 
 | 
        { 
 | 
            switch (ChatManager.Instance.presentChatType) 
 | 
            { 
 | 
                case ChatInfoType.Fairy: 
 | 
                    { 
 | 
                        int limit = FuncOpenLVConfig.Get((int)FuncOpenEnum.Fairy).LimitLV; 
 | 
                        if (PlayerDatas.Instance.baseData.LV < limit) 
 | 
                        { 
 | 
                            ServerTipDetails.DisplayNormalTip(Language.Get("L1136", limit)); 
 | 
                            return; 
 | 
                        } 
 | 
                        CloseWindow(); 
 | 
                        // TODO YYL 
 | 
                        // WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.UnionFunc3); 
 | 
                    } 
 | 
                    break; 
 | 
            } 
 | 
        } 
 | 
  
 | 
        private void AchievementRandomWord() 
 | 
        { 
 | 
            // TODO YYL 
 | 
            // if (AchievementGoto.achievementType != AchievementGoto.RandomFairyChat 
 | 
            //     && AchievementGoto.achievementType != AchievementGoto.RandomWorldChat) 
 | 
            // { 
 | 
            //     return; 
 | 
            // } 
 | 
            // AchievementGoto.achievementType = 0; 
 | 
            // if (AchievementGoto.achievementType == AchievementGoto.RandomFairyChat && !PlayerDatas.Instance.fairyData.HasFairy) 
 | 
            // { 
 | 
            //     return; 
 | 
            // } 
 | 
            // if (ChatManager.Instance.achievementRandoms.ContainsKey(ChatManager.Instance.presentChatType)) 
 | 
            // { 
 | 
            //     var _list = ChatManager.Instance.achievementRandoms[ChatManager.Instance.presentChatType]; 
 | 
            //     int _index = UnityEngine.Random.Range(0, _list.Count); 
 | 
            //     ChatCenter.Instance.ChangeChatValue(Language.Get(_list[_index]), false, true); 
 | 
            // } 
 | 
            // var _effect = AchievementGuideEffectPool.Require(1); 
 | 
            // _effect.transform.SetParentEx(m_ChatSend.sendBtn.transform, Vector3.zero, Vector3.zero, Vector3.one); 
 | 
        } 
 | 
  
 | 
        private void AssitRandomChat() 
 | 
        { 
 | 
            ChatCenter.Instance.ChangeChatValue(ChatManager.Instance.GetAssitRandomChat(ChatManager.Instance.presentChatType), false, true); 
 | 
        } 
 | 
  
 | 
        private void TaskRandomChat() 
 | 
        { 
 | 
            ChatCenter.Instance.ChangeChatValue(ChatManager.Instance.GetTaskRandomChat(ChatManager.Instance.presentChatType), false, true); 
 | 
        } 
 | 
  
 | 
        private void GemFlauntChat() 
 | 
        { 
 | 
            // TODO YYL 
 | 
            // ChatCenter.Instance.ChangeChatValue(ChatManager.Instance.GetGemFlauntChat(), false, true); 
 | 
            // var _effect = AchievementGuideEffectPool.Require(1); 
 | 
            // _effect.transform.SetParentEx(m_ChatSend.sendBtn.transform, Vector3.zero, Vector3.zero, Vector3.one); 
 | 
        } 
 | 
  
 | 
    } 
 |