using System;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace Snxxz.UI
|
{
|
public class FriendTips : MonoBehaviour
|
{
|
[SerializeField] ScrollerController typeCtrl;
|
[SerializeField] Button searchBtn;
|
[SerializeField] GameObject searchBackIcon;
|
[SerializeField] InputField inputField;
|
[SerializeField] GameObject searchObj;
|
[SerializeField] PlayerInfoCell playerInfoCell;
|
[SerializeField] GameObject contactlistObj;
|
[SerializeField] Button recommendBtn;
|
[SerializeField] GameObject chatSendObj;
|
[SerializeField] ChatContentBehaviour chatBeh;
|
[SerializeField] Text speakOtherNameText;
|
[SerializeField] GameObject selectFriendObj;
|
[SerializeField] GameObject unSelectFriendObj;
|
|
List<GroupType> typelist = new List<GroupType>();
|
|
public static GroupType lookGroupType = GroupType.None;
|
public static int selectPlayerId = 0;
|
Dictionary<uint, FriendPlayer> lookPlayerInfoDict = null;
|
FriendsModel _friendsModel;
|
FriendsModel friendsModel
|
{
|
get
|
{
|
return _friendsModel ?? (_friendsModel = ModelCenter.Instance.GetModel<FriendsModel>());
|
}
|
}
|
|
private void Awake()
|
{
|
typeCtrl.OnRefreshCell += RefreshCell;
|
typelist.Clear();
|
typelist.Add(GroupType.RecentContact);
|
typelist.Add(GroupType.Friend);
|
typelist.Add(GroupType.Enemy);
|
typelist.Add(GroupType.Balcklist);
|
}
|
|
private void OnEnable()
|
{
|
speakOtherNameText.text = "";
|
friendsModel.RefreshFriendModel += RefreshFriendInfo;
|
friendsModel.RefreshFriendCntEvent += RefreshFriendCnt;
|
ChatCtrl.Inst.presentChatType = ChatInfoType.Friend;
|
chatBeh.chatType = ChatInfoType.Friend;
|
lookPlayerInfoDict = null;
|
lookGroupType = GroupType.None;
|
CreateCell();
|
friendsModel.OnSendCA9A3_tagCGQueryRecommendFriends();
|
searchBtn.AddListener(ClickSearchBtn);
|
recommendBtn.AddListener(ClickRecommendBtn);
|
searchObj.SetActive(false);
|
contactlistObj.SetActive(true);
|
searchBackIcon.SetActive(false);
|
SetDefaultSelect();
|
}
|
|
private void OnDisable()
|
{
|
friendsModel.RefreshFriendModel -= RefreshFriendInfo;
|
friendsModel.RefreshFriendCntEvent -= RefreshFriendCnt;
|
recommendBtn.RemoveAllListeners();
|
searchBtn.RemoveAllListeners();
|
lookGroupType = GroupType.None;
|
selectPlayerId = 0;
|
}
|
|
private void SetDefaultSelect()
|
{
|
bool isSelect = false;
|
for (int i = 0; i < typelist.Count; i++)
|
{
|
var type = typelist[i];
|
lookPlayerInfoDict = friendsModel.GetFriendInfoDict((byte)type);
|
switch (type)
|
{
|
case GroupType.RecentContact:
|
case GroupType.Friend:
|
if (lookPlayerInfoDict != null && lookPlayerInfoDict.Count > 0)
|
{
|
ClickTypeBtn(type);
|
foreach (var key in lookPlayerInfoDict.Keys)
|
{
|
var playerName = lookPlayerInfoDict[key].PlayerName;
|
ClickPlayer((int)key,playerName);
|
isSelect = true;
|
break;
|
}
|
}
|
break;
|
}
|
if(isSelect)
|
{
|
return;
|
}
|
}
|
}
|
|
private void RefreshFriendInfo()
|
{
|
CreateCell();
|
}
|
|
private void RefreshFriendCnt(GroupType type, bool addFriendPlayer)
|
{
|
CreateCell();
|
}
|
|
private void CreateCell()
|
{
|
|
typeCtrl.Refresh();
|
lookPlayerInfoDict = null;
|
for (int i = 0; i < typelist.Count; i++)
|
{
|
typeCtrl.AddCell(ScrollerDataType.Header,i);
|
if(lookGroupType == typelist[i])
|
{
|
lookPlayerInfoDict = friendsModel.GetFriendInfoDict((byte)lookGroupType);
|
if(lookPlayerInfoDict != null)
|
{
|
foreach (var id in lookPlayerInfoDict.Keys)
|
{
|
typeCtrl.AddCell(ScrollerDataType.Normal, (int)id);
|
}
|
}
|
|
}
|
}
|
typeCtrl.Restart();
|
|
if(selectPlayerId != 0)
|
{
|
selectFriendObj.SetActive(true);
|
unSelectFriendObj.SetActive(false);
|
}
|
else
|
{
|
selectFriendObj.SetActive(false);
|
unSelectFriendObj.SetActive(true);
|
ChatCtrl.Inst.PteChatID = 0;
|
ChatCtrl.Inst.PteChatName = string.Empty;
|
LanguageVerify.toPlayerLevel = 0;
|
}
|
}
|
|
private void RefreshCell(ScrollerDataType type, CellView cell)
|
{
|
switch (type)
|
{
|
case ScrollerDataType.Header:
|
GroupType groupType = typelist[cell.index];
|
ContactType contactType = cell.GetComponent<ContactType>();
|
Button typeBtn = cell.GetComponent<Button>();
|
contactType.Init(groupType,lookGroupType);
|
typeBtn.RemoveAllListeners();
|
typeBtn.AddListener(()=> { ClickTypeBtn(groupType); });
|
break;
|
case ScrollerDataType.Normal:
|
PlayerInfoCell infoCell = cell.GetComponent<PlayerInfoCell>();
|
Button infoBtn = cell.GetComponent<Button>();
|
infoCell.Init(cell.index,lookGroupType,selectPlayerId);
|
string playerName = lookPlayerInfoDict[(uint)cell.index].PlayerName;
|
infoBtn.RemoveAllListeners();
|
infoBtn.AddListener(()=> { ClickPlayer(cell.index, playerName); });
|
break;
|
}
|
}
|
|
private void ClickTypeBtn(GroupType groupType)
|
{
|
|
if (lookGroupType != groupType)
|
{
|
lookGroupType = groupType;
|
}
|
else
|
{
|
lookGroupType = GroupType.None;
|
}
|
speakOtherNameText.text = "";
|
selectPlayerId = 0;
|
CreateCell();
|
}
|
|
private void ClickPlayer(int playerId,string playerName)
|
{
|
if (playerId == selectPlayerId) return;
|
|
selectFriendObj.SetActive(true);
|
unSelectFriendObj.SetActive(false);
|
selectPlayerId = playerId;
|
typeCtrl.m_Scorller.RefreshActiveCellViews();
|
ChatCtrl.Inst.PteChatID = playerId;
|
ChatCtrl.Inst.PteChatName = playerName;
|
speakOtherNameText.text = Language.Get("Friend107", UIHelper.ServerStringTrim(playerName));
|
|
friendsModel.RemoveFriendRed(lookGroupType,playerId);
|
}
|
|
|
private void ClickSearchBtn()
|
{
|
if(string.IsNullOrEmpty(inputField.text.Trim()))
|
{
|
SysNotifyMgr.Instance.ShowTip("NoPlayerName");
|
return;
|
}
|
|
speakOtherNameText.text = "";
|
if (!searchObj.activeInHierarchy)
|
{
|
searchObj.SetActive(true);
|
contactlistObj.SetActive(false);
|
searchBackIcon.SetActive(true);
|
}
|
else
|
{
|
lookGroupType = GroupType.None;
|
selectPlayerId = 0;
|
searchObj.SetActive(false);
|
contactlistObj.SetActive(true);
|
searchBackIcon.SetActive(false);
|
CreateCell();
|
return;
|
}
|
|
Dictionary<byte,Dictionary<uint,FriendPlayer>> groupDict = friendsModel.GetGroupAllInfo();
|
|
int playerId = 0;
|
string playerName = "";
|
int playerLevel = 0;
|
GroupType groupType = GroupType.None;
|
|
foreach(var type in groupDict.Keys)
|
{
|
foreach(var id in groupDict[type].Keys)
|
{
|
FriendPlayer friendPlayer = friendsModel.GetFirendInfo(id,type);
|
if(UIHelper.ServerStringTrim(friendPlayer.PlayerName).Contains(inputField.text.Trim()))
|
{
|
playerLevel = friendPlayer.LV;
|
playerName = friendPlayer.PlayerName;
|
playerId = (int)id;
|
groupType = (GroupType)type;
|
break;
|
}
|
}
|
|
if(playerId != 0)
|
{
|
break;
|
}
|
}
|
|
if(playerId != 0)
|
{
|
playerInfoCell.gameObject.SetActive(true);
|
playerInfoCell.Init(playerId,groupType);
|
Button button = playerInfoCell.GetComponent<Button>();
|
button.RemoveAllListeners();
|
button.AddListener(()=>
|
{
|
|
selectFriendObj.SetActive(true);
|
unSelectFriendObj.SetActive(false);
|
ChatCtrl.Inst.PteChatID = playerId;
|
ChatCtrl.Inst.PteChatName = playerName;
|
LanguageVerify.toPlayerLevel = playerLevel;
|
playerInfoCell.Init(playerId, groupType,playerId);
|
speakOtherNameText.text = Language.Get("Friend107", UIHelper.ServerStringTrim(playerName));
|
});
|
}
|
else
|
{
|
|
selectFriendObj.SetActive(false);
|
unSelectFriendObj.SetActive(true);
|
playerInfoCell.gameObject.SetActive(false);
|
}
|
|
}
|
|
|
private void ClickRecommendBtn()
|
{
|
WindowCenter.Instance.Open<AddFriendWin>();
|
}
|
}
|
}
|