using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace Snxxz.UI
|
{
|
public class AddFriendWin : Window, SecondWindowInterface
|
{
|
[SerializeField] ScrollerController addCtrl;
|
[SerializeField] Button refreshBtn;
|
[SerializeField] Image refreshImg;
|
[SerializeField] Text refreshText;
|
[SerializeField] InputField inputField;
|
[SerializeField] Button searchBtn;
|
[SerializeField] GameObject addplayerObj;
|
[SerializeField] GameObject lookPlayerObj;
|
[SerializeField] Button backBtn1;
|
[SerializeField] Button backBtn2;
|
[SerializeField] Button backBtn3;
|
[SerializeField] GameObject noRecommedPlayer;
|
|
FriendsModel friendsModel { get { return ModelCenter.Instance.GetModel<FriendsModel>(); } }
|
|
Color32 brightColor = new Color32(51, 8, 0, 255);
|
Color32 greyColor = new Color32(247, 247, 247, 255);
|
|
List<uint> recommendIdlist = null;
|
bool isAddFriend = true;
|
public Button close { get; set; }
|
|
protected override void BindController()
|
{
|
if (this is SecondWindowInterface)
|
{
|
var frame = this.GetComponentInChildren<SecondFrameLoader>();
|
frame.Create();
|
close = frame.GetComponentInChildren<Button>();
|
}
|
}
|
|
protected override void AddListeners()
|
{
|
addCtrl.OnRefreshCell += RefreshAddCell;
|
close.AddListener(CloseClick);
|
refreshBtn.AddListener(ClickRefreshBtn);
|
searchBtn.AddListener(ClickSearchBtn);
|
backBtn1.AddListener(ClickBackBtn);
|
backBtn2.AddListener(ClickBackBtn);
|
backBtn3.AddListener(ClickBackBtn);
|
}
|
|
protected override void OnPreOpen()
|
{
|
isAddFriend = true;
|
friendsModel.RefreshRecommendFriendEvent += RefreshRecommendModel;
|
RefreshRecommendModel();
|
}
|
|
protected override void OnAfterOpen()
|
{
|
TimeDownMgr.CoolTimeData data;
|
if (TimeDownMgr.Instance.Get(TimeDownMgr.CoolTimeType.BagSort, out data))
|
{
|
data.func = RefreshTime;
|
refreshImg.SetSprite("BlackBtn");
|
refreshText.color = greyColor;
|
refreshText.text = Language.Get("FriendsPlayer101", Mathf.CeilToInt(data.duration - data.time));
|
refreshBtn.interactable = false;
|
}
|
else
|
{
|
refreshText.color = brightColor;
|
refreshImg.SetSprite("LevelButton3");
|
refreshText.text = Language.Get("FriendsPlayer102");
|
refreshBtn.interactable = true;
|
}
|
}
|
|
protected override void OnPreClose()
|
{
|
friendsModel.RefreshRecommendFriendEvent -= RefreshRecommendModel;
|
}
|
|
protected override void OnAfterClose()
|
{
|
|
}
|
|
private void RefreshTime(float time)
|
{
|
if (time <= 0)
|
{
|
refreshImg.SetSprite("LevelButton3");
|
refreshText.text = Language.Get("FriendsPlayer102");
|
refreshBtn.interactable = true;
|
refreshText.color = brightColor;
|
}
|
else
|
{
|
refreshText.text = Language.Get("FriendsPlayer101", time);
|
refreshBtn.interactable = false;
|
refreshText.color = greyColor;
|
}
|
|
}
|
|
private void RefreshRecommendModel()
|
{
|
recommendIdlist = friendsModel.GetRecommendDict().Keys.ToList();
|
CreateCell();
|
if (recommendIdlist.Count > 0)
|
{
|
noRecommedPlayer.SetActive(false);
|
}
|
else
|
{
|
noRecommedPlayer.SetActive(true);
|
}
|
}
|
|
private void CreateCell()
|
{
|
if (isAddFriend)
|
{
|
addplayerObj.SetActive(true);
|
lookPlayerObj.SetActive(false);
|
}
|
else
|
{
|
addplayerObj.SetActive(false);
|
lookPlayerObj.SetActive(true);
|
}
|
|
int remain = recommendIdlist.Count % 2;
|
int line = recommendIdlist.Count / 2;
|
if (remain > 0)
|
{
|
line += 1;
|
}
|
addCtrl.Refresh();
|
for (int i = 0; i < line; i++)
|
{
|
addCtrl.AddCell(ScrollerDataType.Header, i);
|
}
|
addCtrl.Restart();
|
}
|
|
private void RefreshAddCell(ScrollerDataType type, CellView cell)
|
{
|
int childCnt = cell.transform.childCount;
|
for (int i = 0; i < childCnt; i++)
|
{
|
GameObject cellObj = cell.transform.GetChild(i).gameObject;
|
int addCellIndex = childCnt * cell.index + (i + 1);
|
if (recommendIdlist.Count >= addCellIndex)
|
{
|
cellObj.SetActive(true);
|
AddCell addCell = cellObj.GetComponent<AddCell>();
|
uint playerId = recommendIdlist[addCellIndex - 1];
|
addCell.Init((int)playerId);
|
addCell.addBtn.RemoveAllListeners();
|
addCell.addBtn.AddListener(() => { OnClickAddBtn(playerId); });
|
}
|
else
|
{
|
cellObj.SetActive(false);
|
}
|
}
|
}
|
|
private void OnClickAddBtn(uint playerId)
|
{
|
friendsModel.OnClickAddFriend(playerId);
|
if (recommendIdlist.Count > 1)
|
{
|
recommendIdlist.Remove(playerId);
|
CreateCell();
|
}
|
else
|
{
|
friendsModel.OnSendCA9A3_tagCGQueryRecommendFriends();
|
}
|
|
}
|
|
|
private void ClickRefreshBtn()
|
{
|
friendsModel.OnSendCA9A3_tagCGQueryRecommendFriends();
|
TimeDownMgr.Instance.Begin(TimeDownMgr.CoolTimeType.BagSort, 5.0f, RefreshTime);
|
refreshImg.SetSprite("BlackBtn");
|
refreshText.text = Language.Get("FriendsPlayer101", 5);
|
refreshBtn.interactable = false;
|
refreshText.color = greyColor;
|
}
|
|
private void ClickSearchBtn()
|
{
|
isAddFriend = false;
|
if (!string.IsNullOrEmpty(inputField.text.Trim()))
|
{
|
friendsModel.SendSearchPlayerQuest(inputField.text.Trim());
|
}
|
else
|
{
|
ServerTipDetails.DisplayNormalTip(Language.Get("Friend106"));
|
}
|
}
|
|
private void ClickBackBtn()
|
{
|
isAddFriend = true;
|
friendsModel.OnSendCA9A3_tagCGQueryRecommendFriends();
|
}
|
|
}
|
|
|
}
|