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