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