using UnityEngine; using FairyGUI; using UI.Friend; using System.Collections.Generic; namespace GFGGame { public class FriendAddView : BaseWindow { private UI_FriendAddUI _ui; private List _searchDatas = new List(); public override void Dispose() { if (_ui != null) { _ui.Dispose(); _ui = null; } base.Dispose(); } protected override void Init() { base.Init(); packageName = UI_FriendAddUI.PACKAGE_NAME; _ui = UI_FriendAddUI.Create(); this.viewCom = _ui.target; this.viewCom.Center(); this.modal = true; viewAnimationType = EnumViewAnimationType.ZOOM_CENTER; _ui.m_listSearch.itemRenderer = RenderListSearchItem; _ui.m_btnSearch.onClick.Add(OnBtnSearchClick); _ui.m_btnClear.onClick.Add(OnBtnClearClick); _ui.m_btnRefresh.onClick.Add(OnBtnRefreshClick); _ui.m_listApply.itemRenderer = RenderListApplyItem; _ui.m_btnAgreeAll.onClick.Add(OnBtnAgreeAllClick); _ui.m_btnRefuseAll.onClick.Add(OnBtnRefuseAllClick); } protected override void OnInit() { base.OnInit(); // _ui.m_c1.onChanged.Add(OnCtrlChange); } protected override void AddEventListener() { base.AddEventListener(); EventAgent.AddEventListener(ConstMessage.FRIEND_APPLY_CHANGE, UpdateApplyList); EventAgent.AddEventListener(ConstMessage.FRIEND_ADD, UpdateApplyList); EventAgent.AddEventListener(ConstMessage.RED_CHANGE, UpdateRedDot); } protected override void OnShown() { base.OnShown(); _ui.m_c1.selectedIndex = 0; _ui.m_txtSearch.text = ""; _ui.m_btnClear.visible = false; OnBtnRefreshClick(); UpdateApplyList(); UpdateRedDot(); } protected override void OnHide() { base.OnHide(); } protected override void RemoveEventListener() { base.RemoveEventListener(); EventAgent.RemoveEventListener(ConstMessage.FRIEND_APPLY_CHANGE, UpdateApplyList); EventAgent.RemoveEventListener(ConstMessage.FRIEND_ADD, UpdateApplyList); EventAgent.RemoveEventListener(ConstMessage.RED_CHANGE, UpdateRedDot); } /**************************************************好友搜索***********************************************/ private void RenderListSearchItem(int index, GObject obj) { OtherRoleInfoData roleInfoData = _searchDatas[index]; UI_ListSearchItem item = UI_ListSearchItem.Proxy(obj); item.m_txtName.text = roleInfoData.roleName; item.m_txtLvl.text = roleInfoData.roleLv.ToString(); item.m_c1.selectedIndex = 0; item.m_c2.selectedIndex = roleInfoData.offlineTimeSec == 0 ? 0 : 1; if (item.m_btnAdd.data == null) { item.m_btnAdd.onClick.Add(OnBtnAddClick); } item.m_btnAdd.data = roleInfoData.roleId; UI_ListSearchItem.ProxyEnd(); } //添加好友 private async void OnBtnAddClick(EventContext context) { GObject obj = context.sender as GObject; long roleId = (long)obj.data; bool result = await FriendSProxy.ReqApplyForFriend(roleId); if (result) { UI_ListSearchItem item = UI_ListSearchItem.Proxy(obj.parent); item.m_c1.selectedIndex = 1; UI_ListSearchItem.ProxyEnd(); } } //搜索好友 private async void OnBtnSearchClick() { if (_ui.m_txtSearch.text.Length == 0) { PromptController.Instance.ShowFloatTextPrompt("查无此人"); return; } if (_ui.m_txtSearch.text.Length < 2) { PromptController.Instance.ShowFloatTextPrompt("请输入至少两个字符"); return; } bool result = await FriendSProxy.ReqSearchRole(_ui.m_txtSearch.text); if (result) { _ui.m_txtTips.text = "搜索结果"; _ui.m_btnClear.visible = true; _searchDatas = FriendDataManager.Instance.SearchDatas; _ui.m_listSearch.numItems = _searchDatas.Count; if (_searchDatas.Count == 0) { PromptController.Instance.ShowFloatTextPrompt("查无此人"); return; } } } //清空搜索 private void OnBtnClearClick() { _ui.m_txtSearch.text = ""; _ui.m_btnClear.visible = false; OnBtnRefreshClick(); } //刷新好友列表 private async void OnBtnRefreshClick() { _ui.m_txtTips.text = "推荐好友"; _ui.m_listSearch.numItems = 0; bool result = await FriendSProxy.ReqRecommendFriends(); if (result) { _searchDatas = FriendDataManager.Instance.RecommendDatas; _ui.m_listSearch.numItems = _searchDatas.Count; } } /**************************************************好友申请***********************************************/ private void UpdateApplyList() { _ui.m_listApply.numItems = FriendDataManager.Instance.ApplyDatas.Count; } private void RenderListApplyItem(int index, GObject obj) { FriendInfoData data = FriendDataManager.Instance.ApplyDatas[index]; UI_ListApplyItem item = UI_ListApplyItem.Proxy(obj); item.m_txtName.text = data.roleInfo.roleName; item.m_txtLvl.text = data.roleInfo.roleLv.ToString(); if (item.m_btnAgree.data == null) { item.m_btnAgree.onClick.Add(OnBtnAgreeClick); } item.m_btnAgree.data = data.roleInfo.roleId; if (item.m_btnRefuse.data == null) { item.m_btnRefuse.onClick.Add(OnBtnRefuseClick); } item.m_btnRefuse.data = data.roleInfo.roleId; UI_ListApplyItem.ProxyEnd(); } //通过好友申请 private async void OnBtnAgreeClick(EventContext context) { GObject obj = context.sender as GObject; long roleId = (long)obj.data; bool result = await FriendSProxy.ReqAcceptApplyForFriend(roleId); if (result) { _ui.m_listApply.numItems = FriendDataManager.Instance.ApplyDatas.Count; } } //拒绝好友申请 private async void OnBtnRefuseClick(EventContext context) { GObject obj = context.sender as GObject; long roleId = (long)obj.data; bool result = await FriendSProxy.ReqRefuseApplyForFriend(roleId); if (result) { _ui.m_listApply.numItems = FriendDataManager.Instance.ApplyDatas.Count; } } //一键通过好友申请 private void OnBtnAgreeAllClick() { if (FriendDataManager.Instance.ApplyDatas.Count == 0) return; FriendSProxy.ReqAcceptAllApplyForFriend().Coroutine(); } //一键拒绝好友申请 private void OnBtnRefuseAllClick() { if (FriendDataManager.Instance.ApplyDatas.Count == 0) return; AlertUI.Show("是否拒绝所有好友申请?").SetLeftButton(true).SetRightButton(true, "确定", async (object data) => { bool result = await FriendSProxy.ReqRefuseAllApplyForFriend(); if (result) { _ui.m_listApply.numItems = 0; } }); } private void UpdateRedDot() { RedDotController.Instance.SetComRedDot(_ui.m_btnTabApply, RedDotDataManager.Instance.GetFriendApplyRed()); } } }