private void AddJoinData(int channel, CoupleArenaJoinData joinData) { if (joinData != null) { this.GetJoinDataList(channel).Add(joinData); } }
public CoupleArenaJoinData Create() { CoupleArenaJoinData joinData = new CoupleArenaJoinData(); joinData.JoinSeq = this.CurrJoinSeq; this.CurrJoinSeq += 1U; return(joinData); }
private void AddJoinData(int channel, CoupleArenaJoinData joinData) { if (joinData == null) { return; } GetJoinDataList(channel).Add(joinData); }
public CoupleArenaJoinData Create() { CoupleArenaJoinData joinData = new CoupleArenaJoinData(); joinData.JoinSeq = CurrJoinSeq; CurrJoinSeq++; return(joinData); }
public void AddJoinData(CoupleArenaJoinData joinData) { if (joinData != null) { this.JoinDataDict.Add(joinData.JoinSeq, joinData); this.RoleJoinSeqDict[joinData.RoleId1] = joinData.JoinSeq; this.RoleJoinSeqDict[joinData.RoleId2] = joinData.JoinSeq; } }
public void DelJoinData(CoupleArenaJoinData joinData) { if (joinData != null) { if (this.JoinDataDict.Remove(joinData.JoinSeq)) { this.RoleJoinSeqDict.Remove(joinData.RoleId1); this.RoleJoinSeqDict.Remove(joinData.RoleId2); } } }
/// <summary> /// 跨服竞技匹配 /// </summary> /// <param name="req"></param> /// <returns></returns> public int CoupleArenaJoin(int roleId1, int roleId2, int serverId) { lock (Mutex) { // 此处严格的判断夫妻是否有效 if (!IsValidCoupleIfExist(roleId1, roleId2)) { return(StdErrorCode.Error_Server_Internal_Error); } if (JoinDataUtil.GetJoinData(roleId1) != null || JoinDataUtil.GetJoinData(roleId2) != null) { return(StdErrorCode.Error_Operation_Denied); } CoupleArenaJoinData joinData = JoinDataUtil.Create(); joinData.ServerId = serverId; joinData.RoleId1 = roleId1; joinData.RoleId2 = roleId2; joinData.StartTime = TimeUtil.NowDateTime(); CoupleArenaCoupleDataK coupleData1; if (SyncData.RoleDict.TryGetValue(roleId1, out coupleData1)) { joinData.DuanWeiLevel = coupleData1.DuanWeiLevel; joinData.DuanWeiType = coupleData1.DuanWeiType; } else { // 夫妻二人首次参加 joinData.DuanWeiLevel = _DuanWeiCfgList[0].DuanWeiLevel; joinData.DuanWeiType = _DuanWeiCfgList[0].DuanWeiType; } JoinDataUtil.AddJoinData(joinData); return(StdErrorCode.Error_Success); } }
public int CoupleArenaJoin(int roleId1, int roleId2, int serverId) { int result; lock (this.Mutex) { if (!this.IsValidCoupleIfExist(roleId1, roleId2)) { result = -11003; } else if (this.JoinDataUtil.GetJoinData(roleId1) != null || this.JoinDataUtil.GetJoinData(roleId2) != null) { result = -12; } else { CoupleArenaJoinData joinData = this.JoinDataUtil.Create(); joinData.ServerId = serverId; joinData.RoleId1 = roleId1; joinData.RoleId2 = roleId2; joinData.StartTime = TimeUtil.NowDateTime(); CoupleArenaCoupleDataK coupleData; if (this.SyncData.RoleDict.TryGetValue(roleId1, out coupleData)) { joinData.DuanWeiLevel = coupleData.DuanWeiLevel; joinData.DuanWeiType = coupleData.DuanWeiType; } else { joinData.DuanWeiLevel = this._DuanWeiCfgList[0].DuanWeiLevel; joinData.DuanWeiType = this._DuanWeiCfgList[0].DuanWeiType; } this.JoinDataUtil.AddJoinData(joinData); result = 1; } } return(result); }
public void AddGlobalJoinData(CoupleArenaJoinData joinData) { AddJoinData(GlobalChannel, joinData); }
public void AddJoinData(int duanweiType, int duanWeiLevel, CoupleArenaJoinData joinData) { AddJoinData(MakeChannel(duanweiType, duanWeiLevel), joinData); }
public void AddGlobalJoinData(CoupleArenaJoinData joinData) { this.AddJoinData(this.GlobalChannel, joinData); }
private void CheckRoleMatch(DateTime now) { lock (this.Mutex) { List <CoupleArenaJoinData> joinDatas = this.JoinDataUtil.GetJoinList(); if (joinDatas != null && joinDatas.Count > 0) { CoupleArenaJoinMatcher joinMatcher = new CoupleArenaJoinMatcher(); foreach (CoupleArenaJoinData joinData in joinDatas) { if ((now - joinData.StartTime).TotalSeconds >= 60.0 || joinData.ToKfServerId > 0) { this.JoinDataUtil.DelJoinData(joinData); } else if ((now - joinData.StartTime).TotalSeconds >= 30.0) { joinMatcher.AddGlobalJoinData(joinData); } else { joinMatcher.AddJoinData(joinData.DuanWeiType, joinData.DuanWeiLevel, joinData); } } foreach (List <CoupleArenaJoinData> list in joinMatcher.GetAllMatch()) { int i = 0; while (i < list.Count - 1) { CoupleArenaJoinData one = list[i]; CoupleArenaJoinData two = list[i + 1]; if (this.MatchTimeLimiter.GetMatchTimes(one.RoleId1, one.RoleId2, two.RoleId1, two.RoleId2) >= TianTiPersistence.Instance.MaxRolePairFightCount) { i++; } else { CoupleArenaFuBenData fubenData = new CoupleArenaFuBenData(); fubenData.GameId = this.Persistence.GetNextGameId(); fubenData.StartTime = now; fubenData.RoleList = new List <KuaFuFuBenRoleData>(); fubenData.RoleList.Add(new KuaFuFuBenRoleData { ServerId = one.ServerId, RoleId = one.RoleId1, Side = 1 }); fubenData.RoleList.Add(new KuaFuFuBenRoleData { ServerId = one.ServerId, RoleId = one.RoleId2, Side = 1 }); fubenData.RoleList.Add(new KuaFuFuBenRoleData { ServerId = two.ServerId, RoleId = two.RoleId1, Side = 2 }); fubenData.RoleList.Add(new KuaFuFuBenRoleData { ServerId = two.ServerId, RoleId = two.RoleId2, Side = 2 }); if (!ClientAgentManager.Instance().AssginKfFuben(this.GameType, fubenData.GameId, 4, out fubenData.KfServerId)) { LogManager.WriteLog(LogTypes.Error, "CoupleArena 没有跨服可以分配", null, true); return; } this.MatchTimeLimiter.AddMatchTimes(one.RoleId1, one.RoleId2, two.RoleId1, two.RoleId2, 1); this.GameFuBenDict[fubenData.GameId] = fubenData; i += 2; one.ToKfServerId = fubenData.KfServerId; two.ToKfServerId = fubenData.KfServerId; CoupleArenaCanEnterData enterData = new CoupleArenaCanEnterData { GameId = fubenData.GameId, KfServerId = fubenData.KfServerId, RoleId1 = one.RoleId1, RoleId2 = one.RoleId2 }; ClientAgentManager.Instance().PostAsyncEvent(one.ServerId, this.EvItemGameType, new AsyncDataItem(KuaFuEventTypes.CoupleArenaCanEnter, new object[] { enterData })); CoupleArenaCanEnterData enterData2 = new CoupleArenaCanEnterData { GameId = fubenData.GameId, KfServerId = fubenData.KfServerId, RoleId1 = two.RoleId1, RoleId2 = two.RoleId2 }; AsyncDataItem evItem2 = new AsyncDataItem(KuaFuEventTypes.CoupleArenaCanEnter, new object[] { fubenData.GameId, fubenData.KfServerId, two.RoleId1, two.RoleId2 }); ClientAgentManager.Instance().PostAsyncEvent(two.ServerId, this.EvItemGameType, new AsyncDataItem(KuaFuEventTypes.CoupleArenaCanEnter, new object[] { enterData2 })); } } } } } }