public bool ProcessAllyAgreeCmd(GameClient client, int nID, byte[] bytes, string[] cmdParams) { try { bool isCheck = CheckHelper.CheckCmdLength(client, nID, cmdParams, 2); if (!isCheck) { return(false); } int unionID = Convert.ToInt32(cmdParams[0]); EAllyOperate operateType = (EAllyOperate)Convert.ToInt32(cmdParams[1]); EAlly state = AllyOperate(client, unionID, operateType); client.sendCmd(nID, ((int)state).ToString()); return(true); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, Global.GetDebugHelperInfo(client.ClientSocket), false); } return(false); }
private EAlly AllyOperate(GameClient client, int targetID, EAllyOperate operateType) { EAlly result2; if (targetID <= 0) { result2 = EAlly.ENoTargetUnion; } else { int unionID = client.ClientData.Faction; if (unionID <= 0) { result2 = EAlly.EUnionJoin; } else { BangHuiDetailData myUnion = Global.GetBangHuiDetailData(-1, unionID, client.ServerId); if (myUnion == null) { result2 = EAlly.EUnionJoin; } else if (!this.IsAllyOpen(myUnion.QiLevel)) { result2 = EAlly.EUnionLevel; } else if (myUnion.BZRoleID != client.ClientData.RoleID) { result2 = EAlly.ENotLeader; } else { int countSum = 0; if (operateType == EAllyOperate.Agree) { int countAlly = AllyClient.getInstance().AllyCount(unionID); int countRequest = AllyClient.getInstance().AllyRequestCount(unionID); if (countAlly > 0 && this.IsAllyMax(countAlly)) { return(EAlly.EAllyMax); } countSum = countAlly + countRequest; if (countSum > 0 && this.IsAllyMax(countSum)) { return(EAlly.EAllyMax); } } EAlly result = AllyClient.getInstance().HAllyOperate(unionID, targetID, operateType); if (result == EAlly.AllyAgree) { client.sendCmd(1048, (countSum + 1).ToString(), false); } result2 = result; } } } return(result2); }
private EAlly AllyOperate(GameClient client, int targetID, EAllyOperate operateType) { if (targetID <= 0) { return(EAlly.ENoTargetUnion); } int unionID = client.ClientData.Faction; if (unionID <= 0) { return(EAlly.EUnionJoin); } BangHuiDetailData myUnion = Global.GetBangHuiDetailData(-1, unionID, client.ServerId); if (myUnion == null) { return(EAlly.EUnionJoin); } if (!IsAllyOpen(myUnion.QiLevel)) { return(EAlly.EUnionLevel); } if (myUnion.BZRoleID != client.ClientData.RoleID) { return(EAlly.ENotLeader); } int countSum = 0; if (operateType == EAllyOperate.Agree) { int countAlly = AllyClient.getInstance().AllyCount(unionID); int countRequest = AllyClient.getInstance().AllyRequestCount(unionID); if (countAlly > 0 && IsAllyMax(countAlly)) { return(EAlly.EAllyMax); } countSum = countAlly + countRequest; if (countSum > 0 && IsAllyMax(countSum)) { return(EAlly.EAllyMax); } } EAlly result = (EAlly)AllyClient.getInstance().HAllyOperate(unionID, targetID, operateType); if (result == EAlly.AllyAgree) { countSum++; client.sendCmd((int)TCPGameServerCmds.CMD_SPR_UNION_ALLY_NUM, countSum.ToString()); } return(result); }
public EAlly HAllyOperate(int unionID, int targetID, EAllyOperate operateType) { EAlly result = EAlly.EFail; try { lock (_Mutex) { if (!VersionIsEqual()) { _unionDic.Clear(); _allyDic.Clear(); _requestDic.Clear(); _acceptDic.Clear(); _CoreInterface.GetEventSourceInterface().fireEvent(new KFNotifyAllyStartGameEvent(), (int)_sceneType); return(result); } ConcurrentDictionary <int, List <AllyData> > dic = null; switch (operateType) { case EAllyOperate.Agree: case EAllyOperate.Refuse: dic = _acceptDic; break; case EAllyOperate.Cancel: dic = _requestDic; break; case EAllyOperate.Remove: dic = _allyDic; break; } List <AllyData> list = null; if (!dic.TryGetValue(unionID, out list)) { return(EAlly.ENoTargetUnion); } AllyData targetData = dic[unionID].Find( delegate(AllyData data) { return(data.UnionID == targetID); }); if (targetData == null) { return(EAlly.ENoTargetUnion); } IAllyService kuaFuService = GetKuaFuService(); if (null == kuaFuService) { return(EAlly.EServer); } try { result = (EAlly)kuaFuService.AllyOperate(_ClientInfo.ServerId, unionID, targetID, (int)operateType); if (result == EAlly.AllyAgree || result == EAlly.AllyRefuse || result == EAlly.AllyCancelSucc || result == EAlly.AllyRemoveSucc) { dic[unionID].Remove(targetData); } } catch (System.Exception ex) { ResetKuaFuService(); } } } catch (System.Exception ex) { LogManager.WriteExceptionUseCache(ex.ToString()); } return(result); }