using System; using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class AddFriendWin : Window { [SerializeField] ScrollerController addCtrl; [SerializeField] Button refreshBtn; [SerializeField] Image refreshImg; [SerializeField] Text refreshText; [SerializeField] InputField inputField; [SerializeField] Button searchBtn; [SerializeField] Button closeBtn; [SerializeField] GameObject addplayerObj; [SerializeField] GameObject lookPlayerObj; [SerializeField] Button backBtn1; [SerializeField] Button backBtn2; [SerializeField] Button backBtn3; [SerializeField] GameObject noRecommedPlayer; FriendsModel _friendsModel; FriendsModel friendsModel { get { return _friendsModel ?? (_friendsModel = ModelCenter.Instance.GetModel()); } } Color32 brightColor = new Color32(51, 8, 0, 255); Color32 greyColor = new Color32(247, 247, 247, 255); List recommendIdlist = null; bool isAddFriend = true; protected override void BindController() { addCtrl.OnRefreshCell += RefreshAddCell; } protected override void AddListeners() { closeBtn.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(); 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 { MessageWin.Inst.ShowFixedTip(Language.Get("Friend106")); } } private void ClickBackBtn() { isAddFriend = true; friendsModel.OnSendCA9A3_tagCGQueryRecommendFriends(); } } }