using System.Collections.Generic; using System.Linq; using ET; namespace GFGGame { public class FriendDataManager : SingletonBase { public void Clear() { ClearAddFriend(); ClearRecommendDatas(); ClearSearchDatas(); ClearApplyDatas(); } public int Count//今日已领体力数 { get { return GameGlobal.myNumericComponent.GetAsInt(NumericType.TakeFriendGiftCount); } } private Dictionary _friendDic = new Dictionary();//好友列表 private List _list = new List(); public List FriendDatas { get { return _list; } } public void ClearAddFriend() { _list.Clear(); _friendDic.Clear(); } public void AddFriend(FriendInfoData roleInfo) { if (_friendDic.ContainsKey(roleInfo.roleInfo.roleId)) return; _friendDic.Add(roleInfo.roleInfo.roleId, roleInfo); UpdateFriendList(true); } public void RemoveFriend(long roleId) { if (_friendDic.ContainsKey(roleId)) { _friendDic.Remove(roleId); UpdateFriendList(true); } } public FriendInfoData GetFriendDataById(long roleId) { if (_friendDic.ContainsKey(roleId)) { return _friendDic[roleId]; } return null; } public void ChangeFriendInfo(OtherRoleInfoData roleInfo) { if (_friendDic.ContainsKey(roleInfo.roleId)) { _friendDic[roleInfo.roleId].roleInfo = roleInfo; } } public void ChangeGiveGiftStates(long roleId, int state) { if (_friendDic.ContainsKey(roleId)) { _friendDic[roleId].giveGiftState = state; } } public void ChangeTakeGiftStates(long roleId, int state) { if (_friendDic.ContainsKey(roleId)) { _friendDic[roleId].takeGiftState = state; } } public void ChangeGiveTakeGiftStates(long roleId, int state, int takeState) { if (_friendDic.ContainsKey(roleId)) { _friendDic[roleId].giveGiftState = state; _friendDic[roleId].takeGiftState = takeState; } } public void UpdateFriendList(bool sort) { _list = _friendDic.Values.ToList(); if (!sort) return; _list.Sort((FriendInfoData a, FriendInfoData b) => { long count = b.roleInfo.offlineTimeSec - a.roleInfo.offlineTimeSec; if (count > 0) { return -1; } else { return 1; } }); } private List _recommendDatas = new List();//推荐列表 public List RecommendDatas { get { return _recommendDatas; } } public void AddRecommendData(OtherRoleInfoData recommendData) { _recommendDatas.Add(recommendData); } public void ClearRecommendDatas() { _recommendDatas.Clear(); } private List _searchDatas = new List();//搜索列表 public List SearchDatas { get { return _searchDatas; } } public void AddSearchData(OtherRoleInfoData searchData) { _searchDatas.Add(searchData); } public void ClearSearchDatas() { _searchDatas.Clear(); } private List _applyDatas = new List();//申请添加好友列表 public List ApplyDatas { get { return _applyDatas; } } public void AddApplyData(FriendInfoData applyData) { _applyDatas.Add(applyData); } public void RemoveApplyData(long roleId) { for (int i = _applyDatas.Count - 1; i >= 0; i--) { if (roleId == _applyDatas[i].roleInfo.roleId) { _applyDatas.RemoveAt(i); } } } public void ClearApplyDatas() { _applyDatas.Clear(); } public int GetGiftState(long roleId) { FriendInfoData friendInfo = _friendDic[roleId]; if (friendInfo.takeGiftState == ConstBonusStatus.CAN_GET) { return 0; } if (friendInfo.giveGiftState == (int)ConstGiveGiftStatus.CanGave) { return 1; } if (friendInfo.giveGiftState == (int)ConstGiveGiftStatus.Gave && friendInfo.takeGiftState != ConstBonusStatus.GOT) { return 2; } return 3; } } }