//-------------------------------------------------------- 
 | 
//    [Author]:           第二世界 
 | 
//    [  Date ]:           Thursday, September 14, 2017 
 | 
//-------------------------------------------------------- 
 | 
  
 | 
using System; 
 | 
using System.Collections; 
 | 
using System.Collections.Generic; 
 | 
using UnityEngine; 
 | 
using UnityEngine.UI; 
 | 
  
 | 
  
 | 
namespace vnxbqy.UI 
 | 
{ 
 | 
  
 | 
    public class FriendQuestWin : Window, SecondWindowInterface 
 | 
    { 
 | 
  
 | 
        #region 成员变量 
 | 
        private Button _allDisagreeBtn; 
 | 
        private Button _allAgreeBtn; 
 | 
        private ScrollerController _friendQuestCtrl; 
 | 
        #endregion 
 | 
  
 | 
        private Dictionary<uint, FriendPlayer> _friendQuestDict; 
 | 
  
 | 
        FriendsModel _friendsModel; 
 | 
        FriendsModel friendsModel { 
 | 
            get { 
 | 
                return _friendsModel ?? (_friendsModel = ModelCenter.Instance.GetModel<FriendsModel>()); 
 | 
            } 
 | 
        } 
 | 
  
 | 
        private int selectID = 0; 
 | 
  
 | 
        #region Built-in 
 | 
  
 | 
        public Button close { get; set; } 
 | 
  
 | 
        protected override void BindController() 
 | 
        { 
 | 
            if (this is SecondWindowInterface) 
 | 
            { 
 | 
                var frame = this.GetComponentInChildren<SecondFrameLoader>(); 
 | 
                frame.Create(); 
 | 
                close = frame.GetComponentInChildren<Button>(); 
 | 
            } 
 | 
            _allDisagreeBtn = transform.Find("NoBtn").GetComponent<Button>(); 
 | 
            _allAgreeBtn = transform.Find("YesBtn").GetComponent<Button>(); 
 | 
            _friendQuestCtrl = transform.Find("QuestCtrl").GetComponent<ScrollerController>(); 
 | 
            _friendQuestCtrl.lockType = EnhanceLockType.KeepVertical; 
 | 
        } 
 | 
  
 | 
        protected override void AddListeners() 
 | 
        { 
 | 
            _allDisagreeBtn.onClick.AddListener(() => { OnClickAllDisAgreeBtn(); }); 
 | 
            _allAgreeBtn.onClick.AddListener(() => { OnClickAllAgreeBtn(); }); 
 | 
            close.onClick.AddListener(OnClickCloseBtn); 
 | 
        } 
 | 
  
 | 
        protected override void OnPreOpen() 
 | 
        { 
 | 
            selectID = 0; 
 | 
            _friendQuestCtrl.OnRefreshCell += RefreshFriendQuestCell; 
 | 
            RefreshFriendQuest(); 
 | 
  
 | 
        } 
 | 
  
 | 
        protected override void OnAfterOpen() 
 | 
        { 
 | 
  
 | 
        } 
 | 
  
 | 
        protected override void OnPreClose() 
 | 
        { 
 | 
        } 
 | 
  
 | 
        protected override void OnAfterClose() 
 | 
        { 
 | 
            _friendQuestCtrl.OnRefreshCell -= RefreshFriendQuestCell; 
 | 
        } 
 | 
        #endregion 
 | 
  
 | 
        public void RefreshFriendQuest() 
 | 
        { 
 | 
            _friendQuestCtrl.Refresh(); 
 | 
            _friendQuestDict = friendsModel.GetFriendQuestDict(); 
 | 
            foreach (int friendId in _friendQuestDict.Keys) 
 | 
            { 
 | 
                _friendQuestCtrl.AddCell(ScrollerDataType.Header, friendId); 
 | 
            } 
 | 
            _friendQuestCtrl.Restart(); 
 | 
            if (_friendQuestDict.Count < 1) 
 | 
            { 
 | 
                Close(); 
 | 
            } 
 | 
  
 | 
        } 
 | 
  
 | 
        private void RefreshFriendQuestCell(ScrollerDataType type, CellView cell) 
 | 
        { 
 | 
  
 | 
            FriendPlayer friendInfo = _friendQuestDict[(uint)cell.index]; 
 | 
            Text friendName = cell.transform.Find("NameText").GetComponent<Text>(); 
 | 
            friendName.text = friendInfo.PlayerName; 
 | 
            Text friendLv = cell.transform.Find("Container_LV/LvText").GetComponent<Text>(); 
 | 
            Image friendLvIcon = cell.transform.Find("Container_LV/LvBG").GetComponent<Image>(); 
 | 
            Button agreeBtn = cell.transform.Find("agreeBtn").GetComponent<Button>(); 
 | 
            Button cellBtn = cell.GetComponent<Button>(); 
 | 
            Button disagreeBtn = cell.transform.Find("disagreeBtn").GetComponent<Button>(); 
 | 
            GameObject selectImg = cell.transform.Find("SelectedImage").gameObject; 
 | 
            Image realmImg = cell.transform.Find("RealmImage").GetComponent<Image>(); 
 | 
            DebugEx.Log("境界:" + friendInfo.RealmLV); 
 | 
            RealmConfig realmConfig = RealmConfig.Get(friendInfo.RealmLV); 
 | 
            if (friendInfo.RealmLV > 0 && RealmConfig.Has(friendInfo.RealmLV)) 
 | 
            { 
 | 
                realmImg.SetActive(true); 
 | 
                realmImg.SetSprite(realmConfig.Img); 
 | 
            } 
 | 
            else 
 | 
            { 
 | 
                realmImg.SetActive(false); 
 | 
            } 
 | 
  
 | 
            int nirvanaLv = friendInfo.LV - friendsModel.OpenGreatLV; 
 | 
            if (nirvanaLv > 0) 
 | 
            { 
 | 
                friendLvIcon.SetActive(true); 
 | 
                friendLv.text = nirvanaLv.ToString(); 
 | 
            } 
 | 
            else 
 | 
            { 
 | 
                friendLvIcon.SetActive(false); 
 | 
                friendLv.text = friendInfo.LV.ToString(); 
 | 
            } 
 | 
  
 | 
            if (cell.index == selectID) 
 | 
            { 
 | 
                selectImg.SetActive(true); 
 | 
            } 
 | 
            else 
 | 
            { 
 | 
                selectImg.SetActive(false); 
 | 
            } 
 | 
  
 | 
            agreeBtn.onClick.RemoveAllListeners(); 
 | 
            disagreeBtn.onClick.RemoveAllListeners(); 
 | 
            agreeBtn.onClick.AddListener(() => { OnClickAgreeBtn(friendInfo); }); 
 | 
            disagreeBtn.onClick.AddListener(() => { OnClickDisAgreeBtn(friendInfo); }); 
 | 
            cellBtn.RemoveAllListeners(); 
 | 
            cellBtn.AddListener(() => { ClickFriendCell(cell.index); }); 
 | 
        } 
 | 
  
 | 
        private void ClickFriendCell(int friendID) 
 | 
        { 
 | 
            DebugEx.Log("ClickFriendCell:" + friendID); 
 | 
            selectID = friendID; 
 | 
            RefreshFriendQuest(); 
 | 
        } 
 | 
  
 | 
        #region 按钮事件 
 | 
  
 | 
        private void OnClickDisAgreeBtn(FriendPlayer friendInfo) 
 | 
        { 
 | 
            CB303_tagCGJoinFriendAnswer answer = new CB303_tagCGJoinFriendAnswer(); 
 | 
            answer.TagID = friendInfo.PlayerID; 
 | 
            answer.Answer = 0; 
 | 
            GameNetSystem.Instance.SendInfo(answer); 
 | 
            friendsModel.DeleteFriendQuest(friendInfo.PlayerID); 
 | 
            RefreshFriendQuest(); 
 | 
        } 
 | 
  
 | 
        private void OnClickAgreeBtn(FriendPlayer friendInfo) 
 | 
        { 
 | 
  
 | 
            CB303_tagCGJoinFriendAnswer answer = new CB303_tagCGJoinFriendAnswer(); 
 | 
            answer.TagID = friendInfo.PlayerID; 
 | 
            answer.Answer = 1; 
 | 
            GameNetSystem.Instance.SendInfo(answer); 
 | 
            Debug.Log("ID" + friendInfo.PlayerID + "answer" + answer.Answer); 
 | 
            friendsModel.DeleteFriendQuest(friendInfo.PlayerID); 
 | 
            RefreshFriendQuest(); 
 | 
        } 
 | 
  
 | 
        private void OnClickAllAgreeBtn() 
 | 
        { 
 | 
            foreach (var key in _friendQuestDict.Keys) 
 | 
            { 
 | 
                CB303_tagCGJoinFriendAnswer answer = new CB303_tagCGJoinFriendAnswer(); 
 | 
                answer.TagID = key; 
 | 
                answer.Answer = 1; 
 | 
                GameNetSystem.Instance.SendInfo(answer); 
 | 
            } 
 | 
            friendsModel.DeleteAllFriendQuest(); 
 | 
            Close(); 
 | 
  
 | 
        } 
 | 
  
 | 
        private void OnClickAllDisAgreeBtn() 
 | 
        { 
 | 
            foreach (var key in _friendQuestDict.Keys) 
 | 
            { 
 | 
                CB303_tagCGJoinFriendAnswer answer = new CB303_tagCGJoinFriendAnswer(); 
 | 
                answer.TagID = key; 
 | 
                answer.Answer = 0; 
 | 
                GameNetSystem.Instance.SendInfo(answer); 
 | 
            } 
 | 
            friendsModel.DeleteAllFriendQuest(); 
 | 
            Close(); 
 | 
        } 
 | 
        #endregion 
 | 
  
 | 
        private void OnClickCloseBtn() 
 | 
        { 
 | 
            Close(); 
 | 
        } 
 | 
    } 
 | 
  
 | 
} 
 |