| //-------------------------------------------------------- | 
| //    [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); | 
|         } | 
|   | 
|     } |