private List <AllyData> GetAllyData(GameClient client, EAllyDataType dataType) { List <AllyData> resultList = new List <AllyData>(); int unionID = client.ClientData.Faction; List <AllyData> result; if (unionID <= 0) { result = resultList; } else { BangHuiDetailData unionData = Global.GetBangHuiDetailData(-1, unionID, client.ServerId); if (unionData == null || !this.IsAllyOpen(unionData.QiLevel)) { result = resultList; } else { switch (dataType) { case EAllyDataType.Ally: { List <AllyData> list = AllyClient.getInstance().HAllyDataList(unionID, EAllyDataType.Ally); if (list != null && list.Count > 0) { resultList.AddRange(list); } list = AllyClient.getInstance().HAllyDataList(unionID, EAllyDataType.Request); if (list != null && list.Count > 0) { resultList.AddRange(list); } break; } case EAllyDataType.Accept: { List <AllyData> list = AllyClient.getInstance().HAllyDataList(unionID, EAllyDataType.Accept); if (list != null && list.Count > 0) { resultList.AddRange(list); } client.AllyTip[0] = 0; if (client.AllyTip[1] <= 0) { client._IconStateMgr.AddFlushIconState(14111, false); } client._IconStateMgr.AddFlushIconState(14112, false); client._IconStateMgr.SendIconStateToClient(client); break; } } result = resultList; } } return(result); }
public List <AllyData> HAllyDataList(int unionID, EAllyDataType type) { List <AllyData> list = new List <AllyData>(); lock (_Mutex) { ConcurrentDictionary <int, List <AllyData> > dic = null; switch (type) { case EAllyDataType.Ally: dic = _allyDic; break; case EAllyDataType.Request: dic = _requestDic; break; case EAllyDataType.Accept: dic = _acceptDic; break; } if (dic.TryGetValue(unionID, out list)) { return(list); } IAllyService kuaFuService = GetKuaFuService(); if (null == kuaFuService) { return(list); } try { list = kuaFuService.AllyDataList(_ClientInfo.ServerId, unionID, (int)type); if (list != null) { dic.TryAdd(unionID, list); } } catch (System.Exception ex) { ResetKuaFuService(); } } return(list); }
public bool ProcessAllyDataCmd(GameClient client, int nID, byte[] bytes, string[] cmdParams) { try { if (!CheckHelper.CheckCmdLength(client, nID, cmdParams, 1)) { return(false); } EAllyDataType dataType = (EAllyDataType)Convert.ToInt32(cmdParams[0]); List <AllyData> data = this.GetAllyData(client, dataType); client.sendCmd <List <AllyData> >(nID, data, false); return(true); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, Global.GetDebugHelperInfo(client.ClientSocket), false, false); } return(false); }